aboutsummaryrefslogtreecommitdiffstats
path: root/test/Assembler/2002-04-07-HexFloatConstants.llx
diff options
context:
space:
mode:
Diffstat (limited to 'test/Assembler/2002-04-07-HexFloatConstants.llx')
-rw-r--r--test/Assembler/2002-04-07-HexFloatConstants.llx19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/Assembler/2002-04-07-HexFloatConstants.llx b/test/Assembler/2002-04-07-HexFloatConstants.llx
new file mode 100644
index 0000000..543c869
--- /dev/null
+++ b/test/Assembler/2002-04-07-HexFloatConstants.llx
@@ -0,0 +1,19 @@
+; This testcase checks to make sure that the assembler can handle floating
+; point constants in IEEE hex format. This also checks that the disassembler,
+; when presented with a FP constant that cannot be represented exactly in
+; exponential form, outputs it correctly in hex format. This is a distillation
+; of the bug that was causing the Olden Health benchmark to output incorrect
+; results!
+;
+; RUN: llvm-upgrade < %s | llvm-as | opt -constprop | llvm-dis > %t.1
+; RUN: llvm-upgrade < %s | llvm-as | llvm-dis | llvm-as | opt -constprop | \
+; RUN: llvm-dis > %t.2
+; RUN: diff %t.1 %t.2
+
+implementation
+
+double "test"()
+begin
+ %tmp = mul double 72.0e100, 0x427f4000
+ ret double %tmp
+end