@@ -136,12 +136,11 @@ define fp128 @powl_exp2l_not_fast(fp128 %x, fp128 %y) {
136
136
ret fp128 %pow
137
137
}
138
138
139
- ; TODO: exp10() is not widely enabled by many targets yet.
140
-
141
139
define float @powf_exp10f (float %x , float %y ) {
142
- ; CHECK-LABEL: @powf_exp10f(
143
- ; CHECK-NEXT: [[CALL:%.*]] = call fast float @exp10f(float [[X:%.*]]) #[[ATTR1:[0-9]+]]
144
- ; CHECK-NEXT: [[POW:%.*]] = call fast float @llvm.pow.f32(float [[CALL]], float [[Y:%.*]])
140
+ ; CHECK-LABEL: define float @powf_exp10f(
141
+ ; CHECK-SAME: float [[X:%.*]], float [[Y:%.*]]) {
142
+ ; CHECK-NEXT: [[CALL:%.*]] = call fast float @exp10f(float [[X]]) #[[ATTR1:[0-9]+]]
143
+ ; CHECK-NEXT: [[POW:%.*]] = call fast float @llvm.pow.f32(float [[CALL]], float [[Y]])
145
144
; CHECK-NEXT: ret float [[POW]]
146
145
;
147
146
%call = call fast float @exp10f (float %x ) nounwind readnone
@@ -150,9 +149,10 @@ define float @powf_exp10f(float %x, float %y) {
150
149
}
151
150
152
151
define double @pow_exp10 (double %x , double %y ) {
153
- ; CHECK-LABEL: @pow_exp10(
154
- ; CHECK-NEXT: [[CALL:%.*]] = call fast double @exp10(double [[X:%.*]]) #[[ATTR1]]
155
- ; CHECK-NEXT: [[POW:%.*]] = call fast double @llvm.pow.f64(double [[CALL]], double [[Y:%.*]])
152
+ ; CHECK-LABEL: define double @pow_exp10(
153
+ ; CHECK-SAME: double [[X:%.*]], double [[Y:%.*]]) {
154
+ ; CHECK-NEXT: [[CALL:%.*]] = call fast double @exp10(double [[X]]) #[[ATTR1]]
155
+ ; CHECK-NEXT: [[POW:%.*]] = call fast double @llvm.pow.f64(double [[CALL]], double [[Y]])
156
156
; CHECK-NEXT: ret double [[POW]]
157
157
;
158
158
%call = call fast double @exp10 (double %x ) nounwind readnone
@@ -161,9 +161,10 @@ define double @pow_exp10(double %x, double %y) {
161
161
}
162
162
163
163
define fp128 @pow_exp10l (fp128 %x , fp128 %y ) {
164
- ; CHECK-LABEL: @pow_exp10l(
165
- ; CHECK-NEXT: [[CALL:%.*]] = call fast fp128 @exp10l(fp128 [[X:%.*]]) #[[ATTR1]]
166
- ; CHECK-NEXT: [[POW:%.*]] = call fast fp128 @llvm.pow.f128(fp128 [[CALL]], fp128 [[Y:%.*]])
164
+ ; CHECK-LABEL: define fp128 @pow_exp10l(
165
+ ; CHECK-SAME: fp128 [[X:%.*]], fp128 [[Y:%.*]]) {
166
+ ; CHECK-NEXT: [[CALL:%.*]] = call fast fp128 @exp10l(fp128 [[X]]) #[[ATTR1]]
167
+ ; CHECK-NEXT: [[POW:%.*]] = call fast fp128 @llvm.pow.f128(fp128 [[CALL]], fp128 [[Y]])
167
168
; CHECK-NEXT: ret fp128 [[POW]]
168
169
;
169
170
%call = call fast fp128 @exp10l (fp128 %x ) nounwind readnone
@@ -255,10 +256,10 @@ define double @pow_ok_base3(double %e) {
255
256
}
256
257
257
258
define double @pow_ok_ten_base (double %e ) {
258
- ; CHECK-LABEL: @pow_ok_ten_base(
259
- ; CHECK-NEXT: [[MUL:%.*]] = fmul nnan ninf afn double [[E:%.*]], 0x400A934F{{.*}}
260
- ; CHECK-NEXT: [[EXP2 :%.*]] = tail call nnan ninf afn double @exp2 (double [[MUL ]])
261
- ; CHECK-NEXT: ret double [[EXP2 ]]
259
+ ; CHECK-LABEL: define double @pow_ok_ten_base(
260
+ ; CHECK-SAME: double [[E:%.*]]) {
261
+ ; CHECK-NEXT: [[EXP10 :%.*]] = tail call nnan ninf afn double @exp10 (double [[E ]])
262
+ ; CHECK-NEXT: ret double [[EXP10 ]]
262
263
;
263
264
%call = tail call afn nnan ninf double @pow (double 1 .000000e+01 , double %e )
264
265
ret double %call
@@ -305,10 +306,10 @@ define float @powf_ok_base3(float %e) {
305
306
}
306
307
307
308
define float @powf_ok_ten_base (float %e ) {
308
- ; CHECK-LABEL: @powf_ok_ten_base(
309
- ; CHECK-NEXT: [[MUL:%.*]] = fmul nnan ninf afn float [[E:%.*]], 0x400A934{{.*}}
310
- ; CHECK-NEXT: [[EXP2F :%.*]] = tail call nnan ninf afn float @exp2f (float [[MUL ]])
311
- ; CHECK-NEXT: ret float [[EXP2F ]]
309
+ ; CHECK-LABEL: define float @powf_ok_ten_base(
310
+ ; CHECK-SAME: float [[E:%.*]]) {
311
+ ; CHECK-NEXT: [[EXP10F :%.*]] = tail call nnan ninf afn float @exp10f (float [[E ]])
312
+ ; CHECK-NEXT: ret float [[EXP10F ]]
312
313
;
313
314
%call = tail call afn nnan ninf float @powf (float 1 .000000e+01 , float %e )
314
315
ret float %call
0 commit comments