1
- ; NOTE: Assertions have been autogenerated by update_test_checks.py
1
+ ; NOTE: Assertions have been autogenerated by utils/ update_test_checks.py
2
2
; RUN: opt < %s -instsimplify -S | FileCheck %s
3
3
4
4
;; x * 0 ==> 0 when no-nans and no-signed-zero
5
5
define float @mul_zero_1 (float %a ) {
6
6
; CHECK-LABEL: @mul_zero_1(
7
- ; CHECK: ret float 0.000000e+00
7
+ ; CHECK-NEXT: ret float 0.000000e+00
8
8
;
9
9
%b = fmul nsz nnan float %a , 0 .0
10
10
ret float %b
11
11
}
12
12
13
13
define float @mul_zero_2 (float %a ) {
14
14
; CHECK-LABEL: @mul_zero_2(
15
- ; CHECK: ret float 0.000000e+00
15
+ ; CHECK-NEXT: ret float 0.000000e+00
16
16
;
17
17
%b = fmul fast float 0 .0 , %a
18
18
ret float %b
@@ -21,7 +21,7 @@ define float @mul_zero_2(float %a) {
21
21
;; x * 0 =/=> 0 when there could be nans or -0
22
22
define float @no_mul_zero_1 (float %a ) {
23
23
; CHECK-LABEL: @no_mul_zero_1(
24
- ; CHECK: [[B:%.*]] = fmul nsz float %a , 0.000000e+00
24
+ ; CHECK-NEXT : [[B:%.*]] = fmul nsz float [[A:%.*]] , 0.000000e+00
25
25
; CHECK-NEXT: ret float [[B]]
26
26
;
27
27
%b = fmul nsz float %a , 0 .0
@@ -30,7 +30,7 @@ define float @no_mul_zero_1(float %a) {
30
30
31
31
define float @no_mul_zero_2 (float %a ) {
32
32
; CHECK-LABEL: @no_mul_zero_2(
33
- ; CHECK: [[B:%.*]] = fmul nnan float %a , 0.000000e+00
33
+ ; CHECK-NEXT : [[B:%.*]] = fmul nnan float [[A:%.*]] , 0.000000e+00
34
34
; CHECK-NEXT: ret float [[B]]
35
35
;
36
36
%b = fmul nnan float %a , 0 .0
@@ -39,7 +39,7 @@ define float @no_mul_zero_2(float %a) {
39
39
40
40
define float @no_mul_zero_3 (float %a ) {
41
41
; CHECK-LABEL: @no_mul_zero_3(
42
- ; CHECK: [[B:%.*]] = fmul float %a , 0.000000e+00
42
+ ; CHECK-NEXT : [[B:%.*]] = fmul float [[A:%.*]] , 0.000000e+00
43
43
; CHECK-NEXT: ret float [[B]]
44
44
;
45
45
%b = fmul float %a , 0 .0
@@ -51,8 +51,8 @@ define float @no_mul_zero_3(float %a) {
51
51
; expression
52
52
define float @fadd_fsub_0 (float %a ) {
53
53
; CHECK-LABEL: @fadd_fsub_0(
54
- ; CHECK: [[NOFOLD:%.*]] = fsub float 0.000000e+00, %a
55
- ; CHECK-NEXT: [[NO_ZERO:%.*]] = fadd nnan float [[NOFOLD]], %a
54
+ ; CHECK-NEXT : [[NOFOLD:%.*]] = fsub float 0.000000e+00, [[A:%.*]]
55
+ ; CHECK-NEXT: [[NO_ZERO:%.*]] = fadd nnan float [[NOFOLD]], [[A]]
56
56
; CHECK-NEXT: ret float [[NO_ZERO]]
57
57
;
58
58
; X + -X ==> 0
@@ -86,9 +86,9 @@ define float @fadd_fsub_0(float %a) {
86
86
; fsub nnan x, x ==> 0.0
87
87
define float @fsub_x_x (float %a ) {
88
88
; CHECK-LABEL: @fsub_x_x(
89
- ; CHECK: [[NO_ZERO1:%.*]] = fsub ninf float %a, %a
90
- ; CHECK-NEXT: [[NO_ZERO2:%.*]] = fsub float %a, %a
91
- ; CHECK-NEXT: [[NO_ZERO:%.*]] = fadd float [[NO_ZERO1:%.* ]], [[NO_ZERO2:%.* ]]
89
+ ; CHECK-NEXT : [[NO_ZERO1:%.*]] = fsub ninf float [[A:%.*]], [[A]]
90
+ ; CHECK-NEXT: [[NO_ZERO2:%.*]] = fsub float [[A]], [[A]]
91
+ ; CHECK-NEXT: [[NO_ZERO:%.*]] = fadd float [[NO_ZERO1]], [[NO_ZERO2]]
92
92
; CHECK-NEXT: ret float [[NO_ZERO]]
93
93
;
94
94
; X - X ==> 0
@@ -108,7 +108,7 @@ define float @fsub_x_x(float %a) {
108
108
; fsub nsz 0.0, (fsub 0.0, X) ==> X
109
109
define float @fsub_0_0_x (float %a ) {
110
110
; CHECK-LABEL: @fsub_0_0_x(
111
- ; CHECK: ret float %a
111
+ ; CHECK-NEXT : ret float [[A:%.*]]
112
112
;
113
113
%t1 = fsub float 0 .0 , %a
114
114
%ret = fsub nsz float 0 .0 , %t1
@@ -118,9 +118,9 @@ define float @fsub_0_0_x(float %a) {
118
118
; fadd nsz X, 0 ==> X
119
119
define float @nofold_fadd_x_0 (float %a ) {
120
120
; CHECK-LABEL: @nofold_fadd_x_0(
121
- ; CHECK: [[NO_ZERO1:%.*]] = fadd ninf float %a , 0.000000e+00
122
- ; CHECK-NEXT: [[NO_ZERO2:%.*]] = fadd nnan float %a , 0.000000e+00
123
- ; CHECK-NEXT: [[NO_ZERO:%.*]] = fadd float [[NO_ZERO1:%.* ]], [[NO_ZERO2:%.* ]]
121
+ ; CHECK-NEXT : [[NO_ZERO1:%.*]] = fadd ninf float [[A:%.*]] , 0.000000e+00
122
+ ; CHECK-NEXT: [[NO_ZERO2:%.*]] = fadd nnan float [[A]] , 0.000000e+00
123
+ ; CHECK-NEXT: [[NO_ZERO:%.*]] = fadd float [[NO_ZERO1]], [[NO_ZERO2]]
124
124
; CHECK-NEXT: ret float [[NO_ZERO]]
125
125
;
126
126
; Dont fold
@@ -133,7 +133,7 @@ define float @nofold_fadd_x_0(float %a) {
133
133
; fdiv nsz nnan 0, X ==> 0
134
134
define double @fdiv_zero_by_x (double %X ) {
135
135
; CHECK-LABEL: @fdiv_zero_by_x(
136
- ; CHECK: ret double 0.000000e+00
136
+ ; CHECK-NEXT: ret double 0.000000e+00
137
137
;
138
138
; 0 / X -> 0
139
139
%r = fdiv nnan nsz double 0 .0 , %X
@@ -142,15 +142,15 @@ define double @fdiv_zero_by_x(double %X) {
142
142
143
143
define float @fdiv_self (float %f ) {
144
144
; CHECK-LABEL: @fdiv_self(
145
- ; CHECK: ret float 1.000000e+00
145
+ ; CHECK-NEXT: ret float 1.000000e+00
146
146
;
147
147
%div = fdiv nnan float %f , %f
148
148
ret float %div
149
149
}
150
150
151
151
define float @fdiv_self_invalid (float %f ) {
152
152
; CHECK-LABEL: @fdiv_self_invalid(
153
- ; CHECK: [[DIV:%.*]] = fdiv float %f, %f
153
+ ; CHECK-NEXT : [[DIV:%.*]] = fdiv float [[F:%.*]], [[F]]
154
154
; CHECK-NEXT: ret float [[DIV]]
155
155
;
156
156
%div = fdiv float %f , %f
@@ -159,7 +159,7 @@ define float @fdiv_self_invalid(float %f) {
159
159
160
160
define float @fdiv_neg1 (float %f ) {
161
161
; CHECK-LABEL: @fdiv_neg1(
162
- ; CHECK: ret float -1.000000e+00
162
+ ; CHECK-NEXT: ret float -1.000000e+00
163
163
;
164
164
%neg = fsub fast float -0 .000000e+00 , %f
165
165
%div = fdiv nnan float %neg , %f
@@ -168,7 +168,7 @@ define float @fdiv_neg1(float %f) {
168
168
169
169
define float @fdiv_neg2 (float %f ) {
170
170
; CHECK-LABEL: @fdiv_neg2(
171
- ; CHECK: ret float -1.000000e+00
171
+ ; CHECK-NEXT: ret float -1.000000e+00
172
172
;
173
173
%neg = fsub fast float 0 .000000e+00 , %f
174
174
%div = fdiv nnan float %neg , %f
@@ -177,8 +177,8 @@ define float @fdiv_neg2(float %f) {
177
177
178
178
define float @fdiv_neg_invalid (float %f ) {
179
179
; CHECK-LABEL: @fdiv_neg_invalid(
180
- ; CHECK: [[NEG:%.*]] = fsub fast float -0.000000e+00, %f
181
- ; CHECK-NEXT: [[DIV:%.*]] = fdiv float [[NEG]], %f
180
+ ; CHECK-NEXT : [[NEG:%.*]] = fsub fast float -0.000000e+00, [[F:%.*]]
181
+ ; CHECK-NEXT: [[DIV:%.*]] = fdiv float [[NEG]], [[F]]
182
182
; CHECK-NEXT: ret float [[DIV]]
183
183
;
184
184
%neg = fsub fast float -0 .000000e+00 , %f
@@ -188,7 +188,7 @@ define float @fdiv_neg_invalid(float %f) {
188
188
189
189
define float @fdiv_neg_swapped1 (float %f ) {
190
190
; CHECK-LABEL: @fdiv_neg_swapped1(
191
- ; CHECK: ret float -1.000000e+00
191
+ ; CHECK-NEXT: ret float -1.000000e+00
192
192
;
193
193
%neg = fsub float -0 .000000e+00 , %f
194
194
%div = fdiv nnan float %f , %neg
@@ -197,7 +197,7 @@ define float @fdiv_neg_swapped1(float %f) {
197
197
198
198
define float @fdiv_neg_swapped2 (float %f ) {
199
199
; CHECK-LABEL: @fdiv_neg_swapped2(
200
- ; CHECK: ret float -1.000000e+00
200
+ ; CHECK-NEXT: ret float -1.000000e+00
201
201
;
202
202
%neg = fsub float 0 .000000e+00 , %f
203
203
%div = fdiv nnan float %f , %neg
0 commit comments