summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2016-07-14 17:04:34 +0000
committerTim Northover <tnorthover@apple.com>2016-07-14 17:04:34 +0000
commit6003fb58df1d099fec6c50c5ec0b83c4dddfe4bd (patch)
tree66ff0061cdc193e9b438223f7929389351584cda
parent69b46751804a8ac162fd219188cadddc6721ca44 (diff)
downloadbcm5719-llvm-6003fb58df1d099fec6c50c5ec0b83c4dddfe4bd.tar.gz
bcm5719-llvm-6003fb58df1d099fec6c50c5ec0b83c4dddfe4bd.zip
ARM: fix vmov.i64 immediate validity check
Typo meant we were only checking the low byte (repeatedly). llvm-svn: 275437
-rw-r--r--llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp2
-rw-r--r--llvm/test/MC/ARM/fp-const-errors.s3
2 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
index d368e2349b3..7d49302f9a9 100644
--- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -1731,7 +1731,7 @@ public:
if (!CE) return false;
uint64_t Value = CE->getValue();
// i64 value with each byte being either 0 or 0xff.
- for (unsigned i = 0; i < 8; ++i)
+ for (unsigned i = 0; i < 8; ++i, Value >>= 8)
if ((Value & 0xff) != 0 && (Value & 0xff) != 0xff) return false;
return true;
}
diff --git a/llvm/test/MC/ARM/fp-const-errors.s b/llvm/test/MC/ARM/fp-const-errors.s
index 2a68ddbe727..a91799ba21d 100644
--- a/llvm/test/MC/ARM/fp-const-errors.s
+++ b/llvm/test/MC/ARM/fp-const-errors.s
@@ -20,3 +20,6 @@ fconsts s1, #1.0
fconstd d2, #1.0
@ CHECK: error: invalid floating point immediate
+
+vmov.i64 d0, 0x8000000000000000
+@ CHECK: error: invalid operand for instruction
OpenPOWER on IntegriCloud