multiclass avx512_fp_round_packed<bits<8> opc, string OpcodeStr, SDPatternOperator OpNodeRnd,
OpndItins itins, X86VectorVTInfo _> {
let ExeDomain = _.ExeDomain in
- defm rb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
+ defm rrb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr##_.Suffix,
"$rc, $src2, $src1", "$src1, $src2, $rc",
(_.VT (OpNodeRnd _.RC:$src1, _.RC:$src2, (i32 imm:$rc))), itins.rr>,
multiclass avx512_fp_sae_packed<bits<8> opc, string OpcodeStr, SDPatternOperator OpNodeRnd,
OpndItins itins, X86VectorVTInfo _> {
let ExeDomain = _.ExeDomain in
- defm rb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
+ defm rrb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
(ins _.RC:$src1, _.RC:$src2), OpcodeStr##_.Suffix,
"{sae}, $src2, $src1", "$src1, $src2, {sae}",
(_.VT (OpNodeRnd _.RC:$src1, _.RC:$src2, (i32 FROUND_NO_EXC))), itins.rr>,
multiclass avx512_cvtph2ps_sae<X86VectorVTInfo _dest, X86VectorVTInfo _src,
OpndItins itins> {
- defm rb : AVX512_maskable<0x13, MRMSrcReg, _dest, (outs _dest.RC:$dst),
- (ins _src.RC:$src), "vcvtph2ps",
- "{sae}, $src", "$src, {sae}",
- (X86cvtph2psRnd (_src.VT _src.RC:$src),
- (i32 FROUND_NO_EXC)), itins.rr>,
- T8PD, EVEX_B, Sched<[itins.Sched]>;
+ defm rrb : AVX512_maskable<0x13, MRMSrcReg, _dest, (outs _dest.RC:$dst),
+ (ins _src.RC:$src), "vcvtph2ps",
+ "{sae}, $src", "$src, {sae}",
+ (X86cvtph2psRnd (_src.VT _src.RC:$src),
+ (i32 FROUND_NO_EXC)), itins.rr>,
+ T8PD, EVEX_B, Sched<[itins.Sched]>;
}
let Predicates = [HasAVX512] in
multiclass avx512_ord_cmp_sae<bits<8> opc, X86VectorVTInfo _,
string OpcodeStr, OpndItins itins> {
let hasSideEffects = 0 in
- def rb: AVX512<opc, MRMSrcReg, (outs), (ins _.RC:$src1, _.RC:$src2),
- !strconcat(OpcodeStr, "\t{{sae}, $src2, $src1|$src1, $src2, {sae}}"),
- [], itins.rr>, EVEX, EVEX_B, VEX_LIG, EVEX_V128,
- Sched<[itins.Sched]>;
+ def rrb: AVX512<opc, MRMSrcReg, (outs), (ins _.RC:$src1, _.RC:$src2),
+ !strconcat(OpcodeStr, "\t{{sae}, $src2, $src1|$src1, $src2, {sae}}"),
+ [], itins.rr>, EVEX, EVEX_B, VEX_LIG, EVEX_V128,
+ Sched<[itins.Sched]>;
}
let Defs = [EFLAGS], Predicates = [HasAVX512] in {
def: InstRW<[SKXWriteResGroup12], (instregex "PMOVMSKBrr")>;
def: InstRW<[SKXWriteResGroup12], (instregex "UCOMISDrr")>;
def: InstRW<[SKXWriteResGroup12], (instregex "UCOMISSrr")>;
-def: InstRW<[SKXWriteResGroup12], (instregex "VCOMISDZrb")>;
+def: InstRW<[SKXWriteResGroup12], (instregex "VCOMISDZrrb")>;
def: InstRW<[SKXWriteResGroup12], (instregex "VCOMISDrr")>;
-def: InstRW<[SKXWriteResGroup12], (instregex "VCOMISSZrb")>;
+def: InstRW<[SKXWriteResGroup12], (instregex "VCOMISSZrrb")>;
def: InstRW<[SKXWriteResGroup12], (instregex "VCOMISSrr")>;
def: InstRW<[SKXWriteResGroup12], (instregex "VMOVMSKPDYrr")>;
def: InstRW<[SKXWriteResGroup12], (instregex "VMOVMSKPDrr")>;
def: InstRW<[SKXWriteResGroup12], (instregex "VTESTPDrr")>;
def: InstRW<[SKXWriteResGroup12], (instregex "VTESTPSYrr")>;
def: InstRW<[SKXWriteResGroup12], (instregex "VTESTPSrr")>;
-def: InstRW<[SKXWriteResGroup12], (instregex "VUCOMISDZrb")>;
+def: InstRW<[SKXWriteResGroup12], (instregex "VUCOMISDZrrb")>;
def: InstRW<[SKXWriteResGroup12], (instregex "VUCOMISDrr")>;
-def: InstRW<[SKXWriteResGroup12], (instregex "VUCOMISSZrb")>;
+def: InstRW<[SKXWriteResGroup12], (instregex "VUCOMISSZrrb")>;
def: InstRW<[SKXWriteResGroup12], (instregex "VUCOMISSrr")>;
def SKXWriteResGroup13 : SchedWriteRes<[SKXPort5]> {