summaryrefslogtreecommitdiff
path: root/gas/testsuite/gas/arm
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>1999-05-03 07:29:11 +0000
committerRichard Henderson <rth@redhat.com>1999-05-03 07:29:11 +0000
commit252b5132c753830d5fd56823373aed85f2a0db63 (patch)
tree1af963bfd8d3e55167b81def4207f175eaff3a56 /gas/testsuite/gas/arm
downloadbinutils-gdb-252b5132c753830d5fd56823373aed85f2a0db63.tar.gz
19990502 sourceware importbinu_ss_19990502
Diffstat (limited to 'gas/testsuite/gas/arm')
-rw-r--r--gas/testsuite/gas/arm/arch4t.s21
-rw-r--r--gas/testsuite/gas/arm/arm.exp34
-rw-r--r--gas/testsuite/gas/arm/arm3.s6
-rw-r--r--gas/testsuite/gas/arm/arm6.s12
-rw-r--r--gas/testsuite/gas/arm/arm7dm.s12
-rw-r--r--gas/testsuite/gas/arm/arm7t.d68
-rw-r--r--gas/testsuite/gas/arm/arm7t.s79
-rw-r--r--gas/testsuite/gas/arm/copro.s24
-rw-r--r--gas/testsuite/gas/arm/float.s162
-rw-r--r--gas/testsuite/gas/arm/immed.s11
-rw-r--r--gas/testsuite/gas/arm/inst.d168
-rw-r--r--gas/testsuite/gas/arm/inst.s189
-rw-r--r--gas/testsuite/gas/arm/le-fpconst.d8
-rw-r--r--gas/testsuite/gas/arm/le-fpconst.s8
-rw-r--r--gas/testsuite/gas/arm/thumb.s193
15 files changed, 995 insertions, 0 deletions
diff --git a/gas/testsuite/gas/arm/arch4t.s b/gas/testsuite/gas/arm/arch4t.s
new file mode 100644
index 00000000000..8d28f7f3ec1
--- /dev/null
+++ b/gas/testsuite/gas/arm/arch4t.s
@@ -0,0 +1,21 @@
+.text
+.align 0
+
+ bx r0
+ bxeq r1
+
+foo:
+ ldrh r3, foo
+ ldrsh r4, [r5]
+ ldrsb r4, [r1, r3]
+ ldrsh r1, [r4, r4]!
+ ldreqsb r1, [r5, -r3]
+ ldrneh r2, [r6], r7
+ ldrccsh r2, [r7], +r8
+ ldrsb r2, [r3, #255]
+ ldrsh r1, [r4, #-250]
+ ldrsb r1, [r5, #+240]
+
+ strh r2, bar
+ strneh r3, [r3]
+bar:
diff --git a/gas/testsuite/gas/arm/arm.exp b/gas/testsuite/gas/arm/arm.exp
new file mode 100644
index 00000000000..f21c54df310
--- /dev/null
+++ b/gas/testsuite/gas/arm/arm.exp
@@ -0,0 +1,34 @@
+#
+# Some ARM tests
+#
+if [istarget arm-*-*] then {
+ run_dump_test "inst"
+
+ gas_test "arm3.s" "" $stdoptlist "Arm 3 instructions"
+
+ gas_test "arm6.s" "" $stdoptlist "Arm 6 instructions"
+
+ gas_test "arm7dm.s" "" $stdoptlist "Arm 7DM instructions"
+
+ run_dump_test "arm7t"
+
+ gas_test "thumb.s" "" $stdoptlist "Thumb instructions"
+
+ gas_test "arch4t.s" "" $stdoptlist "Arm architecture 4t instructions"
+
+ gas_test "copro.s" "" $stdoptlist "Co processor instructions"
+
+ gas_test "immed.s" "" $stdoptlist "immediate expressions"
+
+ gas_test "float.s" "" $stdoptlist "Core floating point instructions"
+}
+
+# Not all arm targets are bi-endian, so only run this test on ones
+# we know that are. FIXME: We should probably also key off armeb/armel.
+
+if [istarget arm-*-pe] {
+ run_dump_test "le-fpconst"
+
+ # Since big-endian numbers have the normal format, this doesn't exist.
+ #run_dump_test "be-fpconst"
+}
diff --git a/gas/testsuite/gas/arm/arm3.s b/gas/testsuite/gas/arm/arm3.s
new file mode 100644
index 00000000000..ebcf915ccb1
--- /dev/null
+++ b/gas/testsuite/gas/arm/arm3.s
@@ -0,0 +1,6 @@
+.text
+.align 0
+ swp r0, r1, [r8]
+ swpb r2, r3, [r3]
+ swpgeb r4, r1, [r4]
+
diff --git a/gas/testsuite/gas/arm/arm6.s b/gas/testsuite/gas/arm/arm6.s
new file mode 100644
index 00000000000..4b517129c62
--- /dev/null
+++ b/gas/testsuite/gas/arm/arm6.s
@@ -0,0 +1,12 @@
+.text
+.align 0
+
+ mrs r8, cpsr
+ mrseq r9, cpsr_all
+ mrs r2, spsr
+
+ msr cpsr, r1
+ msrne cpsr_flg, #0xf0000000
+ msr spsr_flg, r8
+ msr spsr_all, r9
+
diff --git a/gas/testsuite/gas/arm/arm7dm.s b/gas/testsuite/gas/arm/arm7dm.s
new file mode 100644
index 00000000000..7496c70e987
--- /dev/null
+++ b/gas/testsuite/gas/arm/arm7dm.s
@@ -0,0 +1,12 @@
+.text
+.align 0
+
+ smull r0, r1, r2, r3
+ umull r0, r1, r2, r3
+ smlal r0, r1, r2, r3
+ umlal r0, r1, r4, r3
+
+ smullne r0, r1, r3, r4
+ smulls r1, r0, r9, r11
+ umlaleqs r2, r9, r4, r9
+ smlalge r14, r10, r8, r14
diff --git a/gas/testsuite/gas/arm/arm7t.d b/gas/testsuite/gas/arm/arm7t.d
new file mode 100644
index 00000000000..143a161cd29
--- /dev/null
+++ b/gas/testsuite/gas/arm/arm7t.d
@@ -0,0 +1,68 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: ARM arm7t
+#as: -marm7t -EL
+
+# Test the halfword and signextend memory transfers:
+
+.*: +file format .*arm.*
+
+Disassembly of section .text:
+00000000 <[^>]*> e1d100b0 ? ldrh r0, \[r1\]
+00000004 <[^>]*> e1f100b0 ? ldrh r0, \[r1\]!
+00000008 <[^>]*> e19100b2 ? ldrh r0, \[r1, r2\]
+0000000c <[^>]*> e1b100b2 ? ldrh r0, \[r1, r2\]!
+00000010 <[^>]*> e1d100bc ? ldrh r0, \[r1, #12\]
+00000014 <[^>]*> e1f100bc ? ldrh r0, \[r1, #12\]!
+00000018 <[^>]*> e15100bc ? ldrh r0, \[r1, -#12\]
+0000001c <[^>]*> e09100b2 ? ldrh r0, \[r1\], r2
+00000020 <[^>]*> e3a00cff ? mov r0, #65280
+00000024 <[^>]*> e1df0bb4 ? ldrh r0, 000000e0 <\$\$lit_1>
+00000028 <[^>]*> e1df0abc ? ldrh r0, 000000dc <.L2>
+0000002c <[^>]*> e1c100b0 ? strh r0, \[r1\]
+00000030 <[^>]*> e1e100b0 ? strh r0, \[r1\]!
+00000034 <[^>]*> e18100b2 ? strh r0, \[r1, r2\]
+00000038 <[^>]*> e1a100b2 ? strh r0, \[r1, r2\]!
+0000003c <[^>]*> e1c100bc ? strh r0, \[r1, #12\]
+00000040 <[^>]*> e1e100bc ? strh r0, \[r1, #12\]!
+00000044 <[^>]*> e14100bc ? strh r0, \[r1, -#12\]
+00000048 <[^>]*> e08100b2 ? strh r0, \[r1\], r2
+0000004c <[^>]*> e1cf08b8 ? strh r0, 000000dc <.L2>
+00000050 <[^>]*> e1d100d0 ? ldrsb r0, \[r1\]
+00000054 <[^>]*> e1f100d0 ? ldrsb r0, \[r1\]!
+00000058 <[^>]*> e19100d2 ? ldrsb r0, \[r1, r2\]
+0000005c <[^>]*> e1b100d2 ? ldrsb r0, \[r1, r2\]!
+00000060 <[^>]*> e1d100dc ? ldrsb r0, \[r1, #12\]
+00000064 <[^>]*> e1f100dc ? ldrsb r0, \[r1, #12\]!
+00000068 <[^>]*> e15100dc ? ldrsb r0, \[r1, -#12\]
+0000006c <[^>]*> e09100d2 ? ldrsb r0, \[r1\], r2
+00000070 <[^>]*> e3a000de ? mov r0, #222
+00000074 <[^>]*> e1df06d0 ? ldrsb r0, 000000dc <.L2>
+00000078 <[^>]*> e1d100f0 ? ldrsh r0, \[r1\]
+0000007c <[^>]*> e1f100f0 ? ldrsh r0, \[r1\]!
+00000080 <[^>]*> e19100f2 ? ldrsh r0, \[r1, r2\]
+00000084 <[^>]*> e1b100f2 ? ldrsh r0, \[r1, r2\]!
+00000088 <[^>]*> e1d100fc ? ldrsh r0, \[r1, #12\]
+0000008c <[^>]*> e1f100fc ? ldrsh r0, \[r1, #12\]!
+00000090 <[^>]*> e15100fc ? ldrsh r0, \[r1, -#12\]
+00000094 <[^>]*> e09100f2 ? ldrsh r0, \[r1\], r2
+00000098 <[^>]*> e3a00cff ? mov r0, #65280
+0000009c <[^>]*> e1df03fc ? ldrsh r0, 000000e0 <\$\$lit_1>
+000000a0 <[^>]*> e1df03f4 ? ldrsh r0, 000000dc <.L2>
+000000a4 <[^>]*> e19100b2 ? ldrh r0, \[r1, r2\]
+000000a8 <[^>]*> 119100b2 ? ldrneh r0, \[r1, r2\]
+000000ac <[^>]*> 819100b2 ? ldrhih r0, \[r1, r2\]
+000000b0 <[^>]*> b19100b2 ? ldrlth r0, \[r1, r2\]
+000000b4 <[^>]*> e19100f2 ? ldrsh r0, \[r1, r2\]
+000000b8 <[^>]*> 119100f2 ? ldrnesh r0, \[r1, r2\]
+000000bc <[^>]*> 819100f2 ? ldrhish r0, \[r1, r2\]
+000000c0 <[^>]*> b19100f2 ? ldrltsh r0, \[r1, r2\]
+000000c4 <[^>]*> e19100d2 ? ldrsb r0, \[r1, r2\]
+000000c8 <[^>]*> 119100d2 ? ldrnesb r0, \[r1, r2\]
+000000cc <[^>]*> 819100d2 ? ldrhisb r0, \[r1, r2\]
+000000d0 <[^>]*> b19100d2 ? ldrltsb r0, \[r1, r2\]
+000000d4 <[^>]*> e1df00f4 ? ldrsh r0, 000000e0 <\$\$lit_1>
+000000d8 <[^>]*> e1df00f4 ? ldrsh r0, 000000e4 <\$\$lit_1\+0x4>
+000000dc <[^>]*> 00000000 ? andeq r0, r0, r0
+[ ]*dc:.*.LC0
+000000e0 <[^>]*> 0000c0de ? .*
+000000e4 <[^>]*> 0000dead ? .*
diff --git a/gas/testsuite/gas/arm/arm7t.s b/gas/testsuite/gas/arm/arm7t.s
new file mode 100644
index 00000000000..656e90e0330
--- /dev/null
+++ b/gas/testsuite/gas/arm/arm7t.s
@@ -0,0 +1,79 @@
+ .section .rdata
+ .align 0
+.LC0:
+ .ascii "some data\000"
+
+ .text
+ .align 0
+
+loadhalfwords:
+ ldrh r0, [r1]
+ ldrh r0, [r1]!
+ ldrh r0, [r1, r2]
+ ldrh r0, [r1, r2]!
+ ldrh r0, [r1,#0x0C]
+ ldrh r0, [r1,#0x0C]!
+ ldrh r0, [r1,#-0x0C]
+ ldrh r0, [r1], r2
+ ldrh r0, =0xFF00
+ ldrh r0, =0xC0DE
+ ldrh r0, .L2
+
+storehalfwords:
+ strh r0, [r1]
+ strh r0, [r1]!
+ strh r0, [r1, r2]
+ strh r0, [r1, r2]!
+ strh r0, [r1,#0x0C]
+ strh r0, [r1,#0x0C]!
+ strh r0, [r1,#-0x0C]
+ strh r0, [r1], r2
+ strh r0, .L2
+
+loadsignedbytes:
+ ldrsb r0, [r1]
+ ldrsb r0, [r1]!
+ ldrsb r0, [r1, r2]
+ ldrsb r0, [r1, r2]!
+ ldrsb r0, [r1,#0x0C]
+ ldrsb r0, [r1,#0x0C]!
+ ldrsb r0, [r1,#-0x0C]
+ ldrsb r0, [r1], r2
+ ldrsb r0, =0xDE
+ ldrsb r0, .L2
+
+loadsignedhalfwords:
+ ldrsh r0, [r1]
+ ldrsh r0, [r1]!
+ ldrsh r0, [r1, r2]
+ ldrsh r0, [r1, r2]!
+ ldrsh r0, [r1, #0x0C]
+ ldrsh r0, [r1, #0x0C]!
+ ldrsh r0, [r1, #-0x0C]
+ ldrsh r0, [r1], r2
+ ldrsh r0, =0xFF00
+ ldrsh r0, =0xC0DE
+ ldrsh r0, .L2
+
+misc:
+ ldralh r0, [r1, r2]
+ ldrneh r0, [r1, r2]
+ ldrhih r0, [r1, r2]
+ ldrlth r0, [r1, r2]
+
+ ldralsh r0, [r1, r2]
+ ldrnesh r0, [r1, r2]
+ ldrhish r0, [r1, r2]
+ ldrltsh r0, [r1, r2]
+
+ ldralsb r0, [r1, r2]
+ ldrnesb r0, [r1, r2]
+ ldrhisb r0, [r1, r2]
+ ldrltsb r0, [r1, r2]
+
+ ldrsh r0, =0xC0DE
+ ldrsh r0, =0xDEAD
+
+ .align
+.L2:
+ .word .LC0
diff --git a/gas/testsuite/gas/arm/copro.s b/gas/testsuite/gas/arm/copro.s
new file mode 100644
index 00000000000..46c9b920df0
--- /dev/null
+++ b/gas/testsuite/gas/arm/copro.s
@@ -0,0 +1,24 @@
+.text
+.align 0
+ cdp p1, 4, cr1, cr2, cr3
+ cdpeq 4, 3, c1, c4, cr5, 5
+
+ ldc 5, cr9, [r3]
+ ldcl 1, cr14, [r1, #32]
+ ldcmi 0, cr0, [r2, #1020]!
+ ldcpll p7, c1, [r3], #64
+ ldc p0, c8, foo
+foo:
+
+ stc 5, cr0, [r3]
+ stcl 3, cr15, [r0, #8]
+ stceq p4, cr12, [r2, #100]!
+ stccc p6, c8, [r4], #48
+ stc p1, c7, bar
+bar:
+
+ mrc 2, 3, r5, c1, c2
+ mrcge p4, 5, r15, cr1, cr2, 7
+
+ mcr p7, 1, r15, cr1, cr1
+ mcrlt 5, 1, r8, cr2, cr9, 0
diff --git a/gas/testsuite/gas/arm/float.s b/gas/testsuite/gas/arm/float.s
new file mode 100644
index 00000000000..48aee965cb2
--- /dev/null
+++ b/gas/testsuite/gas/arm/float.s
@@ -0,0 +1,162 @@
+.text
+.align 0
+ mvfe f0, f1
+ mvfeqe f3, f5
+ mvfeqd f4, #1.0
+ mvfs f4, f7
+ mvfsp f0, f1
+ mvfdm f3, f4
+ mvfez f7, f7
+
+ adfe f0, f1, #2.0
+ adfeqe f1, f2, #0.5
+ adfsm f3, f4, f5
+
+ sufd f0, f0, #2.0
+ sufs f1, f2, #10.0
+ sufneez f3, f4, f5
+
+ rsfs f1, f1, #0.0
+ rsfdp f3, f0, #5.0
+ rsfled f7, f6, f0
+
+ mufd f0, f0, f0
+ mufez f1, f2, #3.0
+ mufals f0, f0, #4.0
+
+ dvfd f0, f0, #1.0000
+ dvfez f0, f1, #10e0
+ dvfmism f3, f4, f5
+
+ rdfe f0, f1, #1.0e1
+ rdfs f3, f7, #0f1
+ rdfccdp f4, f4, f3
+
+ powd f0, f2, f3
+ pows f1, f3, #0e1e1
+ powcsez f4, f7, #1
+
+ rpws f7, f6, f7
+ rpweqd f0, f1, f2
+ rpwem f2, f2, f3
+
+ rmfd f1, f2, #3
+ rmfvss f3, f4, f4
+ rmfep f4, f7, f0
+
+ fmls f0, f1, f2
+ fmleqs f1, f3, f5
+ fmlplsz f4, f6, f0
+
+ fdvs f1, f3, #10
+ fdvsp f0, f1, f2
+ fdvhssm f4, f4, f4
+
+ frds f1, f1, #1.0
+ frdgts f2, f1, f0
+ frdgtsz f4, f4, f5
+
+ pold f0, f1, f2
+ polsz f4, f6, #3.0
+ poleqe f5, f6, f7
+
+ mnfs f0, f1
+ mnfd f0, #3.0
+ mnfez f0, #4.0
+ mnfeqez f0, f5
+ mnfsp f0, f4
+ mnfdm f1, f7
+
+ absd f0, f1
+ abssp f1, #3.0
+ abseqe f4, f5
+
+ rnds f1, f2
+ rndd f3, f4
+ rndeqez f6, #4.0
+
+ sqts f5, f5
+ sqtdp f6, f6
+ sqtplez f7, f6
+
+ logs f0, #10
+ loge f0, #0f10
+ lognedz f0, f1
+
+ lgne f1, f2
+ lgndz f1, f3
+ lgnvcs f3, f4
+
+ exps f1, f3
+ expem f3, #10.0
+ exppld f6, f7
+
+ sind f0, f1
+ sinsm f1, f2
+ singte f4, #5
+
+ cosd f1, f3
+ cosem f4, f5
+ cosnedp f6, f1
+
+ tane f1, f5
+ tansz f4, f7
+ tangedz f1, #4.0
+
+ asne f4, f5
+ asnsp f6, #5e-1
+ asnmidz f5, f5
+
+ acss f5, f6
+ acsd f6, f0
+ acshsem f1, #0.05e1
+
+ atne f0, f5
+ atnsz f1, #5
+ atnltd f3, f2
+
+ urde f5, f4
+ nrme f6, f5
+ nrmpldz f7, f5
+
+ fltsp f0, r8
+ flte f1, r0
+ flteqdz f5, r7
+
+ fix r0, f1
+ fixz r1, f7
+ fixcsm r5, f5
+
+ wfc r0
+ wfs r1
+ rfseq r2
+ rfc r4
+
+ cmf f0, #1
+ cmf f1, f2
+ cmfeq f0, f1
+
+ cnf f0, #3
+ cnf f1, #0.5
+ cnfvs f3, f4
+
+ cmfe f0, f1
+ cmfeeq f1, f2
+ cmfeqe f3, #5.0
+
+ cnfe f1, f3
+ cnfeeq f3, f4
+ cnfeqe f4, f7
+ cnfale f4, #5.0
+
+ lfm f0, 4, [r0]
+ lfm f0, 4, [r0, #0]
+ lfm f1, 4, [r1, #64]
+ sfm f2, 4, [r14, #1020]!
+ sfmeq f7, 3, [r8], #-1020
+
+ lfmfd f6, 2, [r15]
+ sfmea f7, 1, [r8]!
+ lfmeqea f5, 4, [r6]
+ sfmnefd f4, 3, [r2]
+ sfmnefd f4, 3, [r2]!
diff --git a/gas/testsuite/gas/arm/immed.s b/gas/testsuite/gas/arm/immed.s
new file mode 100644
index 00000000000..5d2092be18b
--- /dev/null
+++ b/gas/testsuite/gas/arm/immed.s
@@ -0,0 +1,11 @@
+@ Tests for complex immediate expressions - none of these need
+@ relocations
+ .text
+bar:
+ mov r0, #0
+ mov r0, #(. - bar - 8)
+ ldr r0, bar
+ ldr r0, [pc, # (bar - . -8)]
+ .space 4096
+ mov r0, #(. - bar - 8) & 0xff
+ ldr r0, [pc, # (bar - . -8) & 0xff]
diff --git a/gas/testsuite/gas/arm/inst.d b/gas/testsuite/gas/arm/inst.d
new file mode 100644
index 00000000000..decb8f01b76
--- /dev/null
+++ b/gas/testsuite/gas/arm/inst.d
@@ -0,0 +1,168 @@
+#objdump: -dr --prefix-addresses --show-raw-insn
+#name: ARM basic instructions
+#as: -marm2 -EL
+
+# Test the standard ARM instructions:
+
+.*: +file format .*arm.*
+
+Disassembly of section .text:
+00000000 <[^>]*> e3a00000 ? mov r0, #0
+00000004 <[^>]*> e1a01002 ? mov r1, r2
+00000008 <[^>]*> e1a03184 ? mov r3, r4, lsl #3
+0000000c <[^>]*> e1a05736 ? mov r5, r6, lsr r7
+00000010 <[^>]*> e1a08a59 ? mov r8, r9, asr sl
+00000014 <[^>]*> e1a0bd1c ? mov fp, ip, lsl sp
+00000018 <[^>]*> e1a0e06f ? mov lr, pc, rrx
+0000001c <[^>]*> e1a01002 ? mov r1, r2
+00000020 <[^>]*> 01a02003 ? moveq r2, r3
+00000024 <[^>]*> 11a04005 ? movne r4, r5
+00000028 <[^>]*> b1a06007 ? movlt r6, r7
+0000002c <[^>]*> a1a08009 ? movge r8, r9
+00000030 <[^>]*> d1a0a00b ? movle sl, fp
+00000034 <[^>]*> c1a0c00d ? movgt ip, sp
+00000038 <[^>]*> 31a01002 ? movcc r1, r2
+0000003c <[^>]*> 21a01003 ? movcs r1, r3
+00000040 <[^>]*> 41a03006 ? movmi r3, r6
+00000044 <[^>]*> 51a07009 ? movpl r7, r9
+00000048 <[^>]*> 61a01008 ? movvs r1, r8
+0000004c <[^>]*> 71a09fa1 ? movvc r9, r1, lsr #31
+00000050 <[^>]*> 81a0800f ? movhi r8, pc
+00000054 <[^>]*> 91a0f00e ? movls pc, lr
+00000058 <[^>]*> 21a09008 ? movcs r9, r8
+0000005c <[^>]*> 31a01003 ? movcc r1, r3
+00000060 <[^>]*> e1b00008 ? movs r0, r8
+00000064 <[^>]*> 31b00007 ? movccs r0, r7
+00000068 <[^>]*> e281000a ? add r0, r1, #10
+0000006c <[^>]*> e0832004 ? add r2, r3, r4
+00000070 <[^>]*> e0865287 ? add r5, r6, r7, lsl #5
+00000074 <[^>]*> e0821113 ? add r1, r2, r3, lsl r1
+00000078 <[^>]*> e201000a ? and r0, r1, #10
+0000007c <[^>]*> e0032004 ? and r2, r3, r4
+00000080 <[^>]*> e0065287 ? and r5, r6, r7, lsl #5
+00000084 <[^>]*> e0021113 ? and r1, r2, r3, lsl r1
+00000088 <[^>]*> e221000a ? eor r0, r1, #10
+0000008c <[^>]*> e0232004 ? eor r2, r3, r4
+00000090 <[^>]*> e0265287 ? eor r5, r6, r7, lsl #5
+00000094 <[^>]*> e0221113 ? eor r1, r2, r3, lsl r1
+00000098 <[^>]*> e241000a ? sub r0, r1, #10
+0000009c <[^>]*> e0432004 ? sub r2, r3, r4
+000000a0 <[^>]*> e0465287 ? sub r5, r6, r7, lsl #5
+000000a4 <[^>]*> e0421113 ? sub r1, r2, r3, lsl r1
+000000a8 <[^>]*> e2a1000a ? adc r0, r1, #10
+000000ac <[^>]*> e0a32004 ? adc r2, r3, r4
+000000b0 <[^>]*> e0a65287 ? adc r5, r6, r7, lsl #5
+000000b4 <[^>]*> e0a21113 ? adc r1, r2, r3, lsl r1
+000000b8 <[^>]*> e2c1000a ? sbc r0, r1, #10
+000000bc <[^>]*> e0c32004 ? sbc r2, r3, r4
+000000c0 <[^>]*> e0c65287 ? sbc r5, r6, r7, lsl #5
+000000c4 <[^>]*> e0c21113 ? sbc r1, r2, r3, lsl r1
+000000c8 <[^>]*> e261000a ? rsb r0, r1, #10
+000000cc <[^>]*> e0632004 ? rsb r2, r3, r4
+000000d0 <[^>]*> e0665287 ? rsb r5, r6, r7, lsl #5
+000000d4 <[^>]*> e0621113 ? rsb r1, r2, r3, lsl r1
+000000d8 <[^>]*> e2e1000a ? rsc r0, r1, #10
+000000dc <[^>]*> e0e32004 ? rsc r2, r3, r4
+000000e0 <[^>]*> e0e65287 ? rsc r5, r6, r7, lsl #5
+000000e4 <[^>]*> e0e21113 ? rsc r1, r2, r3, lsl r1
+000000e8 <[^>]*> e381000a ? orr r0, r1, #10
+000000ec <[^>]*> e1832004 ? orr r2, r3, r4
+000000f0 <[^>]*> e1865287 ? orr r5, r6, r7, lsl #5
+000000f4 <[^>]*> e1821113 ? orr r1, r2, r3, lsl r1
+000000f8 <[^>]*> e3c1000a ? bic r0, r1, #10
+000000fc <[^>]*> e1c32004 ? bic r2, r3, r4
+00000100 <[^>]*> e1c65287 ? bic r5, r6, r7, lsl #5
+00000104 <[^>]*> e1c21113 ? bic r1, r2, r3, lsl r1
+00000108 <[^>]*> e3e0000a ? mvn r0, #10
+0000010c <[^>]*> e1e02004 ? mvn r2, r4
+00000110 <[^>]*> e1e05287 ? mvn r5, r7, lsl #5
+00000114 <[^>]*> e1e01113 ? mvn r1, r3, lsl r1
+00000118 <[^>]*> e310000a ? tst r0, #10
+0000011c <[^>]*> e1120004 ? tst r2, r4
+00000120 <[^>]*> e1150287 ? tst r5, r7, lsl #5
+00000124 <[^>]*> e1110113 ? tst r1, r3, lsl r1
+00000128 <[^>]*> e330000a ? teq r0, #10
+0000012c <[^>]*> e1320004 ? teq r2, r4
+00000130 <[^>]*> e1350287 ? teq r5, r7, lsl #5
+00000134 <[^>]*> e1310113 ? teq r1, r3, lsl r1
+00000138 <[^>]*> e350000a ? cmp r0, #10
+0000013c <[^>]*> e1520004 ? cmp r2, r4
+00000140 <[^>]*> e1550287 ? cmp r5, r7, lsl #5
+00000144 <[^>]*> e1510113 ? cmp r1, r3, lsl r1
+00000148 <[^>]*> e370000a ? cmn r0, #10
+0000014c <[^>]*> e1720004 ? cmn r2, r4
+00000150 <[^>]*> e1750287 ? cmn r5, r7, lsl #5
+00000154 <[^>]*> e1710113 ? cmn r1, r3, lsl r1
+00000158 <[^>]*> e330f00a ? teqp r0, #10
+0000015c <[^>]*> e132f004 ? teqp r2, r4
+00000160 <[^>]*> e135f287 ? teqp r5, r7, lsl #5
+00000164 <[^>]*> e131f113 ? teqp r1, r3, lsl r1
+00000168 <[^>]*> e370f00a ? cmnp r0, #10
+0000016c <[^>]*> e172f004 ? cmnp r2, r4
+00000170 <[^>]*> e175f287 ? cmnp r5, r7, lsl #5
+00000174 <[^>]*> e171f113 ? cmnp r1, r3, lsl r1
+00000178 <[^>]*> e350f00a ? cmpp r0, #10
+0000017c <[^>]*> e152f004 ? cmpp r2, r4
+00000180 <[^>]*> e155f287 ? cmpp r5, r7, lsl #5
+00000184 <[^>]*> e151f113 ? cmpp r1, r3, lsl r1
+00000188 <[^>]*> e310f00a ? tstp r0, #10
+0000018c <[^>]*> e112f004 ? tstp r2, r4
+00000190 <[^>]*> e115f287 ? tstp r5, r7, lsl #5
+00000194 <[^>]*> e111f113 ? tstp r1, r3, lsl r1
+00000198 <[^>]*> e0000291 ? mul r0, r1, r2
+0000019c <[^>]*> e0110392 ? muls r1, r2, r3
+000001a0 <[^>]*> 10000091 ? mulne r0, r1, r0
+000001a4 <[^>]*> 90190798 ? mullss r9, r8, r7
+000001a8 <[^>]*> e021ba99 ? mla r1, r9, sl, fp
+000001ac <[^>]*> e033c994 ? mlas r3, r4, r9, ip
+000001b0 <[^>]*> b029d798 ? mlalt r9, r8, r7, sp
+000001b4 <[^>]*> a034e391 ? mlages r4, r1, r3, lr
+000001b8 <[^>]*> e5910000 ? ldr r0, \[r1\]
+000001bc <[^>]*> e7911002 ? ldr r1, \[r1, r2\]
+000001c0 <[^>]*> e7b32004 ? ldr r2, \[r3, r4\]!
+000001c4 <[^>]*> e5922020 ? ldr r2, \[r2, #32\]
+000001c8 <[^>]*> e7932424 ? ldr r2, \[r3, r4, lsr #8\]
+000001cc <[^>]*> 07b54484 ? ldreq r4, \[r5, r4, lsl #9\]!
+000001d0 <[^>]*> 14954006 ? ldrne r4, \[r5\], #6
+000001d4 <[^>]*> e6b21003 ? ldrt r1, \[r2\], r3
+000001d8 <[^>]*> e6942425 ? ldr r2, \[r4\], r5, lsr #8
+000001dc <[^>]*> e51f0008 ? ldr r0, 000001dc <[^>]*>
+000001e0 <[^>]*> e5d43000 ? ldrb r3, \[r4\]
+000001e4 <[^>]*> 14f85000 ? ldrnebt r5, \[r8\]
+000001e8 <[^>]*> e5810000 ? str r0, \[r1\]
+000001ec <[^>]*> e7811002 ? str r1, \[r1, r2\]
+000001f0 <[^>]*> e7a33004 ? str r3, \[r3, r4\]!
+000001f4 <[^>]*> e5822020 ? str r2, \[r2, #32\]
+000001f8 <[^>]*> e7832424 ? str r2, \[r3, r4, lsr #8\]
+000001fc <[^>]*> 07a54484 ? streq r4, \[r5, r4, lsl #9\]!
+00000200 <[^>]*> 14854006 ? strne r4, \[r5\], #6
+00000204 <[^>]*> e6821003 ? str r1, \[r2\], r3
+00000208 <[^>]*> e6a42425 ? strt r2, \[r4\], r5, lsr #8
+0000020c <[^>]*> e50f1004 ? str r1, 00000210 <[^>]*>
+00000210 <[^>]*> e5c71000 ? strb r1, \[r7\]
+00000214 <[^>]*> e4e02000 ? strbt r2, \[r0\]
+00000218 <[^>]*> e8900002 ? ldmia r0, {r1}
+0000021c <[^>]*> 09920038 ? ldmeqib r2, {r3, r4, r5}
+00000220 <[^>]*> e853ffff ? ldmda r3, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr, pc}\^
+00000224 <[^>]*> e93b05ff ? ldmdb fp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sl}
+00000228 <[^>]*> e99100f7 ? ldmib r1, {r0, r1, r2, r4, r5, r6, r7}
+0000022c <[^>]*> e89201f8 ? ldmia r2, {r3, r4, r5, r6, r7, r8}
+00000230 <[^>]*> e9130003 ? ldmdb r3, {r0, r1}
+00000234 <[^>]*> e8740300 ? ldmda r4!, {r8, r9}\^
+00000238 <[^>]*> e8800002 ? stmia r0, {r1}
+0000023c <[^>]*> 09820038 ? stmeqib r2, {r3, r4, r5}
+00000240 <[^>]*> e843ffff ? stmda r3, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr, pc}\^
+00000244 <[^>]*> e92a05ff ? stmdb sl!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, sl}
+00000248 <[^>]*> e8010007 ? stmda r1, {r0, r1, r2}
+0000024c <[^>]*> e9020018 ? stmdb r2, {r3, r4}
+00000250 <[^>]*> e8830003 ? stmia r3, {r0, r1}
+00000254 <[^>]*> e9e40300 ? stmib r4!, {r8, r9}\^
+00000258 <[^>]*> ef123456 ? swi 0x00123456
+0000025c <[^>]*> 2f000033 ? swics 0x00000033
+00000260 <[^>]*> ebfffffe ? bl 00000260 <[^>]*>
+[ ]*260:.*_wombat.*
+00000264 <[^>]*> 5bffffe9 ? blpl 00000210 <bar>
+00000268 <[^>]*> eafffffe ? b 00000268 <[^>]*>
+[ ]*268:.*_wibble.*
+0000026c <[^>]*> dafffffe ? ble 0000026c <[^>]*>
+[ ]*26c:.*testerfunc.*
diff --git a/gas/testsuite/gas/arm/inst.s b/gas/testsuite/gas/arm/inst.s
new file mode 100644
index 00000000000..ff092c9256b
--- /dev/null
+++ b/gas/testsuite/gas/arm/inst.s
@@ -0,0 +1,189 @@
+@ Test file for ARM/GAS -- basic instructions
+
+.text
+.align
+ mov r0, #0
+ mov r1, r2
+ mov r3, r4, lsl #3
+ mov r5, r6, lsr r7
+ mov r8, r9, asr r10
+ mov r11, r12, asl r13
+ mov r14, r15, rrx
+ moval r1, r2
+ moveq r2, r3
+ movne r4, r5
+ movlt r6, r7
+ movge r8, r9
+ movle r10, r11
+ movgt r12, r13
+ movcc r1, r2
+ movcs r1, r3
+ movmi r3, r6
+ movpl r7, r9
+ movvs r1, r8
+ movvc r9, r1, lsr #31
+ movhi r8, r15
+ movls r15, r14
+ movhs r9, r8
+ movul r1, r3
+ movs r0, r8
+ movuls r0, r7
+
+ add r0, r1, #10
+ add r2, r3, r4
+ add r5, r6, r7, asl #5
+ add r1, r2, r3, lsl r1
+
+ and r0, r1, #10
+ and r2, r3, r4
+ and r5, r6, r7, asl #5
+ and r1, r2, r3, lsl r1
+
+ eor r0, r1, #10
+ eor r2, r3, r4
+ eor r5, r6, r7, asl #5
+ eor r1, r2, r3, lsl r1
+
+ sub r0, r1, #10
+ sub r2, r3, r4
+ sub r5, r6, r7, asl #5
+ sub r1, r2, r3, lsl r1
+
+ adc r0, r1, #10
+ adc r2, r3, r4
+ adc r5, r6, r7, asl #5
+ adc r1, r2, r3, lsl r1
+
+ sbc r0, r1, #10
+ sbc r2, r3, r4
+ sbc r5, r6, r7, asl #5
+ sbc r1, r2, r3, lsl r1
+
+ rsb r0, r1, #10
+ rsb r2, r3, r4
+ rsb r5, r6, r7, asl #5
+ rsb r1, r2, r3, lsl r1
+
+ rsc r0, r1, #10
+ rsc r2, r3, r4
+ rsc r5, r6, r7, asl #5
+ rsc r1, r2, r3, lsl r1
+
+ orr r0, r1, #10
+ orr r2, r3, r4
+ orr r5, r6, r7, asl #5
+ orr r1, r2, r3, lsl r1
+
+ bic r0, r1, #10
+ bic r2, r3, r4
+ bic r5, r6, r7, asl #5
+ bic r1, r2, r3, lsl r1
+
+ mvn r0, #10
+ mvn r2, r4
+ mvn r5, r7, asl #5
+ mvn r1, r3, lsl r1
+
+ tst r0, #10
+ tst r2, r4
+ tst r5, r7, asl #5
+ tst r1, r3, lsl r1
+
+ teq r0, #10
+ teq r2, r4
+ teq r5, r7, asl #5
+ teq r1, r3, lsl r1
+
+ cmp r0, #10
+ cmp r2, r4
+ cmp r5, r7, asl #5
+ cmp r1, r3, lsl r1
+
+ cmn r0, #10
+ cmn r2, r4
+ cmn r5, r7, asl #5
+ cmn r1, r3, lsl r1
+
+ teqp r0, #10
+ teqp r2, r4
+ teqp r5, r7, asl #5
+ teqp r1, r3, lsl r1
+
+ cmnp r0, #10
+ cmnp r2, r4
+ cmnp r5, r7, asl #5
+ cmnp r1, r3, lsl r1
+
+ cmpp r0, #10
+ cmpp r2, r4
+ cmpp r5, r7, asl #5
+ cmpp r1, r3, lsl r1
+
+ tstp r0, #10
+ tstp r2, r4
+ tstp r5, r7, asl #5
+ tstp r1, r3, lsl r1
+
+ mul r0, r1, r2
+ muls r1, r2, r3
+ mulne r0, r1, r0
+ mullss r9, r8, r7
+
+ mla r1, r9, r10, r11
+ mlas r3, r4, r9, r12
+ mlalt r9, r8, r7, r13
+ mlages r4, r1, r3, r14
+
+ ldr r0, [r1]
+ ldr r1, [r1, r2]
+ ldr r2, [r3, r4]!
+ ldr r2, [r2, #32]
+ ldr r2, [r3, r4, lsr #8]
+ ldreq r4, [r5, r4, asl #9]!
+ ldrne r4, [r5], #6
+ ldrt r1, [r2], r3
+ ldr r2, [r4], r5, lsr #8
+foo:
+ ldr r0, foo
+ ldrb r3, [r4]
+ ldrnebt r5, [r8]
+
+ str r0, [r1]
+ str r1, [r1, r2]
+ str r3, [r3, r4]!
+ str r2, [r2, #32]
+ str r2, [r3, r4, lsr #8]
+ streq r4, [r5, r4, asl #9]!
+ strne r4, [r5], #6
+ str r1, [r2], r3
+ strt r2, [r4], r5, lsr #8
+ str r1, bar
+bar:
+ stralb r1, [r7]
+ strbt r2, [r0]
+
+ ldmia r0, {r1}
+ ldmeqib r2, {r3, r4, r5}
+ ldmalda r3, {r0-r15}^
+ ldmdb r11!, {r0-r8, r10}
+ ldmed r1, {r0, r1, r2}|0xf0
+ ldmfd r2, {r3, r4}+{r5, r6, r7, r8}
+ ldmea r3, 3
+ ldmfa r4!, {r8, r9}^
+
+ stmia r0, {r1}
+ stmeqib r2, {r3, r4, r5}
+ stmalda r3, {r0-r15}^
+ stmdb r10!, {r0-r8, r10}
+ stmed r1, {r0, r1, r2}
+ stmfd r2, {r3, r4}
+ stmea r3, 3
+ stmfa r4!, {r8, r9}^
+
+ swi 0x123456
+ swihs 0x33
+
+ bl _wombat
+ blpl bar
+ b _wibble
+ ble testerfunc
diff --git a/gas/testsuite/gas/arm/le-fpconst.d b/gas/testsuite/gas/arm/le-fpconst.d
new file mode 100644
index 00000000000..354e0e0c9f3
--- /dev/null
+++ b/gas/testsuite/gas/arm/le-fpconst.d
@@ -0,0 +1,8 @@
+#objdump: -s
+#as: -EL
+#name: arm little-endian fpconst
+
+.*: +file format .*arm.*
+
+Contents of section .text:
+ 0000 cdcc8c3f 00000000 9999f13f 9a999999 .*
diff --git a/gas/testsuite/gas/arm/le-fpconst.s b/gas/testsuite/gas/arm/le-fpconst.s
new file mode 100644
index 00000000000..8a3c3d70145
--- /dev/null
+++ b/gas/testsuite/gas/arm/le-fpconst.s
@@ -0,0 +1,8 @@
+# Test fp constants.
+# These need ARM specific support because 8 byte fp constants in little
+# endian mode are represented abnormally.
+
+ .text
+ .float 1.1
+ .float 0
+ .double 1.1
diff --git a/gas/testsuite/gas/arm/thumb.s b/gas/testsuite/gas/arm/thumb.s
new file mode 100644
index 00000000000..ea4b82d1438
--- /dev/null
+++ b/gas/testsuite/gas/arm/thumb.s
@@ -0,0 +1,193 @@
+ .text
+ .code 16
+.foo:
+ lsl r2, r1, #3
+ lsr r3, r4, #31
+wibble/data:
+ asr r7, r0, #5
+
+ lsl r1, r2, #0
+ lsr r3, r4, #0
+ asr r4, r5, #0
+
+ lsr r6, r7, #32
+ asr r0, r1, #32
+
+ add r1, r2, r3
+ add r2, r4, #2
+ sub r3, r5, r7
+ sub r2, r4, #7
+
+ mov r4, #255
+ cmp r3, #250
+ add r6, #123
+ sub r5, #128
+
+ and r3, r5
+ eor r4, r6
+ lsl r1, r0
+ lsr r2, r3
+ asr r4, r6
+ adc r5, r7
+ sbc r0, r4
+ ror r1, r4
+ tst r2, r5
+ neg r1, r1
+ cmp r2, r3
+ cmn r1, r4
+ orr r0, r3
+ mul r4, r5
+ bic r5, r7
+ mvn r5, r5
+
+ add r1, r13
+ add r12, r2
+ add r9, r9
+ cmp r1, r14
+ cmp r8, r0
+ cmp r12, r14
+ mov r0, r9
+ mov r9, r4
+ mov r8, r8
+ bx r7
+ bx r8
+ .align 0
+ bx pc
+
+ ldr r3, [pc, #128]
+ ldr r4, bar
+
+ str r0, [r1, r2]
+ strb r1, [r2, r4]
+ ldr r5, [r6, r7]
+ ldrb r2, [r4, r5]
+
+ .align 0
+bar:
+ strh r1, [r2, r3]
+ ldrh r3, [r4, r0]
+ ldsb r1, [r6, r7]
+ ldsh r2, [r0, r5]
+
+ str r3, [r3, #124]
+ ldr r1, [r4, #124]
+ ldr r5, [r5]
+ strb r1, [r5, #31]
+ strb r1, [r4, #5]
+ strb r2, [r6]
+
+ strh r4, [r5, #62]
+ ldrh r5, [r0, #4]
+ ldrh r3, [r2]
+
+ str r3, [r13, #1020]
+ ldr r1, [r13, #44]
+ ldr r2, [r13]
+
+ add r7, r15, #1020
+ add r4, r13, #512
+
+ add r13, #268
+ add r13, #-104
+ sub r13, #268
+ sub r13, #-108
+
+ push {r0, r1, r2, r4}
+ push {r0, r3-r7, lr}
+ pop {r3, r4, r7}
+ pop {r0-r7, r15}
+
+ stmia r3!, {r0, r1, r4-r7}
+ ldmia r0!, {r1-r7}
+
+ beq bar
+ bne bar
+ bcs bar
+ bcc bar
+ bmi bar
+ bpl bar
+ bvs bar
+ bvc bar
+ bhi bar
+ bls bar
+ bge bar
+ bgt bar
+ blt bar
+ bgt bar
+ ble bar
+ bhi bar
+ blo bar
+ bul bar
+
+close:
+ lsl r4, r5, #near - close
+near:
+ add r2, r3, #near - close
+
+ add sp, sp, #127 << 2
+ sub sp, sp, #127 << 2
+ add r0, sp, #255 << 2
+ add r0, pc, #255 << 2
+
+ add sp, sp, #bar - .foo
+ sub sp, sp, #bar - .foo
+ add r0, sp, #bar - .foo
+ add r0, pc, #bar - .foo
+
+ add r1, #bar - .foo
+ mov r6, #bar - .foo
+ cmp r7, #bar - .foo
+
+ nop
+ nop
+
+ .arm
+.localbar:
+ b .localbar
+ b .wombat
+ bl .localbar
+ bl .wombat
+
+ bx r0
+ swi 0x123456
+
+ .thumb
+ @ The following will be disassembled incorrectly if we do not
+ @ have a Thumb symbol defined before the first Thumb instruction:
+morethumb:
+ adr r0, forwardonly
+
+ b .foo
+ b .wombat
+ bl .foo
+ bl .wombat
+
+ bx r0
+
+ swi 0xff
+ .align 0
+forwardonly:
+ beq .wombat
+ bne .wombat
+ bcs .wombat
+ bcc .wombat
+ bmi .wombat
+ bpl .wombat
+ bvs .wombat
+ bvc .wombat
+ bhi .wombat
+ bls .wombat
+ bge .wombat
+ bgt .wombat
+ blt .wombat
+ bgt .wombat
+ ble .wombat
+ bhi .wombat
+ blo .wombat
+ bul .wombat
+
+.back:
+ bl .local
+ .space (1 << 11) @ leave space to force long offsets
+.local:
+ bl .back