forked from OSchip/llvm-project
[AVX-512] Give priority to EVEX encoded scalar FMA instructions when we have FMA, AVX512 and no VLX.
We were giving priority if VLX was enabled. llvm-svn: 298046
This commit is contained in:
parent
c1338f21ed
commit
6a1290a0fd
|
@ -192,12 +192,14 @@ multiclass fma3s_forms<bits<8> opc132, bits<8> opc213, bits<8> opc231,
|
||||||
string OpStr, string PackTy, string Suff,
|
string OpStr, string PackTy, string Suff,
|
||||||
SDNode OpNode, RegisterClass RC,
|
SDNode OpNode, RegisterClass RC,
|
||||||
X86MemOperand x86memop> {
|
X86MemOperand x86memop> {
|
||||||
|
let Predicates = [HasFMA, NoAVX512] in {
|
||||||
defm NAME#132#Suff : fma3s_rm<opc132, !strconcat(OpStr, "132", PackTy),
|
defm NAME#132#Suff : fma3s_rm<opc132, !strconcat(OpStr, "132", PackTy),
|
||||||
x86memop, RC>;
|
x86memop, RC>;
|
||||||
defm NAME#213#Suff : fma3s_rm<opc213, !strconcat(OpStr, "213", PackTy),
|
defm NAME#213#Suff : fma3s_rm<opc213, !strconcat(OpStr, "213", PackTy),
|
||||||
x86memop, RC, OpNode>;
|
x86memop, RC, OpNode>;
|
||||||
defm NAME#231#Suff : fma3s_rm<opc231, !strconcat(OpStr, "231", PackTy),
|
defm NAME#231#Suff : fma3s_rm<opc231, !strconcat(OpStr, "231", PackTy),
|
||||||
x86memop, RC>;
|
x86memop, RC>;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// The FMA 213 form is created for lowering of scalar FMA intrinscis
|
// The FMA 213 form is created for lowering of scalar FMA intrinscis
|
||||||
|
|
|
@ -46,7 +46,7 @@ define float @test_f32(float %a, float %b, float %c) #0 {
|
||||||
;
|
;
|
||||||
; AVX51264-LABEL: test_f32:
|
; AVX51264-LABEL: test_f32:
|
||||||
; AVX51264: ## BB#0: ## %entry
|
; AVX51264: ## BB#0: ## %entry
|
||||||
; AVX51264-NEXT: vfmadd213ss %xmm2, %xmm1, %xmm0 ## encoding: [0xc4,0xe2,0x71,0xa9,0xc2]
|
; AVX51264-NEXT: vfmadd213ss %xmm2, %xmm1, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0x71,0xa9,0xc2]
|
||||||
; AVX51264-NEXT: retq ## encoding: [0xc3]
|
; AVX51264-NEXT: retq ## encoding: [0xc3]
|
||||||
entry:
|
entry:
|
||||||
%call = call float @llvm.fma.f32(float %a, float %b, float %c)
|
%call = call float @llvm.fma.f32(float %a, float %b, float %c)
|
||||||
|
@ -91,7 +91,7 @@ define double @test_f64(double %a, double %b, double %c) #0 {
|
||||||
;
|
;
|
||||||
; AVX51264-LABEL: test_f64:
|
; AVX51264-LABEL: test_f64:
|
||||||
; AVX51264: ## BB#0: ## %entry
|
; AVX51264: ## BB#0: ## %entry
|
||||||
; AVX51264-NEXT: vfmadd213sd %xmm2, %xmm1, %xmm0 ## encoding: [0xc4,0xe2,0xf1,0xa9,0xc2]
|
; AVX51264-NEXT: vfmadd213sd %xmm2, %xmm1, %xmm0 ## EVEX TO VEX Compression encoding: [0xc4,0xe2,0xf1,0xa9,0xc2]
|
||||||
; AVX51264-NEXT: retq ## encoding: [0xc3]
|
; AVX51264-NEXT: retq ## encoding: [0xc3]
|
||||||
entry:
|
entry:
|
||||||
%call = call double @llvm.fma.f64(double %a, double %b, double %c)
|
%call = call double @llvm.fma.f64(double %a, double %b, double %c)
|
||||||
|
|
Loading…
Reference in New Issue