aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-arm.c5
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/arm/neon-ldst-align-bad.d3
-rw-r--r--gas/testsuite/gas/arm/neon-ldst-align-bad.l3
-rw-r--r--gas/testsuite/gas/arm/neon-ldst-align-bad.s2
6 files changed, 22 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index f061250..e9cf498 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2010-02-26 Jie Zhang <jie@codesourcery.com>
+
+ * config/tc-arm.c (do_neon_ld_st_interleave): Reject bad
+ alignment.
+
2010-02-25 Doug Evans <dje@sebabeach.org>
* cgen.c: Whitespace fixes.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 7ef0f44..d172042 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -14662,12 +14662,13 @@ do_neon_ld_st_interleave (void)
{
case 64: alignbits = 1; break;
case 128:
- if (NEON_REGLIST_LENGTH (inst.operands[0].imm) == 3)
+ if (NEON_REGLIST_LENGTH (inst.operands[0].imm) != 2
+ && NEON_REGLIST_LENGTH (inst.operands[0].imm) != 4)
goto bad_alignment;
alignbits = 2;
break;
case 256:
- if (NEON_REGLIST_LENGTH (inst.operands[0].imm) == 3)
+ if (NEON_REGLIST_LENGTH (inst.operands[0].imm) != 4)
goto bad_alignment;
alignbits = 3;
break;
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 439e734..3dc4271 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2010-02-26 Jie Zhang <jie@codesourcery.com>
+
+ * gas/arm/neon-ldst-align-bad.d: New test.
+ * gas/arm/neon-ldst-align-bad.l: New test.
+ * gas/arm/neon-ldst-align-bad.s: New test.
+
2010-02-25 Wu Zhangjin <wuzhangjin@gmail.com>
* gas/mips/loongson-2f-2.s: New test of -mfix-loongson2f-nop.
diff --git a/gas/testsuite/gas/arm/neon-ldst-align-bad.d b/gas/testsuite/gas/arm/neon-ldst-align-bad.d
new file mode 100644
index 0000000..28ebb9d
--- /dev/null
+++ b/gas/testsuite/gas/arm/neon-ldst-align-bad.d
@@ -0,0 +1,3 @@
+# name: Bad alignment in Advanced SIMD Neon instructions
+# as: -mfpu=neon
+# error-output: neon-ldst-align-bad.l
diff --git a/gas/testsuite/gas/arm/neon-ldst-align-bad.l b/gas/testsuite/gas/arm/neon-ldst-align-bad.l
new file mode 100644
index 0000000..89cafba
--- /dev/null
+++ b/gas/testsuite/gas/arm/neon-ldst-align-bad.l
@@ -0,0 +1,3 @@
+[^:]*: Assembler messages:
+[^:]*:1: Error: bad alignment -- `vld1.8 {d0},\[r0,:128\]'
+[^:]*:2: Error: bad alignment -- `vld1.8 {q0},\[r0,:256\]'
diff --git a/gas/testsuite/gas/arm/neon-ldst-align-bad.s b/gas/testsuite/gas/arm/neon-ldst-align-bad.s
new file mode 100644
index 0000000..0efb0a0
--- /dev/null
+++ b/gas/testsuite/gas/arm/neon-ldst-align-bad.s
@@ -0,0 +1,2 @@
+vld1.8 {d0}, [r0, :128]
+vld1.8 {q0}, [r0, :256]