summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/ConstProp
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2019-09-11 14:01:11 +0000
committerSanjay Patel <spatel@rotateright.com>2019-09-11 14:01:11 +0000
commit9c4047f26724b89f5ae9f5915a044d65afb9477b (patch)
tree59bd5fe090e326e19baab15916155ee5f6ebb24e /llvm/test/Transforms/ConstProp
parent1761f6fc42d45c85cf7f784e53c61c84111094b0 (diff)
downloadbcm5719-llvm-9c4047f26724b89f5ae9f5915a044d65afb9477b.tar.gz
bcm5719-llvm-9c4047f26724b89f5ae9f5915a044d65afb9477b.zip
[ConstProp] move test file from InstSimplify; NFC
These are constant folding tests; there is no code directly in InstSimplify for this. llvm-svn: 371619
Diffstat (limited to 'llvm/test/Transforms/ConstProp')
-rw-r--r--llvm/test/Transforms/ConstProp/fma.ll126
1 files changed, 126 insertions, 0 deletions
diff --git a/llvm/test/Transforms/ConstProp/fma.ll b/llvm/test/Transforms/ConstProp/fma.ll
new file mode 100644
index 00000000000..f7d172fc482
--- /dev/null
+++ b/llvm/test/Transforms/ConstProp/fma.ll
@@ -0,0 +1,126 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -constprop -S < %s | FileCheck %s
+
+; Fixes PR20832
+; Make sure that we correctly fold a fused multiply-add where operands
+; are all finite constants and addend is zero.
+
+declare double @llvm.fma.f64(double, double, double)
+
+
+define double @PR20832() {
+; CHECK-LABEL: @PR20832(
+; CHECK-NEXT: ret double 5.600000e+01
+;
+ %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double 0.0)
+ ret double %1
+}
+
+; Test builtin fma with all finite non-zero constants.
+define double @test_all_finite() {
+; CHECK-LABEL: @test_all_finite(
+; CHECK-NEXT: ret double 6.100000e+01
+;
+ %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double 5.0)
+ ret double %1
+}
+
+; Test builtin fma with a +/-NaN addend.
+define double @test_NaN_addend() {
+; CHECK-LABEL: @test_NaN_addend(
+; CHECK-NEXT: ret double 0x7FF8000000000000
+;
+ %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double 0x7FF8000000000000)
+ ret double %1
+}
+
+define double @test_NaN_addend_2() {
+; CHECK-LABEL: @test_NaN_addend_2(
+; CHECK-NEXT: ret double 0xFFF8000000000000
+;
+ %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double 0xFFF8000000000000)
+ ret double %1
+}
+
+; Test builtin fma with a +/-Inf addend.
+define double @test_Inf_addend() {
+; CHECK-LABEL: @test_Inf_addend(
+; CHECK-NEXT: ret double 0x7FF0000000000000
+;
+ %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double 0x7FF0000000000000)
+ ret double %1
+}
+
+define double @test_Inf_addend_2() {
+; CHECK-LABEL: @test_Inf_addend_2(
+; CHECK-NEXT: ret double 0xFFF0000000000000
+;
+ %1 = call double @llvm.fma.f64(double 7.0, double 8.0, double 0xFFF0000000000000)
+ ret double %1
+}
+
+; Test builtin fma with one of the operands to the multiply being +/-NaN.
+define double @test_NaN_1() {
+; CHECK-LABEL: @test_NaN_1(
+; CHECK-NEXT: ret double 0x7FF8000000000000
+;
+ %1 = call double @llvm.fma.f64(double 0x7FF8000000000000, double 8.0, double 0.0)
+ ret double %1
+}
+
+define double @test_NaN_2() {
+; CHECK-LABEL: @test_NaN_2(
+; CHECK-NEXT: ret double 0x7FF8000000000000
+;
+ %1 = call double @llvm.fma.f64(double 7.0, double 0x7FF8000000000000, double 0.0)
+ ret double %1
+}
+
+define double @test_NaN_3() {
+; CHECK-LABEL: @test_NaN_3(
+; CHECK-NEXT: ret double 0x7FF8000000000000
+;
+ %1 = call double @llvm.fma.f64(double 0xFFF8000000000000, double 8.0, double 0.0)
+ ret double %1
+}
+
+define double @test_NaN_4() {
+; CHECK-LABEL: @test_NaN_4(
+; CHECK-NEXT: ret double 0x7FF8000000000000
+;
+ %1 = call double @llvm.fma.f64(double 7.0, double 0xFFF8000000000000, double 0.0)
+ ret double %1
+}
+
+; Test builtin fma with one of the operands to the multiply being +/-Inf.
+define double @test_Inf_1() {
+; CHECK-LABEL: @test_Inf_1(
+; CHECK-NEXT: ret double 0x7FF0000000000000
+;
+ %1 = call double @llvm.fma.f64(double 0x7FF0000000000000, double 8.0, double 0.0)
+ ret double %1
+}
+
+define double @test_Inf_2() {
+; CHECK-LABEL: @test_Inf_2(
+; CHECK-NEXT: ret double 0x7FF0000000000000
+;
+ %1 = call double @llvm.fma.f64(double 7.0, double 0x7FF0000000000000, double 0.0)
+ ret double %1
+}
+
+define double @test_Inf_3() {
+; CHECK-LABEL: @test_Inf_3(
+; CHECK-NEXT: ret double 0xFFF0000000000000
+;
+ %1 = call double @llvm.fma.f64(double 0xFFF0000000000000, double 8.0, double 0.0)
+ ret double %1
+}
+
+define double @test_Inf_4() {
+; CHECK-LABEL: @test_Inf_4(
+; CHECK-NEXT: ret double 0xFFF0000000000000
+;
+ %1 = call double @llvm.fma.f64(double 7.0, double 0xFFF0000000000000, double 0.0)
+ ret double %1
+}
OpenPOWER on IntegriCloud