forked from OSchip/llvm-project
AVX-512: blank lines, duplicated tests, no functional changes
see comments http://reviews.llvm.org/D6835 llvm-svn: 233528
This commit is contained in:
parent
98de9d6360
commit
d8fda62247
|
@ -3743,16 +3743,19 @@ multiclass avx512_fma3p_rm<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
|
|||
|
||||
defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
|
||||
(ins _.RC:$src2, _.ScalarMemOp:$src3),
|
||||
OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"), !strconcat("$src2, ${src3}", _.BroadcastStr ),
|
||||
(OpNode _.RC:$src1, _.RC:$src2,(_.VT (X86VBroadcast (_.ScalarLdFrag addr:$src3))))>,
|
||||
OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"),
|
||||
!strconcat("$src2, ${src3}", _.BroadcastStr ),
|
||||
(OpNode _.RC:$src1,
|
||||
_.RC:$src2,(_.VT (X86VBroadcast (_.ScalarLdFrag addr:$src3))))>,
|
||||
AVX512FMA3Base, EVEX_B;
|
||||
}
|
||||
} // Constraints = "$src1 = $dst"
|
||||
|
||||
let Constraints = "$src1 = $dst" in {
|
||||
// Omitting the parameter OpNode (= null_frag) disables ISel pattern matching.
|
||||
multiclass avx512_fma3_round_rrb<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
|
||||
SDPatternOperator OpNode> {
|
||||
multiclass avx512_fma3_round_rrb<bits<8> opc, string OpcodeStr,
|
||||
X86VectorVTInfo _,
|
||||
SDPatternOperator OpNode> {
|
||||
defm rb: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
|
||||
(ins _.RC:$src2, _.RC:$src3, AVX512RC:$rc),
|
||||
OpcodeStr, "$rc, $src3, $src2", "$src2, $src3, $rc",
|
||||
|
@ -3772,7 +3775,6 @@ multiclass avx512_fma3p_forms<bits<8> opc213, bits<8> opc231,
|
|||
SDPatternOperator OpNode> {
|
||||
defm v213r : avx512_fma3p_rm<opc213, !strconcat(OpcodeStr, "213", VTI.Suffix),
|
||||
VTI, OpNode>, EVEX_CD8<VTI.EltSize, CD8VF>;
|
||||
|
||||
defm v231r : avx512_fma3p_rm<opc231, !strconcat(OpcodeStr, "231", VTI.Suffix),
|
||||
VTI>, EVEX_CD8<VTI.EltSize, CD8VF>;
|
||||
}
|
||||
|
@ -3794,12 +3796,14 @@ let ExeDomain = SSEPackedSingle in {
|
|||
let ExeDomain = SSEPackedDouble in {
|
||||
defm NAME##PDZ : avx512_fma3p_forms<opc213, opc231, OpcodeStr,
|
||||
v8f64_info, OpNode>,
|
||||
avx512_fma3_round_forms<opc213, OpcodeStr,
|
||||
v8f64_info, OpNodeRnd>, EVEX_V512, VEX_W;
|
||||
avx512_fma3_round_forms<opc213, OpcodeStr, v8f64_info,
|
||||
OpNodeRnd>, EVEX_V512, VEX_W;
|
||||
defm NAME##PDZ256 : avx512_fma3p_forms<opc213, opc231, OpcodeStr,
|
||||
v4f64x_info, OpNode>, EVEX_V256, VEX_W;
|
||||
v4f64x_info, OpNode>,
|
||||
EVEX_V256, VEX_W;
|
||||
defm NAME##PDZ128 : avx512_fma3p_forms<opc213, opc231, OpcodeStr,
|
||||
v2f64x_info, OpNode>, EVEX_V128, VEX_W;
|
||||
v2f64x_info, OpNode>,
|
||||
EVEX_V128, VEX_W;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3830,26 +3834,29 @@ multiclass avx512_fma3p_m132<bits<8> opc, string OpcodeStr, SDNode OpNode,
|
|||
}
|
||||
} // Constraints = "$src1 = $dst"
|
||||
|
||||
|
||||
multiclass avx512_fma3p_m132_f<bits<8> opc,
|
||||
string OpcodeStr,
|
||||
SDNode OpNode> {
|
||||
multiclass avx512_fma3p_m132_f<bits<8> opc, string OpcodeStr, SDNode OpNode> {
|
||||
|
||||
let ExeDomain = SSEPackedSingle in {
|
||||
defm NAME##PSZ : avx512_fma3p_m132<opc, OpcodeStr##ps,
|
||||
OpNode,v16f32_info>, EVEX_V512, EVEX_CD8<32, CD8VF>;
|
||||
OpNode,v16f32_info>, EVEX_V512,
|
||||
EVEX_CD8<32, CD8VF>;
|
||||
defm NAME##PSZ256 : avx512_fma3p_m132<opc, OpcodeStr##ps,
|
||||
OpNode, v8f32x_info>, EVEX_V256, EVEX_CD8<32, CD8VF>;
|
||||
OpNode, v8f32x_info>, EVEX_V256,
|
||||
EVEX_CD8<32, CD8VF>;
|
||||
defm NAME##PSZ128 : avx512_fma3p_m132<opc, OpcodeStr##ps,
|
||||
OpNode, v4f32x_info>, EVEX_V128, EVEX_CD8<32, CD8VF>;
|
||||
OpNode, v4f32x_info>, EVEX_V128,
|
||||
EVEX_CD8<32, CD8VF>;
|
||||
}
|
||||
let ExeDomain = SSEPackedDouble in {
|
||||
defm NAME##PDZ : avx512_fma3p_m132<opc, OpcodeStr##pd,
|
||||
OpNode, v8f64_info>, EVEX_V512, VEX_W, EVEX_CD8<32, CD8VF>;
|
||||
OpNode, v8f64_info>, EVEX_V512,
|
||||
VEX_W, EVEX_CD8<32, CD8VF>;
|
||||
defm NAME##PDZ256 : avx512_fma3p_m132<opc, OpcodeStr##pd,
|
||||
OpNode, v4f64x_info>, EVEX_V256, VEX_W, EVEX_CD8<32, CD8VF>;
|
||||
OpNode, v4f64x_info>, EVEX_V256,
|
||||
VEX_W, EVEX_CD8<32, CD8VF>;
|
||||
defm NAME##PDZ128 : avx512_fma3p_m132<opc, OpcodeStr##pd,
|
||||
OpNode, v2f64x_info>, EVEX_V128, VEX_W, EVEX_CD8<32, CD8VF>;
|
||||
OpNode, v2f64x_info>, EVEX_V128,
|
||||
VEX_W, EVEX_CD8<32, CD8VF>;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3860,7 +3867,6 @@ defm VFMSUBADD132 : avx512_fma3p_m132_f<0x97, "vfmsubadd132", X86Fmsubadd>;
|
|||
defm VFNMADD132 : avx512_fma3p_m132_f<0x9C, "vfnmadd132", X86Fnmadd>;
|
||||
defm VFNMSUB132 : avx512_fma3p_m132_f<0x9E, "vfnmsub132", X86Fnmsub>;
|
||||
|
||||
|
||||
// Scalar FMA
|
||||
let Constraints = "$src1 = $dst" in {
|
||||
multiclass avx512_fma3s_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
|
||||
|
@ -3883,7 +3889,6 @@ multiclass avx512_fma3s_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
|
|||
(OpVT (OpNode RC:$src2, RC:$src1,
|
||||
(mem_frag addr:$src3))))]>;
|
||||
}
|
||||
|
||||
} // Constraints = "$src1 = $dst"
|
||||
|
||||
defm VFMADDSSZ : avx512_fma3s_rm<0xA9, "vfmadd213ss", X86Fmadd, FR32X,
|
||||
|
@ -3920,6 +3925,7 @@ let hasSideEffects = 0 in {
|
|||
EVEX_4V;
|
||||
} // hasSideEffects = 0
|
||||
}
|
||||
|
||||
let Predicates = [HasAVX512] in {
|
||||
defm VCVTSI2SSZ : avx512_vcvtsi<0x2A, GR32, FR32X, i32mem, "cvtsi2ss{l}">,
|
||||
XS, VEX_LIG, EVEX_CD8<32, CD8VT1>;
|
||||
|
|
|
@ -1,50 +1,8 @@
|
|||
; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=knl --show-mc-encoding | FileCheck %s
|
||||
|
||||
define <16 x float> @test_x86_vfmadd_ps_z(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2) {
|
||||
; CHECK-LABEL: test_x86_vfmadd_ps_z
|
||||
; CHECK: vfmadd213ps %zmm
|
||||
%res = call <16 x float> @llvm.x86.fma.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 -1, i32 4) nounwind
|
||||
ret <16 x float> %res
|
||||
}
|
||||
declare <16 x float> @llvm.x86.fma.mask.vfmadd.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) nounwind readnone
|
||||
|
||||
define <16 x float> @test_mask_vfmadd_ps(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask) {
|
||||
; CHECK-LABEL: test_mask_vfmadd_ps
|
||||
; CHECK: vfmadd213ps %zmm
|
||||
%res = call <16 x float> @llvm.x86.fma.mask.vfmadd.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask, i32 4) nounwind
|
||||
ret <16 x float> %res
|
||||
}
|
||||
|
||||
define <8 x double> @test_x86_vfmadd_pd_z(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
|
||||
; CHECK-LABEL: test_x86_vfmadd_pd_z
|
||||
; CHECK: vfmadd213pd %zmm
|
||||
%res = call <8 x double> @llvm.x86.fma.mask.vfmadd.pd.512(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2, i8 -1, i32 4) nounwind
|
||||
ret <8 x double> %res
|
||||
}
|
||||
|
||||
define <8 x double> @test_mask_fmadd_pd(<8 x double> %a, <8 x double> %b, <8 x double> %c, i8 %mask) {
|
||||
; CHECK-LABEL: test_mask_fmadd_pd:
|
||||
; CHECK: vfmadd213pd %zmm2, %zmm1, %zmm0 {%k1} ## encoding: [0x62,0xf2,0xf5,0x49,0xa8,0xc2]
|
||||
%res = call <8 x double> @llvm.x86.fma.mask.vfmadd.pd.512(<8 x double> %a, <8 x double> %b, <8 x double> %c, i8 %mask, i32 4)
|
||||
ret <8 x double> %res
|
||||
}
|
||||
|
||||
declare <16 x float> @llvm.x86.fma.mask.vfmadd.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
|
||||
declare <8 x double> @llvm.x86.fma.mask.vfmadd.pd.512(<8 x double>, <8 x double>, <8 x double>, i8, i32)
|
||||
|
||||
define <16 x float> @test_x86_vfmsubps_z(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2) {
|
||||
; CHECK-LABEL: test_x86_vfmsubps_z
|
||||
; CHECK: vfmsub213ps %zmm
|
||||
%res = call <16 x float> @llvm.x86.fma.mask.vfmsub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 -1, i32 4) nounwind
|
||||
ret <16 x float> %res
|
||||
}
|
||||
declare <16 x float> @llvm.x86.fma.mask.vfmsub.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32) nounwind readnone
|
||||
|
||||
define <16 x float> @test_mask_vfmsub_ps(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask) {
|
||||
; CHECK-LABEL: test_mask_vfmsub_ps
|
||||
; CHECK: vfmsub213ps %zmm
|
||||
%res = call <16 x float> @llvm.x86.fma.mask.vfmsub.ps.512(<16 x float> %a0, <16 x float> %a1, <16 x float> %a2, i16 %mask, i32 4) nounwind
|
||||
ret <16 x float> %res
|
||||
}
|
||||
declare <16 x float> @llvm.x86.fma.mask.vfmsub.ps.512(<16 x float>, <16 x float>, <16 x float>, i16, i32)
|
||||
|
||||
define <8 x double> @test_x86_vfmsubpd_z(<8 x double> %a0, <8 x double> %a1, <8 x double> %a2) {
|
||||
; CHECK-LABEL: test_x86_vfmsubpd_z
|
||||
|
|
Loading…
Reference in New Issue