@@ -194,8 +194,7 @@ define float @fmuladd_unary_fneg_x_unary_fneg_y(float %x, float %y, float %z) {
194
194
195
195
define float @fmuladd_fneg_x_fneg_y_fast (float %x , float %y , float %z ) {
196
196
; CHECK-LABEL: @fmuladd_fneg_x_fneg_y_fast(
197
- ; CHECK-NEXT: [[TMP1:%.*]] = fmul fast float [[X:%.*]], [[Y:%.*]]
198
- ; CHECK-NEXT: [[FMULADD:%.*]] = fadd fast float [[TMP1]], [[Z:%.*]]
197
+ ; CHECK-NEXT: [[FMULADD:%.*]] = call fast float @llvm.fmuladd.f32(float [[X:%.*]], float [[Y:%.*]], float [[Z:%.*]])
199
198
; CHECK-NEXT: ret float [[FMULADD]]
200
199
;
201
200
%x.fneg = fsub float -0 .0 , %x
@@ -206,8 +205,7 @@ define float @fmuladd_fneg_x_fneg_y_fast(float %x, float %y, float %z) {
206
205
207
206
define float @fmuladd_unary_fneg_x_unary_fneg_y_fast (float %x , float %y , float %z ) {
208
207
; CHECK-LABEL: @fmuladd_unary_fneg_x_unary_fneg_y_fast(
209
- ; CHECK-NEXT: [[TMP1:%.*]] = fmul fast float [[X:%.*]], [[Y:%.*]]
210
- ; CHECK-NEXT: [[FMULADD:%.*]] = fadd fast float [[TMP1]], [[Z:%.*]]
208
+ ; CHECK-NEXT: [[FMULADD:%.*]] = call fast float @llvm.fmuladd.f32(float [[X:%.*]], float [[Y:%.*]], float [[Z:%.*]])
211
209
; CHECK-NEXT: ret float [[FMULADD]]
212
210
;
213
211
%x.fneg = fneg float %x
@@ -285,8 +283,7 @@ define float @fmuladd_fabs_x_fabs_x(float %x, float %z) {
285
283
286
284
define float @fmuladd_fabs_x_fabs_x_fast (float %x , float %z ) {
287
285
; CHECK-LABEL: @fmuladd_fabs_x_fabs_x_fast(
288
- ; CHECK-NEXT: [[TMP1:%.*]] = fmul fast float [[X:%.*]], [[X]]
289
- ; CHECK-NEXT: [[FMULADD:%.*]] = fadd fast float [[TMP1]], [[Z:%.*]]
286
+ ; CHECK-NEXT: [[FMULADD:%.*]] = call fast float @llvm.fmuladd.f32(float [[X:%.*]], float [[X]], float [[Z:%.*]])
290
287
; CHECK-NEXT: ret float [[FMULADD]]
291
288
;
292
289
%x.fabs = call float @llvm.fabs.f32 (float %x )
@@ -312,10 +309,10 @@ define float @fma_k_y_z_fast(float %y, float %z) {
312
309
ret float %fma
313
310
}
314
311
312
+ ; Treat fmuladd like an fma intrinsic
315
313
define float @fmuladd_k_y_z_fast (float %y , float %z ) {
316
314
; CHECK-LABEL: @fmuladd_k_y_z_fast(
317
- ; CHECK-NEXT: [[TMP1:%.*]] = fmul fast float [[Y:%.*]], 4.000000e+00
318
- ; CHECK-NEXT: [[FMULADD:%.*]] = fadd fast float [[TMP1]], [[Z:%.*]]
315
+ ; CHECK-NEXT: [[FMULADD:%.*]] = call fast float @llvm.fmuladd.f32(float [[Y:%.*]], float 4.000000e+00, float [[Z:%.*]])
319
316
; CHECK-NEXT: ret float [[FMULADD]]
320
317
;
321
318
%fmuladd = call fast float @llvm.fmuladd.f32 (float 4 .0 , float %y , float %z )
0 commit comments