aboutsummaryrefslogtreecommitdiff
path: root/target/arm/translate-neon.c
diff options
context:
space:
mode:
Diffstat (limited to 'target/arm/translate-neon.c')
-rw-r--r--target/arm/translate-neon.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/target/arm/translate-neon.c b/target/arm/translate-neon.c
index 3854dd3..384604c 100644
--- a/target/arm/translate-neon.c
+++ b/target/arm/translate-neon.c
@@ -657,21 +657,24 @@ static bool trans_VLDST_single(DisasContext *s, arg_VLDST_single *a)
/* Catch the UNDEF cases. This is unavoidably a bit messy. */
switch (nregs) {
case 1:
+ if (a->stride != 1) {
+ return false;
+ }
if (((a->align & (1 << a->size)) != 0) ||
(a->size == 2 && (a->align == 1 || a->align == 2))) {
return false;
}
break;
- case 3:
- if ((a->align & 1) != 0) {
- return false;
- }
- /* fall through */
case 2:
if (a->size == 2 && (a->align & 2) != 0) {
return false;
}
break;
+ case 3:
+ if (a->align != 0) {
+ return false;
+ }
+ break;
case 4:
if (a->size == 2 && a->align == 3) {
return false;