ARM: fix vmov.i64 immediate validity check

Typo meant we were only checking the low byte (repeatedly).

llvm-svn: 275437
This commit is contained in:
Tim Northover 2016-07-14 17:04:34 +00:00
parent 69b4675180
commit 6003fb58df
2 changed files with 4 additions and 1 deletions

View File

@ -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;
}

View File

@ -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