summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorJohn Brawn <john.brawn@arm.com>2017-04-20 10:10:10 +0000
committerJohn Brawn <john.brawn@arm.com>2017-04-20 10:10:10 +0000
commitdcf037a6f07ef63e74e547cce5f29d758536735c (patch)
tree4b8551563ffffea87c2e53b3937c0fb6b09d0cd0 /llvm/test
parent7c6dee9f1629442cb4e6697cc911974998fed75e (diff)
downloadbcm5719-llvm-dcf037a6f07ef63e74e547cce5f29d758536735c.tar.gz
bcm5719-llvm-dcf037a6f07ef63e74e547cce5f29d758536735c.zip
[AArch64] Fix handling of integer fp immediates
When an integer is used as an fp immediate we're failing to check the return value of getFP64Imm, so invalid values are silently permitted. Fix this by merging together the integer and real handling. llvm-svn: 300828
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/MC/AArch64/basic-a64-diagnostics.s14
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/test/MC/AArch64/basic-a64-diagnostics.s b/llvm/test/MC/AArch64/basic-a64-diagnostics.s
index 80e32c48673..ca513327400 100644
--- a/llvm/test/MC/AArch64/basic-a64-diagnostics.s
+++ b/llvm/test/MC/AArch64/basic-a64-diagnostics.s
@@ -1781,12 +1781,20 @@
;; Exponent too large
fmov d3, #0.0625
fmov s2, #32.0
+ fmov s2, #32
+ fmov v0.4s, #-32
// CHECK-ERROR: error: expected compatible register or floating-point constant
// CHECK-ERROR-NEXT: fmov d3, #0.0625
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
// CHECK-ERROR-NEXT: fmov s2, #32.0
// CHECK-ERROR-NEXT: ^
+// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
+// CHECK-ERROR-NEXT: fmov s2, #32
+// CHECK-ERROR-NEXT: ^
+// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant
+// CHECK-ERROR-NEXT: fmov v0.4s, #-32
+// CHECK-ERROR-NEXT: ^
;; Fraction too precise
fmov s9, #1.03125
@@ -1798,6 +1806,12 @@
// CHECK-ERROR-NEXT: fmov s28, #1.96875
// CHECK-ERROR-NEXT: ^
+ ;; Explicitly encoded value too large
+ fmov s15, #0x100
+// CHECK-ERROR: error: encoded floating point value out of range
+// CHECK-ERROR-NEXT: fmov s15, #0x100
+// CHECK-ERROR-NEXT: ^
+
;; No particular reason, but a striking omission
fmov d0, #0.0
// CHECK-ERROR-AARCH64: error: expected compatible register or floating-point constant
OpenPOWER on IntegriCloud