aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorRichard Earnshaw <richard.earnshaw@arm.com>2012-10-11 15:26:18 +0000
committerRichard Earnshaw <richard.earnshaw@arm.com>2012-10-11 15:26:18 +0000
commit56c0a61f59fbb8cce91f36aa0ca5cb3445bac31b (patch)
tree3349af14f08bcb7facdca22f62d4281b304cbe5c /gas
parent7c1cef979f899c38ef17b55980f1965e8bfffb4b (diff)
downloadfsf-binutils-gdb-56c0a61f59fbb8cce91f36aa0ca5cb3445bac31b.zip
fsf-binutils-gdb-56c0a61f59fbb8cce91f36aa0ca5cb3445bac31b.tar.gz
fsf-binutils-gdb-56c0a61f59fbb8cce91f36aa0ca5cb3445bac31b.tar.bz2
2012-10-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/tc-arm.c: Change condition code insertion for lds[hb] instructions from after the 2nd character to after the 3rd. (tCM): Remove macro. (TxCM): Likewise. (TxCM_): Likewise. (TCM): Likewise. 2012-10-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * gas/arm/ldgesb-bad.d: New file. * gas/arm/ldgesb-bad.l: Likewise. * gas/arm/ldgesb-bad.s: Likewise. * gas/arm/ldgesh-bad.d: Likewise. * gas/arm/ldgesh-bad.l: Likewise. * gas/arm/ldgesh-bad.s: Likewise. * gas/arm/ldsgeb.d: Likewise. * gas/arm/ldsgeb.s: Likewise. * gas/arm/ldsgeb.l: Likewise. * gas/arm/ldsgeh.d: Likewise. * gas/arm/ldsgeh.s: Likewise. * gas/arm/ldsgeh.l: Likewise.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog9
-rw-r--r--gas/config/tc-arm.c37
-rw-r--r--gas/testsuite/ChangeLog15
-rw-r--r--gas/testsuite/gas/arm/ldgesb-bad.d3
-rw-r--r--gas/testsuite/gas/arm/ldgesb-bad.l3
-rw-r--r--gas/testsuite/gas/arm/ldgesb-bad.s7
-rw-r--r--gas/testsuite/gas/arm/ldgesh-bad.d3
-rw-r--r--gas/testsuite/gas/arm/ldgesh-bad.l3
-rw-r--r--gas/testsuite/gas/arm/ldgesh-bad.s7
-rw-r--r--gas/testsuite/gas/arm/ldsgeb.d2
-rw-r--r--gas/testsuite/gas/arm/ldsgeb.l2
-rw-r--r--gas/testsuite/gas/arm/ldsgeb.s7
-rw-r--r--gas/testsuite/gas/arm/ldsgeh.d2
-rw-r--r--gas/testsuite/gas/arm/ldsgeh.l2
-rw-r--r--gas/testsuite/gas/arm/ldsgeh.s7
15 files changed, 74 insertions, 35 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 9628a04..af9baf1 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,12 @@
+2012-10-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * config/tc-arm.c: Change condition code insertion for
+ lds[hb] instructions from after the 2nd character to after the 3rd.
+ (tCM): Remove macro.
+ (TxCM): Likewise.
+ (TxCM_): Likewise.
+ (TCM): Likewise.
+
2012-10-09 Nagajyothi Eggone <nagajyothi.eggone@amd.com>
* config/tc-i386.c (cpu_arch): Add CPU_BDVER3_FLAGS.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 91b29ac..1ce5459 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -17778,38 +17778,6 @@ static struct asm_barrier_opt barrier_opt_names[] =
#define tC3w(mnem, aop, top, nops, ops, ae, te) \
TxC3w (mnem, aop, T_MNEM##top, nops, ops, ae, te)
-/* Mnemonic with a conditional infix in an unusual place. Each and every variant has to
- appear in the condition table. */
-#define TxCM_(m1, m2, m3, op, top, nops, ops, ae, te) \
- { m1 #m2 m3, OPS##nops ops, sizeof (#m2) == 1 ? OT_odd_infix_unc : OT_odd_infix_0 + sizeof (m1) - 1, \
- 0x##op, top, ARM_VARIANT, THUMB_VARIANT, do_##ae, do_##te }
-
-#define TxCM(m1, m2, op, top, nops, ops, ae, te) \
- TxCM_ (m1, , m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, eq, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, ne, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, cs, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, hs, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, cc, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, ul, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, lo, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, mi, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, pl, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, vs, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, vc, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, hi, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, ls, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, ge, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, lt, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, gt, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, le, m2, op, top, nops, ops, ae, te), \
- TxCM_ (m1, al, m2, op, top, nops, ops, ae, te)
-
-#define TCM(m1,m2, aop, top, nops, ops, ae, te) \
- TxCM (m1,m2, aop, 0x##top, nops, ops, ae, te)
-#define tCM(m1,m2, aop, top, nops, ops, ae, te) \
- TxCM (m1,m2, aop, T_MNEM##top, nops, ops, ae, te)
-
/* Mnemonic that cannot be conditionalized. The ARM condition-code
field is still 0xE. Many of the Thumb variants can be executed
conditionally, so this is checked separately. */
@@ -18101,8 +18069,8 @@ static const struct asm_opcode insns[] =
tC3("strh", 00000b0, _strh, 2, (RRnpc_npcsp, ADDRGLDRS), ldstv4, t_ldst),
tC3("ldrsh", 01000f0, _ldrsh, 2, (RRnpc_npcsp, ADDRGLDRS), ldstv4, t_ldst),
tC3("ldrsb", 01000d0, _ldrsb, 2, (RRnpc_npcsp, ADDRGLDRS), ldstv4, t_ldst),
- tCM("ld","sh", 01000f0, _ldrsh, 2, (RRnpc_npcsp, ADDRGLDRS), ldstv4, t_ldst),
- tCM("ld","sb", 01000d0, _ldrsb, 2, (RRnpc_npcsp, ADDRGLDRS), ldstv4, t_ldst),
+ tC3("ldsh", 01000f0, _ldrsh, 2, (RRnpc_npcsp, ADDRGLDRS), ldstv4, t_ldst),
+ tC3("ldsb", 01000d0, _ldrsb, 2, (RRnpc_npcsp, ADDRGLDRS), ldstv4, t_ldst),
#undef ARM_VARIANT
#define ARM_VARIANT & arm_ext_v4t_5
@@ -19781,7 +19749,6 @@ static const struct asm_opcode insns[] =
#undef ARM_VARIANT
#undef THUMB_VARIANT
#undef TCE
-#undef TCM
#undef TUE
#undef TUF
#undef TCC
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index a7e1696..37632e5 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,18 @@
+2012-10-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
+
+ * gas/arm/ldgesb-bad.d: New file.
+ * gas/arm/ldgesb-bad.l: Likewise.
+ * gas/arm/ldgesb-bad.s: Likewise.
+ * gas/arm/ldgesh-bad.d: Likewise.
+ * gas/arm/ldgesh-bad.l: Likewise.
+ * gas/arm/ldgesh-bad.s: Likewise.
+ * gas/arm/ldsgeb.d: Likewise.
+ * gas/arm/ldsgeb.s: Likewise.
+ * gas/arm/ldsgeb.l: Likewise.
+ * gas/arm/ldsgeh.d: Likewise.
+ * gas/arm/ldsgeh.s: Likewise.
+ * gas/arm/ldsgeh.l: Likewise.
+
2012-10-09 Nagajyothi Eggone <nagajyothi.eggone@amd.com>
* gas/i386/i386.exp: Run bdver3 test cases.
diff --git a/gas/testsuite/gas/arm/ldgesb-bad.d b/gas/testsuite/gas/arm/ldgesb-bad.d
new file mode 100644
index 0000000..f11df79
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldgesb-bad.d
@@ -0,0 +1,3 @@
+# name: Reject ld<cc>sb instructions
+# as: -march=armv7-a
+# error-output: ldgesb-bad.l
diff --git a/gas/testsuite/gas/arm/ldgesb-bad.l b/gas/testsuite/gas/arm/ldgesb-bad.l
new file mode 100644
index 0000000..71beeeb
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldgesb-bad.l
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*Error: bad instruction `ldgesb r1,\[r11,#4\]'
+.*Warning: section '.text' finished with an open IT block.
diff --git a/gas/testsuite/gas/arm/ldgesb-bad.s b/gas/testsuite/gas/arm/ldgesb-bad.s
new file mode 100644
index 0000000..d40b6f8
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldgesb-bad.s
@@ -0,0 +1,7 @@
+.syntax unified
+.arch armv7-a
+.thumb
+ .global foo
+foo:
+ it ge
+ ldgesb r1, [r11, #4]
diff --git a/gas/testsuite/gas/arm/ldgesh-bad.d b/gas/testsuite/gas/arm/ldgesh-bad.d
new file mode 100644
index 0000000..e7c93c3
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldgesh-bad.d
@@ -0,0 +1,3 @@
+# name: Reject ld<cc>sh instructions
+# as: -march=armv7-a
+# error-output: ldgesh-bad.l
diff --git a/gas/testsuite/gas/arm/ldgesh-bad.l b/gas/testsuite/gas/arm/ldgesh-bad.l
new file mode 100644
index 0000000..9cb9d4b
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldgesh-bad.l
@@ -0,0 +1,3 @@
+.*: Assembler messages:
+.*Error: bad instruction `ldgesh r1,\[r11,#4\]'
+.*Warning: section '.text' finished with an open IT block.
diff --git a/gas/testsuite/gas/arm/ldgesh-bad.s b/gas/testsuite/gas/arm/ldgesh-bad.s
new file mode 100644
index 0000000..c51fa3d
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldgesh-bad.s
@@ -0,0 +1,7 @@
+.syntax unified
+.arch armv7-a
+.thumb
+ .global foo
+foo:
+ it ge
+ ldgesh r1, [r11, #4]
diff --git a/gas/testsuite/gas/arm/ldsgeb.d b/gas/testsuite/gas/arm/ldsgeb.d
new file mode 100644
index 0000000..2c674aa
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldsgeb.d
@@ -0,0 +1,2 @@
+# name: Accept lds<cc>sb mnemonics
+# error-output: ldsgeb.l
diff --git a/gas/testsuite/gas/arm/ldsgeb.l b/gas/testsuite/gas/arm/ldsgeb.l
new file mode 100644
index 0000000..bcc175b
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldsgeb.l
@@ -0,0 +1,2 @@
+.*: Assembler messages:
+.*: Warning: conditional infixes are deprecated in unified syntax
diff --git a/gas/testsuite/gas/arm/ldsgeb.s b/gas/testsuite/gas/arm/ldsgeb.s
new file mode 100644
index 0000000..15587bd
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldsgeb.s
@@ -0,0 +1,7 @@
+.syntax unified
+.arch armv7-a
+.thumb
+ .global foo
+foo:
+ it ge
+ ldsgeb r1, [r11, #4]
diff --git a/gas/testsuite/gas/arm/ldsgeh.d b/gas/testsuite/gas/arm/ldsgeh.d
new file mode 100644
index 0000000..293d761
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldsgeh.d
@@ -0,0 +1,2 @@
+# name: Accept lds<cc>sh mnemonics
+# error-output: ldsgeh.l
diff --git a/gas/testsuite/gas/arm/ldsgeh.l b/gas/testsuite/gas/arm/ldsgeh.l
new file mode 100644
index 0000000..bcc175b
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldsgeh.l
@@ -0,0 +1,2 @@
+.*: Assembler messages:
+.*: Warning: conditional infixes are deprecated in unified syntax
diff --git a/gas/testsuite/gas/arm/ldsgeh.s b/gas/testsuite/gas/arm/ldsgeh.s
new file mode 100644
index 0000000..b33b32b
--- /dev/null
+++ b/gas/testsuite/gas/arm/ldsgeh.s
@@ -0,0 +1,7 @@
+.syntax unified
+.arch armv7-a
+.thumb
+ .global foo
+foo:
+ it ge
+ ldsgeh r1, [r11, #4]