summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Berg <michael_c_berg@apple.com>2018-05-18 19:30:49 +0000
committerMichael Berg <michael_c_berg@apple.com>2018-05-18 19:30:49 +0000
commit1fa76cc3ea1f3361dd4e6091ac6a5c0e833de6a4 (patch)
treeefa70f6f6aeaeb6c61910c32aeeeed6a59cfb2e9
parent08099c7edd38d47c01002a066a6b9f9f6468aafc (diff)
downloadbcm5719-llvm-1fa76cc3ea1f3361dd4e6091ac6a5c0e833de6a4.tar.gz
bcm5719-llvm-1fa76cc3ea1f3361dd4e6091ac6a5c0e833de6a4.zip
adding baseline fp fold tests for unsafe on and off
llvm-svn: 332756
-rw-r--r--llvm/test/CodeGen/X86/fp-fold.ll62
1 files changed, 62 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/fp-fold.ll b/llvm/test/CodeGen/X86/fp-fold.ll
new file mode 100644
index 00000000000..955187d8e18
--- /dev/null
+++ b/llvm/test/CodeGen/X86/fp-fold.ll
@@ -0,0 +1,62 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefixes=ANY,STRICT
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown -enable-unsafe-fp-math | FileCheck %s --check-prefixes=ANY,UNSAFE
+
+; This is duplicated from tests for InstSimplify. If you're
+; adding something here, you should probably add it there too.
+
+define float @fadd_zero_1(float %x) {
+; ANY-LABEL: fadd_zero_1:
+; ANY: # %bb.0:
+; ANY-NEXT: retq
+ %r = fadd nsz float %x, 0.0
+ ret float %r
+}
+
+define float @fadd_zero_2(float %x) {
+; ANY-LABEL: fadd_zero_2:
+; ANY: # %bb.0:
+; ANY-NEXT: retq
+ %r = fadd nsz float %x, -0.0
+ ret float %r
+}
+
+define float @fsub_zero_1(float %x) {
+; UNSAFE-LABEL: fsub_zero_1:
+; UNSAFE: # %bb.0:
+; UNSAFE-NEXT: retq
+ %r = fsub float %x, 0.0
+ ret float %r
+}
+
+define float @fsub_zero_2(float %x) {
+; UNSAFE-LABEL: fsub_zero_2:
+; UNSAFE: # %bb.0:
+; UNSAFE-NEXT: retq
+ %r = fsub float %x, -0.0
+ ret float %r
+}
+
+; TODO: handle x*0 for fast flags the same as unsafe
+define float @fmul_zero(float %x) {
+; STRICT-LABEL: fmul_zero:
+; STRICT: # %bb.0:
+; STRICT: xorps %xmm1, %xmm1
+; STRICT: mulss %xmm1, %xmm0
+; STRICT-NEXT: retq
+;
+; UNSAFE-LABEL: fmul_zero:
+; UNSAFE: # %bb.0:
+; UNSAFE: xorps %xmm0, %xmm0
+; UNSAFE-NEXT: retq
+ %r = fmul nnan nsz float %x, 0.0
+ ret float %r
+}
+
+define float @fmul_one(float %x) {
+; ANY-LABEL: fmul_one:
+; ANY: # %bb.0:
+; ANY-NEXT: retq
+ %r = fmul float %x, 1.0
+ ret float %r
+}
OpenPOWER on IntegriCloud