diff options
author | Craig Topper <craig.topper@gmail.com> | 2016-05-01 05:57:06 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2016-05-01 05:57:06 +0000 |
commit | db290664f622483eaed65e2573d8f7a74a16b6c7 (patch) | |
tree | 1e6876c5ec7c3a001da7b41f8eb41947a8bde159 | |
parent | f643fc10d1915dd687d9f1add0b2f74a03ccd628 (diff) | |
download | bcm5719-llvm-db290664f622483eaed65e2573d8f7a74a16b6c7.tar.gz bcm5719-llvm-db290664f622483eaed65e2573d8f7a74a16b6c7.zip |
[AVX512] Make sure 128/256-bit DQI versions of VAND/VANDN/VOR/VXOR are also marked as requiring VLX.
llvm-svn: 268186
-rw-r--r-- | llvm/lib/Target/X86/X86InstrAVX512.td | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td index 579bd424bd4..9b0217e31c6 100644 --- a/llvm/lib/Target/X86/X86InstrAVX512.td +++ b/llvm/lib/Target/X86/X86InstrAVX512.td @@ -3710,16 +3710,18 @@ multiclass avx512_fp_sae_packed<bits<8> opc, string OpcodeStr, SDNode OpNodeRnd, } multiclass avx512_fp_binop_p<bits<8> opc, string OpcodeStr, SDNode OpNode, - bit IsCommutable = 0> { + Predicate prd, bit IsCommutable = 0> { + let Predicates = [prd] in { defm PSZ : avx512_fp_packed<opc, OpcodeStr, OpNode, v16f32_info, IsCommutable>, EVEX_V512, PS, EVEX_CD8<32, CD8VF>; defm PDZ : avx512_fp_packed<opc, OpcodeStr, OpNode, v8f64_info, IsCommutable>, EVEX_V512, PD, VEX_W, EVEX_CD8<64, CD8VF>; + } // Define only if AVX512VL feature is present. - let Predicates = [HasVLX] in { + let Predicates = [prd, HasVLX] in { defm PSZ128 : avx512_fp_packed<opc, OpcodeStr, OpNode, v4f32x_info, IsCommutable>, EVEX_V128, PS, EVEX_CD8<32, CD8VF>; @@ -3749,24 +3751,22 @@ multiclass avx512_fp_binop_p_sae<bits<8> opc, string OpcodeStr, SDNode OpNodeRnd EVEX_V512, PD, VEX_W,EVEX_CD8<64, CD8VF>; } -defm VADD : avx512_fp_binop_p<0x58, "vadd", fadd, 1>, +defm VADD : avx512_fp_binop_p<0x58, "vadd", fadd, HasAVX512, 1>, avx512_fp_binop_p_round<0x58, "vadd", X86faddRnd>; -defm VMUL : avx512_fp_binop_p<0x59, "vmul", fmul, 1>, +defm VMUL : avx512_fp_binop_p<0x59, "vmul", fmul, HasAVX512, 1>, avx512_fp_binop_p_round<0x59, "vmul", X86fmulRnd>; -defm VSUB : avx512_fp_binop_p<0x5C, "vsub", fsub>, +defm VSUB : avx512_fp_binop_p<0x5C, "vsub", fsub, HasAVX512>, avx512_fp_binop_p_round<0x5C, "vsub", X86fsubRnd>; -defm VDIV : avx512_fp_binop_p<0x5E, "vdiv", fdiv>, +defm VDIV : avx512_fp_binop_p<0x5E, "vdiv", fdiv, HasAVX512>, avx512_fp_binop_p_round<0x5E, "vdiv", X86fdivRnd>; -defm VMIN : avx512_fp_binop_p<0x5D, "vmin", X86fmin, 1>, +defm VMIN : avx512_fp_binop_p<0x5D, "vmin", X86fmin, HasAVX512, 1>, avx512_fp_binop_p_sae<0x5D, "vmin", X86fminRnd>; -defm VMAX : avx512_fp_binop_p<0x5F, "vmax", X86fmax, 1>, +defm VMAX : avx512_fp_binop_p<0x5F, "vmax", X86fmax, HasAVX512, 1>, avx512_fp_binop_p_sae<0x5F, "vmax", X86fmaxRnd>; -let Predicates = [HasDQI] in { - defm VAND : avx512_fp_binop_p<0x54, "vand", X86fand, 1>; - defm VANDN : avx512_fp_binop_p<0x55, "vandn", X86fandn, 0>; - defm VOR : avx512_fp_binop_p<0x56, "vor", X86for, 1>; - defm VXOR : avx512_fp_binop_p<0x57, "vxor", X86fxor, 1>; -} +defm VAND : avx512_fp_binop_p<0x54, "vand", X86fand, HasDQI, 1>; +defm VANDN : avx512_fp_binop_p<0x55, "vandn", X86fandn, HasDQI, 0>; +defm VOR : avx512_fp_binop_p<0x56, "vor", X86for, HasDQI, 1>; +defm VXOR : avx512_fp_binop_p<0x57, "vxor", X86fxor, HasDQI, 1>; multiclass avx512_fp_scalef_p<bits<8> opc, string OpcodeStr, SDNode OpNode, X86VectorVTInfo _> { @@ -7309,8 +7309,8 @@ def : Pat<(v2f64 (X86VBroadcast (loadf64 addr:$src))), //===----------------------------------------------------------------------===// // AVX-512 - Unpack Instructions //===----------------------------------------------------------------------===// -defm VUNPCKH : avx512_fp_binop_p<0x15, "vunpckh", X86Unpckh>; -defm VUNPCKL : avx512_fp_binop_p<0x14, "vunpckl", X86Unpckl>; +defm VUNPCKH : avx512_fp_binop_p<0x15, "vunpckh", X86Unpckh, HasAVX512>; +defm VUNPCKL : avx512_fp_binop_p<0x14, "vunpckl", X86Unpckl, HasAVX512>; defm VPUNPCKLBW : avx512_binop_rm_vl_b<0x60, "vpunpcklbw", X86Unpckl, SSE_INTALU_ITINS_P, HasBWI>; |