@@ -135,35 +135,35 @@ define double @test_simplify_33(double %x) {
135
135
136
136
; pow(x, 16.5) with double
137
137
define double @test_simplify_16_5 (double %x ) {
138
- ; CHECK32 -LABEL: @test_simplify_16_5(
139
- ; CHECK32 -NEXT: [[SQRT:%.*]] = call fast double @llvm.sqrt.f64(double [[X:%.*]])
140
- ; CHECK32 -NEXT: [[POWI :%.*]] = call fast double @llvm.powi.f64.i32(double [[X]], i32 16)
141
- ; CHECK32 -NEXT: [[TMP1 :%.*]] = fmul fast double [[POWI ]], [[SQRT]]
142
- ; CHECK32 -NEXT: ret double [[TMP1 ]]
143
- ;
144
- ; CHECK16 -LABEL: @test_simplify_16_5(
145
- ; CHECK16 -NEXT: [[SQRT:%.*]] = call fast double @llvm.sqrt.f64(double [[X:%.*]])
146
- ; CHECK16 -NEXT: [[POWI :%.*]] = call fast double @llvm.powi.f64.i16(double [[X]], i16 16)
147
- ; CHECK16 -NEXT: [[TMP1 :%.*]] = fmul fast double [[POWI ]], [[SQRT]]
148
- ; CHECK16 -NEXT: ret double [[TMP1 ]]
138
+ ; CHECKI32 -LABEL: @test_simplify_16_5(
139
+ ; CHECKI32 -NEXT: [[SQRT:%.*]] = call fast double @llvm.sqrt.f64(double [[X:%.*]])
140
+ ; CHECKI32 -NEXT: [[TMP1 :%.*]] = call fast double @llvm.powi.f64.i32(double [[X]], i32 16)
141
+ ; CHECKI32 -NEXT: [[TMP2 :%.*]] = fmul fast double [[TMP1 ]], [[SQRT]]
142
+ ; CHECKI32 -NEXT: ret double [[TMP2 ]]
143
+ ;
144
+ ; CHECKI16 -LABEL: @test_simplify_16_5(
145
+ ; CHECKI16 -NEXT: [[SQRT:%.*]] = call fast double @llvm.sqrt.f64(double [[X:%.*]])
146
+ ; CHECKI16 -NEXT: [[TMP1 :%.*]] = call fast double @llvm.powi.f64.i16(double [[X]], i16 16)
147
+ ; CHECKI16 -NEXT: [[TMP2 :%.*]] = fmul fast double [[TMP1 ]], [[SQRT]]
148
+ ; CHECKI16 -NEXT: ret double [[TMP2 ]]
149
149
;
150
150
%1 = call fast double @llvm.pow.f64 (double %x , double 1 .650000e+01 )
151
151
ret double %1
152
152
}
153
153
154
154
; pow(x, -16.5) with double
155
155
define double @test_simplify_neg_16_5 (double %x ) {
156
- ; CHECK32 -LABEL: @test_simplify_neg_16_5(
157
- ; CHECK32 -NEXT: [[SQRT:%.*]] = call fast double @llvm.sqrt.f64(double [[X:%.*]])
158
- ; CHECK32 -NEXT: [[POWI :%.*]] = call fast double @llvm.powi.f64.i32(double [[X]], i32 -17)
159
- ; CHECK32 -NEXT: [[TMP1 :%.*]] = fmul fast double [[POWI ]], [[SQRT]]
160
- ; CHECK32 -NEXT: ret double [[TMP1 ]]
161
- ;
162
- ; CHECK16 -LABEL: @test_simplify_neg_16_5(
163
- ; CHECK16 -NEXT: [[SQRT:%.*]] = call fast double @llvm.sqrt.f64(double [[X:%.*]])
164
- ; CHECK16 -NEXT: [[POWI :%.*]] = call fast double @llvm.powi.f64.i16(double [[X]], i16 -17)
165
- ; CHECK16 -NEXT: [[TMP1 :%.*]] = fmul fast double [[POWI ]], [[SQRT]]
166
- ; CHECK16 -NEXT: ret double [[TMP1 ]]
156
+ ; CHECKI32 -LABEL: @test_simplify_neg_16_5(
157
+ ; CHECKI32 -NEXT: [[SQRT:%.*]] = call fast double @llvm.sqrt.f64(double [[X:%.*]])
158
+ ; CHECKI32 -NEXT: [[TMP1 :%.*]] = call fast double @llvm.powi.f64.i32(double [[X]], i32 -17)
159
+ ; CHECKI32 -NEXT: [[TMP2 :%.*]] = fmul fast double [[TMP1 ]], [[SQRT]]
160
+ ; CHECKI32 -NEXT: ret double [[TMP2 ]]
161
+ ;
162
+ ; CHECKI16 -LABEL: @test_simplify_neg_16_5(
163
+ ; CHECKI16 -NEXT: [[SQRT:%.*]] = call fast double @llvm.sqrt.f64(double [[X:%.*]])
164
+ ; CHECKI16 -NEXT: [[TMP1 :%.*]] = call fast double @llvm.powi.f64.i16(double [[X]], i16 -17)
165
+ ; CHECKI16 -NEXT: [[TMP2 :%.*]] = fmul fast double [[TMP1 ]], [[SQRT]]
166
+ ; CHECKI16 -NEXT: ret double [[TMP2 ]]
167
167
;
168
168
%1 = call fast double @llvm.pow.f64 (double %x , double -1 .650000e+01 )
169
169
ret double %1
@@ -202,47 +202,53 @@ define double @test_simplify_neg_0_5_libcall(double %x) {
202
202
203
203
; pow(x, -8.5) with float
204
204
define float @test_simplify_neg_8_5 (float %x ) {
205
- ; CHECK32-LABEL: @test_simplify_neg_8_5(
206
- ; CHECK32-NEXT: [[SQRT:%.*]] = call fast float @llvm.sqrt.f32(float [[X:%.*]])
207
- ; CHECK32-NEXT: [[POWI:%.*]] = call fast float @llvm.powi.f32.i32(float [[X]], i32 -9)
208
- ; CHECK32-NEXT: [[TMP1:%.*]] = fmul fast float [[POWI]], [[SQRT]]
209
- ;
210
- ; CHECK16-LABEL: @test_simplify_neg_8_5(
211
- ; CHECK16-NEXT: [[SQRT:%.*]] = call fast float @llvm.sqrt.f32(float [[X:%.*]])
212
- ; CHECK16-NEXT: [[POWI:%.*]] = call fast float @llvm.powi.f32.i16(float [[X]], i16 -9)
213
- ; CHECK16-NEXT: [[TMP1:%.*]] = fmul fast float [[POWI]], [[SQRT]]
205
+ ; CHECKI32-LABEL: @test_simplify_neg_8_5(
206
+ ; CHECKI32-NEXT: [[SQRT:%.*]] = call fast float @llvm.sqrt.f32(float [[X:%.*]])
207
+ ; CHECKI32-NEXT: [[TMP1:%.*]] = call fast float @llvm.powi.f32.i32(float [[X]], i32 -9)
208
+ ; CHECKI32-NEXT: [[TMP2:%.*]] = fmul fast float [[TMP1]], [[SQRT]]
209
+ ; CHECKI32-NEXT: ret float [[TMP2]]
210
+ ;
211
+ ; CHECKI16-LABEL: @test_simplify_neg_8_5(
212
+ ; CHECKI16-NEXT: [[SQRT:%.*]] = call fast float @llvm.sqrt.f32(float [[X:%.*]])
213
+ ; CHECKI16-NEXT: [[TMP1:%.*]] = call fast float @llvm.powi.f32.i16(float [[X]], i16 -9)
214
+ ; CHECKI16-NEXT: [[TMP2:%.*]] = fmul fast float [[TMP1]], [[SQRT]]
215
+ ; CHECKI16-NEXT: ret float [[TMP2]]
214
216
;
215
217
%1 = call fast float @llvm.pow.f32 (float %x , float -0 .850000e+01 )
216
218
ret float %1
217
219
}
218
220
219
221
; pow(x, 7.5) with <2 x double>
220
222
define <2 x double > @test_simplify_7_5 (<2 x double > %x ) {
221
- ; CHECK32-LABEL: @test_simplify_7_5(
222
- ; CHECK32-NEXT: [[SQRT:%.*]] = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> [[X:%.*]])
223
- ; CHECK32-NEXT: [[POWI:%.*]] = call fast <2 x double> @llvm.powi.v2f64.i32(<2 x double> [[X]], i32 7)
224
- ; CHECK32-NEXT: [[TMP1:%.*]] = fmul fast <2 x double> [[POWI]], [[SQRT]]
225
- ;
226
- ; CHECK16-LABEL: @test_simplify_7_5(
227
- ; CHECK16-NEXT: [[SQRT:%.*]] = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> [[X:%.*]])
228
- ; CHECK16-NEXT: [[POWI:%.*]] = call fast <2 x double> @llvm.powi.v2f64.i16(<2 x double> [[X]], i16 7)
229
- ; CHECK16-NEXT: [[TMP1:%.*]] = fmul fast <2 x double> [[POWI]], [[SQRT]]
223
+ ; CHECKI32-LABEL: @test_simplify_7_5(
224
+ ; CHECKI32-NEXT: [[SQRT:%.*]] = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> [[X:%.*]])
225
+ ; CHECKI32-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.powi.v2f64.i32(<2 x double> [[X]], i32 7)
226
+ ; CHECKI32-NEXT: [[TMP2:%.*]] = fmul fast <2 x double> [[TMP1]], [[SQRT]]
227
+ ; CHECKI32-NEXT: ret <2 x double> [[TMP2]]
228
+ ;
229
+ ; CHECKI16-LABEL: @test_simplify_7_5(
230
+ ; CHECKI16-NEXT: [[SQRT:%.*]] = call fast <2 x double> @llvm.sqrt.v2f64(<2 x double> [[X:%.*]])
231
+ ; CHECKI16-NEXT: [[TMP1:%.*]] = call fast <2 x double> @llvm.powi.v2f64.i16(<2 x double> [[X]], i16 7)
232
+ ; CHECKI16-NEXT: [[TMP2:%.*]] = fmul fast <2 x double> [[TMP1]], [[SQRT]]
233
+ ; CHECKI16-NEXT: ret <2 x double> [[TMP2]]
230
234
;
231
235
%1 = call fast <2 x double > @llvm.pow.v2f64 (<2 x double > %x , <2 x double > <double 7 .500000e+00 , double 7 .500000e+00 >)
232
236
ret <2 x double > %1
233
237
}
234
238
235
239
; pow(x, 3.5) with <4 x float>
236
240
define <4 x float > @test_simplify_3_5 (<4 x float > %x ) {
237
- ; CHECK32-LABEL: @test_simplify_3_5(
238
- ; CHECK32-NEXT: [[SQRT:%.*]] = call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> [[X:%.*]])
239
- ; CHECK32-NEXT: [[POWI:%.*]] = call fast <4 x float> @llvm.powi.v4f32.i32(<4 x float> [[X]], i32 3)
240
- ; CHECK32-NEXT: [[TMP1:%.*]] = fmul fast <4 x float> [[POWI]], [[SQRT]]
241
- ;
242
- ; CHECK16-LABEL: @test_simplify_3_5(
243
- ; CHECK16-NEXT: [[SQRT:%.*]] = call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> [[X:%.*]])
244
- ; CHECK16-NEXT: [[POWI:%.*]] = call fast <4 x float> @llvm.powi.v4f32.i16(<4 x float> [[X]], i16 3)
245
- ; CHECK16-NEXT: [[TMP1:%.*]] = fmul fast <4 x float> [[POWI]], [[SQRT]]
241
+ ; CHECKI32-LABEL: @test_simplify_3_5(
242
+ ; CHECKI32-NEXT: [[SQRT:%.*]] = call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> [[X:%.*]])
243
+ ; CHECKI32-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.powi.v4f32.i32(<4 x float> [[X]], i32 3)
244
+ ; CHECKI32-NEXT: [[TMP2:%.*]] = fmul fast <4 x float> [[TMP1]], [[SQRT]]
245
+ ; CHECKI32-NEXT: ret <4 x float> [[TMP2]]
246
+ ;
247
+ ; CHECKI16-LABEL: @test_simplify_3_5(
248
+ ; CHECKI16-NEXT: [[SQRT:%.*]] = call fast <4 x float> @llvm.sqrt.v4f32(<4 x float> [[X:%.*]])
249
+ ; CHECKI16-NEXT: [[TMP1:%.*]] = call fast <4 x float> @llvm.powi.v4f32.i16(<4 x float> [[X]], i16 3)
250
+ ; CHECKI16-NEXT: [[TMP2:%.*]] = fmul fast <4 x float> [[TMP1]], [[SQRT]]
251
+ ; CHECKI16-NEXT: ret <4 x float> [[TMP2]]
246
252
;
247
253
%1 = call fast <4 x float > @llvm.pow.v4f32 (<4 x float > %x , <4 x float > <float 3 .500000e+00 , float 3 .500000e+00 , float 3 .500000e+00 , float 3 .500000e+00 >)
248
254
ret <4 x float > %1
0 commit comments