[InstSimplify] regenerate checks using a script
I didn't notice any significant changes in the actual checks here;
all of these tests already used FileCheck, so a script can batch
update them in one shot.
This commit is just to show the value of automating this process:
We have uniform formatting as opposed to a mish-mash of check
structure that changes based on individual prefs and the current
fashion. This makes it simpler to update when we find a bug or
make an enhancement.
llvm-svn: 264457
diff --git a/llvm/test/Transforms/InstSimplify/fast-math.ll b/llvm/test/Transforms/InstSimplify/fast-math.ll
index c499af3..f4f3123 100644
--- a/llvm/test/Transforms/InstSimplify/fast-math.ll
+++ b/llvm/test/Transforms/InstSimplify/fast-math.ll
@@ -1,44 +1,60 @@
+; NOTE: Assertions have been autogenerated by update_test_checks.py
; RUN: opt < %s -instsimplify -S | FileCheck %s
;; x * 0 ==> 0 when no-nans and no-signed-zero
-; CHECK: mul_zero_1
define float @mul_zero_1(float %a) {
+; CHECK-LABEL: @mul_zero_1(
+; CHECK: ret float 0.000000e+00
+;
%b = fmul nsz nnan float %a, 0.0
-; CHECK: ret float 0.0
ret float %b
}
-; CHECK: mul_zero_2
+
define float @mul_zero_2(float %a) {
+; CHECK-LABEL: @mul_zero_2(
+; CHECK: ret float 0.000000e+00
+;
%b = fmul fast float 0.0, %a
-; CHECK: ret float 0.0
ret float %b
}
;; x * 0 =/=> 0 when there could be nans or -0
-; CHECK: no_mul_zero_1
define float @no_mul_zero_1(float %a) {
+; CHECK-LABEL: @no_mul_zero_1(
+; CHECK: [[B:%.*]] = fmul nsz float %a, 0.000000e+00
+; CHECK-NEXT: ret float [[B]]
+;
%b = fmul nsz float %a, 0.0
-; CHECK: ret float %b
ret float %b
}
-; CHECK: no_mul_zero_2
+
define float @no_mul_zero_2(float %a) {
+; CHECK-LABEL: @no_mul_zero_2(
+; CHECK: [[B:%.*]] = fmul nnan float %a, 0.000000e+00
+; CHECK-NEXT: ret float [[B]]
+;
%b = fmul nnan float %a, 0.0
-; CHECK: ret float %b
ret float %b
}
-; CHECK: no_mul_zero_3
+
define float @no_mul_zero_3(float %a) {
+; CHECK-LABEL: @no_mul_zero_3(
+; CHECK: [[B:%.*]] = fmul float %a, 0.000000e+00
+; CHECK-NEXT: ret float [[B]]
+;
%b = fmul float %a, 0.0
-; CHECK: ret float %b
ret float %b
}
; fadd [nnan ninf] X, (fsub [nnan ninf] 0, X) ==> 0
; where nnan and ninf have to occur at least once somewhere in this
; expression
-; CHECK: fadd_fsub_0
define float @fadd_fsub_0(float %a) {
+; CHECK-LABEL: @fadd_fsub_0(
+; CHECK: [[NOFOLD:%.*]] = fsub float 0.000000e+00, %a
+; CHECK-NEXT: [[NO_ZERO:%.*]] = fadd nnan float [[NOFOLD]], %a
+; CHECK-NEXT: ret float [[NO_ZERO]]
+;
; X + -X ==> 0
%t1 = fsub nnan ninf float 0.0, %a
%zero1 = fadd nnan ninf float %t1, %a
@@ -53,9 +69,7 @@
%zero4 = fadd nnan ninf float %t4, %a
; Dont fold this
-; CHECK: %nofold = fsub float 0.0
%nofold = fsub float 0.0, %a
-; CHECK: %no_zero = fadd nnan float %nofold, %a
%no_zero = fadd nnan float %nofold, %a
; Coalesce the folded zeros
@@ -66,118 +80,126 @@
; Should get folded
%ret = fadd nsz float %no_zero, %zero7
-; CHECK: ret float %no_zero
ret float %ret
}
; fsub nnan x, x ==> 0.0
-; CHECK-LABEL: @fsub_x_x(
define float @fsub_x_x(float %a) {
+; CHECK-LABEL: @fsub_x_x(
+; CHECK: [[NO_ZERO1:%.*]] = fsub ninf float %a, %a
+; CHECK-NEXT: [[NO_ZERO2:%.*]] = fsub float %a, %a
+; CHECK-NEXT: [[NO_ZERO:%.*]] = fadd float [[NO_ZERO1:%.*]], [[NO_ZERO2:%.*]]
+; CHECK-NEXT: ret float [[NO_ZERO]]
+;
; X - X ==> 0
%zero1 = fsub nnan float %a, %a
; Dont fold
-; CHECK: %no_zero1 = fsub
%no_zero1 = fsub ninf float %a, %a
-; CHECK: %no_zero2 = fsub
%no_zero2 = fsub float %a, %a
-; CHECK: %no_zero = fadd
%no_zero = fadd float %no_zero1, %no_zero2
; Should get folded
%ret = fadd nsz float %no_zero, %zero1
-; CHECK: ret float %no_zero
ret float %ret
}
; fsub nsz 0.0, (fsub 0.0, X) ==> X
-; CHECK-LABEL: @fsub_0_0_x(
define float @fsub_0_0_x(float %a) {
+; CHECK-LABEL: @fsub_0_0_x(
+; CHECK: ret float %a
+;
%t1 = fsub float 0.0, %a
%ret = fsub nsz float 0.0, %t1
-
-; CHECK: ret float %a
ret float %ret
}
; fadd nsz X, 0 ==> X
-; CHECK-LABEL: @nofold_fadd_x_0(
define float @nofold_fadd_x_0(float %a) {
+; CHECK-LABEL: @nofold_fadd_x_0(
+; CHECK: [[NO_ZERO1:%.*]] = fadd ninf float %a, 0.000000e+00
+; CHECK-NEXT: [[NO_ZERO2:%.*]] = fadd nnan float %a, 0.000000e+00
+; CHECK-NEXT: [[NO_ZERO:%.*]] = fadd float [[NO_ZERO1:%.*]], [[NO_ZERO2:%.*]]
+; CHECK-NEXT: ret float [[NO_ZERO]]
+;
; Dont fold
-; CHECK: %no_zero1 = fadd
%no_zero1 = fadd ninf float %a, 0.0
-; CHECK: %no_zero2 = fadd
%no_zero2 = fadd nnan float %a, 0.0
-; CHECK: %no_zero = fadd
%no_zero = fadd float %no_zero1, %no_zero2
-
-; CHECK: ret float %no_zero
ret float %no_zero
}
; fdiv nsz nnan 0, X ==> 0
define double @fdiv_zero_by_x(double %X) {
; CHECK-LABEL: @fdiv_zero_by_x(
+; CHECK: ret double 0.000000e+00
+;
; 0 / X -> 0
%r = fdiv nnan nsz double 0.0, %X
ret double %r
-; CHECK: ret double 0
}
define float @fdiv_self(float %f) {
+; CHECK-LABEL: @fdiv_self(
+; CHECK: ret float 1.000000e+00
+;
%div = fdiv nnan float %f, %f
ret float %div
-; CHECK-LABEL: fdiv_self
-; CHECK: ret float 1.000000e+00
}
define float @fdiv_self_invalid(float %f) {
+; CHECK-LABEL: @fdiv_self_invalid(
+; CHECK: [[DIV:%.*]] = fdiv float %f, %f
+; CHECK-NEXT: ret float [[DIV]]
+;
%div = fdiv float %f, %f
ret float %div
-; CHECK-LABEL: fdiv_self_invalid
-; CHECK: %div = fdiv float %f, %f
-; CHECK-NEXT: ret float %div
}
define float @fdiv_neg1(float %f) {
+; CHECK-LABEL: @fdiv_neg1(
+; CHECK: ret float -1.000000e+00
+;
%neg = fsub fast float -0.000000e+00, %f
%div = fdiv nnan float %neg, %f
ret float %div
-; CHECK-LABEL: fdiv_neg1
-; CHECK: ret float -1.000000e+00
}
define float @fdiv_neg2(float %f) {
+; CHECK-LABEL: @fdiv_neg2(
+; CHECK: ret float -1.000000e+00
+;
%neg = fsub fast float 0.000000e+00, %f
%div = fdiv nnan float %neg, %f
ret float %div
-; CHECK-LABEL: fdiv_neg2
-; CHECK: ret float -1.000000e+00
}
define float @fdiv_neg_invalid(float %f) {
+; CHECK-LABEL: @fdiv_neg_invalid(
+; CHECK: [[NEG:%.*]] = fsub fast float -0.000000e+00, %f
+; CHECK-NEXT: [[DIV:%.*]] = fdiv float [[NEG]], %f
+; CHECK-NEXT: ret float [[DIV]]
+;
%neg = fsub fast float -0.000000e+00, %f
%div = fdiv float %neg, %f
ret float %div
-; CHECK-LABEL: fdiv_neg_invalid
-; CHECK: %neg = fsub fast float -0.000000e+00, %f
-; CHECK-NEXT: %div = fdiv float %neg, %f
-; CHECK-NEXT: ret float %div
}
define float @fdiv_neg_swapped1(float %f) {
+; CHECK-LABEL: @fdiv_neg_swapped1(
+; CHECK: ret float -1.000000e+00
+;
%neg = fsub float -0.000000e+00, %f
%div = fdiv nnan float %f, %neg
ret float %div
-; CHECK-LABEL: fdiv_neg_swapped1
-; CHECK: ret float -1.000000e+00
}
define float @fdiv_neg_swapped2(float %f) {
+; CHECK-LABEL: @fdiv_neg_swapped2(
+; CHECK: ret float -1.000000e+00
+;
%neg = fsub float 0.000000e+00, %f
%div = fdiv nnan float %f, %neg
ret float %div
-; CHECK-LABEL: fdiv_neg_swapped2
-; CHECK: ret float -1.000000e+00
}