Lines Matching refs:RC

23   RegisterClass RC = rc;
62 // Size of RC in bits, e.g. 512 for VR512.
131 // "x" in v32i8x_info means RC = VR256X
225 [(set _.RC:$dst, RHS)],
226 [(set _.RC:$dst, MaskingRHS)],
227 [(set _.RC:$dst,
241 !con((ins _.RC:$src0, _.KRCWM:$mask), Ins),
244 (vselect _.KRCWM:$mask, RHS, _.RC:$src0), vselect,
256 !con((ins _.RC:$src0, _.KRCWM:$mask), Ins),
259 (X86select _.KRCWM:$mask, RHS, _.RC:$src0), X86select,
271 !con((ins _.RC:$src1), NonTiedIns),
272 !con((ins _.RC:$src1, _.KRCWM:$mask), NonTiedIns),
273 !con((ins _.RC:$src1, _.KRCWM:$mask), NonTiedIns),
275 (vselect _.KRCWM:$mask, RHS, _.RC:$src1)>;
282 !con((ins _.RC:$src1), NonTiedIns),
283 !con((ins _.RC:$src1, _.KRCWM:$mask), NonTiedIns),
284 !con((ins _.RC:$src1, _.KRCWM:$mask), NonTiedIns),
286 (X86select _.KRCWM:$mask, RHS, _.RC:$src1)>;
294 !con((ins _.RC:$src0, _.KRCWM:$mask), Ins),
481 (ins VR512:$src1, From.RC:$src2, u8imm:$src3),
485 [(set To.RC:$dst, (vinsert_insert:$src3 (To.VT VR512:$src1),
486 (From.VT From.RC:$src2),
513 (AltTo.VT VR512:$src1), (AltFrom.VT From.RC:$src2), (iPTR imm)),
515 VR512:$src1, From.RC:$src2,
575 defm rr : AVX512_maskable_in_asm<Opcode, MRMDestReg, To, (outs To.RC:$dst),
579 [(set To.RC:$dst, (vextract_extract:$idx (From.VT VR512:$src1),
595 (EXTRACT_get_vextract_imm To.RC:$ext)))>;
611 VR512:$src1, (iPTR imm:$idx), To.RC:$src0, GR8:$mask),
612 (!cast<Instruction>(NAME # To.EltSize # "x4rrk") To.RC:$src0,
699 defm r : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
705 defm m : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
753 (OpNode (_.EltVT SrcRC_s:$src)), _.RC:$src0)),
754 (!cast<Instruction>(InstName##"rk") _.RC:$src0, _.KRCWM:$mask,
790 defm r : AVX512_maskable_in_asm<opc, MRMSrcReg, _, (outs _.RC:$dst),
885 def rm : AVX5128I<opc, MRMSrcMem, (outs _Dst.RC:$dst), (ins _Src.MemOp:$src),
887 [(set _Dst.RC:$dst,
890 def rmk : AVX5128I<opc, MRMSrcMem, (outs _Dst.RC:$dst), (ins _Dst.KRCWM:$mask,
895 def rmkz : AVX5128I<opc, MRMSrcMem, (outs _Dst.RC:$dst), (ins _Dst.KRCWM:$mask,
1020 def ri : AVX512AIi8<opc, MRMSrcReg, (outs _.RC:$dst),
1021 (ins _.RC:$src1, u8imm:$src2),
1024 [(set _.RC:$dst,
1025 (_.VT (OpNode _.RC:$src1, (i8 imm:$src2))))]>,
1027 def mi : AVX512AIi8<opc, MRMSrcMem, (outs _.RC:$dst),
1031 [(set _.RC:$dst,
1042 def rr : AVX5128I<OpcVar, MRMSrcReg, (outs _.RC:$dst),
1043 (ins _.RC:$src1, _.RC:$src2),
1046 [(set _.RC:$dst,
1047 (_.VT (X86VPermilpv _.RC:$src1,
1048 (Ctrl.VT Ctrl.RC:$src2))))]>,
1050 def rm : AVX5128I<OpcVar, MRMSrcMem, (outs _.RC:$dst),
1051 (ins _.RC:$src1, Ctrl.MemOp:$src2),
1054 [(set _.RC:$dst,
1055 (_.VT (X86VPermilpv _.RC:$src1,
1074 defm rr: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
1075 (ins _.RC:$src2, _.RC:$src3),
1077 (_.VT (OpNode _.RC:$src1, _.RC:$src2, _.RC:$src3))>, EVEX_4V,
1081 defm rm: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
1082 (ins _.RC:$src2, _.MemOp:$src3),
1084 (_.VT (OpNode _.RC:$src1, _.RC:$src2,
1092 defm rmb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
1093 (ins _.RC:$src2, _.ScalarMemOp:$src3),
1096 (_.VT (OpNode _.RC:$src1,
1097 _.RC:$src2,(_.VT (X86VBroadcast (_.ScalarLdFrag addr:$src3)))))>,
1158 def rr : AVX5128I<opc, MRMSrcReg, (outs _.RC:$dst),
1159 (ins _.RC:$src1, _.RC:$src2),
1163 def rrk : AVX5128I<opc, MRMSrcReg, (outs _.RC:$dst),
1164 (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
1167 [(set _.RC:$dst, (X86select _.KRCWM:$mask, (_.VT _.RC:$src1),
1168 (_.VT _.RC:$src2)))]>, EVEX_4V, EVEX_K;
1169 def rrkz : AVX5128I<opc, MRMSrcReg, (outs _.RC:$dst),
1170 (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
1175 def rm : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
1176 (ins _.RC:$src1, _.MemOp:$src2),
1180 def rmk : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
1181 (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2),
1184 [(set _.RC:$dst, (X86select _.KRCWM:$mask, (_.VT _.RC:$src1),
1187 def rmkz : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
1188 (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2),
1197 def rmbk : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
1198 (ins _.KRCWM:$mask, _.RC:$src1, _.ScalarMemOp:$src2),
1202 [(set _.RC:$dst,(X86select _.KRCWM:$mask, (_.VT _.RC:$src1),
1206 def rmb : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
1207 (ins _.RC:$src1, _.ScalarMemOp:$src2),
1268 multiclass avx512_cmp_scalar<RegisterClass RC, X86MemOperand x86memop,
1272 (outs VK1:$dst), (ins RC:$src1, RC:$src2, AVXCC:$cc),
1275 [(set VK1:$dst, (OpNode (VT RC:$src1), RC:$src2, imm:$cc))],
1278 (outs VK1:$dst), (ins RC:$src1, x86memop:$src2, AVXCC:$cc),
1281 [(set VK1:$dst, (OpNode (VT RC:$src1),
1285 (outs VK1:$dst), (ins RC:$src1, RC:$src2, u8imm:$cc),
1291 (outs VK1:$dst), (ins RC:$src1, x86memop:$src2, u8imm:$cc),
1308 (outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2),
1310 [(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2)))],
1314 (outs _.KRC:$dst), (ins _.RC:$src1, _.MemOp:$src2),
1316 [(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1),
1320 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
1324 (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2))))],
1328 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2),
1332 (OpNode (_.VT _.RC:$src1),
1343 (outs _.KRC:$dst), (ins _.RC:$src1, _.ScalarMemOp:$src2),
1346 [(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1),
1350 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1,
1356 (OpNode (_.VT _.RC:$src1),
1437 (outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2, AVX512ICC:$cc),
1440 [(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
1445 (outs _.KRC:$dst), (ins _.RC:$src1, _.MemOp:$src2, AVX512ICC:$cc),
1448 [(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1),
1453 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2,
1459 (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
1464 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2,
1470 (OpNode (_.VT _.RC:$src1),
1478 (outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
1484 (outs _.KRC:$dst), (ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
1489 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2,
1497 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2,
1510 (outs _.KRC:$dst), (ins _.RC:$src1, _.ScalarMemOp:$src2,
1515 [(set _.KRC:$dst, (OpNode (_.VT _.RC:$src1),
1520 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1,
1526 (OpNode (_.VT _.RC:$src1),
1534 (outs _.KRC:$dst), (ins _.RC:$src1, _.ScalarMemOp:$src2,
1541 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1,
1598 (outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2,AVXCC:$cc),
1601 (X86cmpm (_.VT _.RC:$src1),
1602 (_.VT _.RC:$src2),
1607 (outs _.KRC:$dst),(ins _.RC:$src1, _.MemOp:$src2, AVXCC:$cc),
1610 (X86cmpm (_.VT _.RC:$src1),
1616 (ins _.RC:$src1, _.ScalarMemOp:$src2, AVXCC:$cc),
1620 (X86cmpm (_.VT _.RC:$src1),
1628 (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
1635 (ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
1641 (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
1652 (outs _.KRC:$dst),(ins _.RC:$src1, _.RC:$src2, AVXCC:$cc),
1655 (X86cmpmRnd (_.VT _.RC:$src1),
1656 (_.VT _.RC:$src2),
1663 (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2218 def rr : AVX512PI<opc, MRMSrcReg, (outs _.RC:$dst), (ins _.RC:$src),
2221 def rrkz : AVX512PI<opc, MRMSrcReg, (outs _.RC:$dst),
2222 (ins _.KRCWM:$mask, _.RC:$src),
2229 def rm : AVX512PI<opc, MRMSrcMem, (outs _.RC:$dst), (ins _.MemOp:$src),
2231 [(set _.RC:$dst, (_.VT (bitconvert (ld_frag addr:$src))))],
2235 def rrk : AVX512PI<opc, MRMSrcReg, (outs _.RC:$dst),
2236 (ins _.RC:$src0, _.KRCWM:$mask, _.RC:$src1),
2239 [(set _.RC:$dst, (_.VT (vselect _.KRCWM:$mask,
2240 (_.VT _.RC:$src1),
2241 (_.VT _.RC:$src0))))], _.ExeDomain>,
2244 def rmk : AVX512PI<opc, MRMSrcMem, (outs _.RC:$dst),
2245 (ins _.RC:$src0, _.KRCWM:$mask, _.MemOp:$src1),
2248 [(set _.RC:$dst, (_.VT
2251 (_.VT _.RC:$src0))))], _.ExeDomain>, EVEX, EVEX_K;
2254 def rmkz : AVX512PI<opc, MRMSrcMem, (outs _.RC:$dst),
2258 [(set _.RC:$dst, (_.VT (vselect _.KRCWM:$mask,
2268 def : Pat<(_.VT (mload addr:$ptr, _.KRCWM:$mask, (_.VT _.RC:$src0))),
2269 (!cast<Instruction>(NAME#_.ZSuffix##rmk) _.RC:$src0,
2308 def rr_alt : AVX512PI<opc, MRMDestReg, (outs _.RC:$dst), (ins _.RC:$src),
2312 def rrk_alt : AVX512PI<opc, MRMDestReg, (outs _.RC:$dst),
2313 (ins _.RC:$src1, _.KRCWM:$mask, _.RC:$src2),
2317 def rrkz_alt : AVX512PI<opc, MRMDestReg, (outs _.RC:$dst),
2318 (ins _.KRCWM:$mask, _.RC:$src),
2325 def mr : AVX512PI<opc, MRMDestMem, (outs), (ins _.MemOp:$dst, _.RC:$src),
2327 [(st_frag (_.VT _.RC:$src), addr:$dst)], _.ExeDomain>, EVEX;
2329 (ins _.MemOp:$dst, _.KRCWM:$mask, _.RC:$src),
2334 def: Pat<(mstore addr:$ptr, _.KRCWM:$mask, (_.VT _.RC:$src)),
2336 _.KRCWM:$mask, _.RC:$src)>;
2623 multiclass avx512_move_scalar <string asm, RegisterClass RC,
2627 def rr : SI<0x10, MRMSrcReg, (outs VR128X:$dst), (ins VR128X:$src1, RC:$src2),
2630 (scalar_to_vector RC:$src2))))],
2634 (ins VR128X:$src1, VK1WM:$mask, RC:$src2, RC:$src3),
2638 def rm : SI<0x10, MRMSrcMem, (outs RC:$dst), (ins x86memop:$src),
2640 [(set RC:$dst, (mem_pat addr:$src))], IIC_SSE_MOV_S_RM>,
2643 def mr: SI<0x11, MRMDestMem, (outs), (ins x86memop:$dst, RC:$src),
2645 [(store RC:$src, addr:$dst)], IIC_SSE_MOV_S_MR>,
2647 def mrk: SI<0x11, MRMDestMem, (outs), (ins x86memop:$dst, VK1WM:$mask, RC:$src),
2916 ValueType OpVT, RegisterClass RC, X86MemOperand memop,
2920 def mr : AVX512PI<opc, MRMDestMem, (outs), (ins memop:$dst, RC:$src),
2922 [(st_frag (OpVT RC:$src), addr:$dst)], d, itin>, EVEX;
2966 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
2967 (ins _.RC:$src1, _.RC:$src2), OpcodeStr##_.Suffix,
2969 (_.VT (OpNode _.RC:$src1, _.RC:$src2)),
2974 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
2975 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr##_.Suffix,
2977 (_.VT (OpNode _.RC:$src1,
2988 defm rmb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
2989 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr##_.Suffix,
2992 (_.VT (OpNode _.RC:$src1,
3091 defm rr : AVX512_maskable<opc, MRMSrcReg, _Dst, (outs _Dst.RC:$dst),
3092 (ins _Src.RC:$src1, _Src.RC:$src2), OpcodeStr,
3095 (_Src.VT _Src.RC:$src1),
3096 (_Src.VT _Src.RC:$src2))),
3100 defm rm : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
3101 (ins _Src.RC:$src1, _Src.MemOp:$src2), OpcodeStr,
3103 (_Dst.VT (OpNode (_Src.VT _Src.RC:$src1),
3108 defm rmb : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
3109 (ins _Src.RC:$src1, _Dst.ScalarMemOp:$src2),
3113 (_Dst.VT (OpNode (_Src.VT _Src.RC:$src1), (bitconvert
3172 defm rmb : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
3173 (ins _Src.RC:$src1, _Src.ScalarMemOp:$src2),
3177 (_Dst.VT (OpNode (_Src.VT _Src.RC:$src1), (bitconvert
3187 defm rr : AVX512_maskable<opc, MRMSrcReg, _Dst, (outs _Dst.RC:$dst),
3188 (ins _Src.RC:$src1, _Src.RC:$src2), OpcodeStr,
3191 (_Src.VT _Src.RC:$src1),
3192 (_Src.VT _Src.RC:$src2)))>,
3195 defm rm : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
3196 (ins _Src.RC:$src1, _Src.MemOp:$src2), OpcodeStr,
3198 (_Dst.VT (OpNode (_Src.VT _Src.RC:$src1),
3272 PatFrag mem_frag, RegisterClass RC,
3276 (outs RC:$dst), (ins RC:$src1, RC:$src2),
3277 asm, [(set RC:$dst,
3278 (vt (OpNode RC:$src1, RC:$src2)))],
3281 (outs RC:$dst), (ins RC:$src1, x86memop:$src2),
3282 asm, [(set RC:$dst,
3283 (vt (OpNode RC:$src1,
3302 ValueType OpVT, RegisterClass RC, PatFrag memop_frag,
3304 def rr : AVX512BI<opc, MRMSrcReg, (outs RC:$dst),
3305 (ins RC:$src1, RC:$src2),
3307 [(set RC:$dst, (OpVT (OpNode (OpVT RC:$src1), (OpVT RC:$src2))))],
3309 def rm : AVX512BI<opc, MRMSrcMem, (outs RC:$dst),
3310 (ins RC:$src1, x86memop:$src2),
3312 [(set RC:$dst, (OpVT (OpNode (OpVT RC:$src1),
3348 defm rr_Int : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
3349 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
3351 (VecNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
3355 defm rm_Int : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
3356 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
3358 (VecNode (_.VT _.RC:$src1),
3380 defm rrb : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
3381 (ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr,
3383 (VecNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
3390 defm rrb : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
3391 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
3393 (VecNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
3435 defm rr: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
3436 (ins _.RC:$src1, _.RC:$src2), OpcodeStr##_.Suffix,
3438 (_.VT (OpNode _.RC:$src1, _.RC:$src2))>, EVEX_4V;
3440 defm rm: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3441 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr##_.Suffix,
3443 (OpNode _.RC:$src1, (_.LdFrag addr:$src2))>, EVEX_4V;
3444 defm rmb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3445 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr##_.Suffix,
3448 (OpNode _.RC:$src1, (_.VT (X86VBroadcast
3456 defm rb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
3457 (ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr##_.Suffix,
3459 (_.VT (OpNodeRnd _.RC:$src1, _.RC:$src2, (i32 imm:$rc)))>,
3466 defm rb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
3467 (ins _.RC:$src1, _.RC:$src2), OpcodeStr##_.Suffix,
3469 (_.VT (OpNodeRnd _.RC:$src1, _.RC:$src2, (i32 FROUND_NO_EXC)))>,
3534 defm rr: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
3535 (ins _.RC:$src1, _.RC:$src2), OpcodeStr##_.Suffix,
3537 (_.VT (OpNode _.RC:$src1, _.RC:$src2, (i32 FROUND_CURRENT)))>, EVEX_4V;
3539 defm rm: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3540 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr##_.Suffix,
3542 (OpNode _.RC:$src1, (_.LdFrag addr:$src2), (i32 FROUND_CURRENT))>, EVEX_4V;
3543 defm rmb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3544 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr##_.Suffix,
3547 (OpNode _.RC:$src1, (_.VT (X86VBroadcast
3581 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
3583 (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2))>,
3587 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
3589 (OpNode (_.VT _.RC:$src1),
3599 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
3602 (OpNode (_.VT _.RC:$src1), (_.VT (X86VBroadcast
3669 defm ri : AVX512_maskable<opc, ImmFormR, _, (outs _.RC:$dst),
3670 (ins _.RC:$src1, u8imm:$src2), OpcodeStr,
3672 (_.VT (OpNode _.RC:$src1, (i8 imm:$src2))),
3675 defm mi : AVX512_maskable<opc, ImmFormM, _, (outs _.RC:$dst),
3686 defm mbi : AVX512_maskable<opc, ImmFormM, _, (outs _.RC:$dst),
3696 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
3697 (ins _.RC:$src1, VR128X:$src2), OpcodeStr,
3699 (_.VT (OpNode _.RC:$src1, (SrcVT VR128X:$src2))),
3701 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3702 (ins _.RC:$src1, i128mem:$src2), OpcodeStr,
3704 (_.VT (OpNode _.RC:$src1, (bc_frag (loadv2i64 addr:$src2)))),
3800 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
3801 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
3803 (_.VT (OpNode _.RC:$src1, (_.VT _.RC:$src2))),
3806 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3807 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
3809 (_.VT (OpNode _.RC:$src1,
3818 defm rmb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3819 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
3822 (_.VT (OpNode _.RC:$src1, (_.VT (X86VBroadcast
3948 multiclass avx512_movddup<string OpcodeStr, RegisterClass RC, ValueType VT,
3950 def rr : AVX512PDI<0x12, MRMSrcReg, (outs RC:$dst), (ins RC:$src),
3952 [(set RC:$dst, (VT (X86Movddup RC:$src)))]>, EVEX;
3953 def rm : AVX512PDI<0x12, MRMSrcMem, (outs RC:$dst), (ins x86memop:$src),
3955 [(set RC:$dst,
3968 ValueType vt, RegisterClass RC, PatFrag mem_frag,
3970 def rr : AVX512XSI<op, MRMSrcReg, (outs RC:$dst), (ins RC:$src),
3972 [(set RC:$dst, (vt (OpNode RC:$src)))]>, EVEX;
3974 def rm : AVX512XSI<op, MRMSrcMem, (outs RC:$dst), (ins x86memop:$src),
3976 [(set RC:$dst, (OpNode (mem_frag addr:$src)))]>, EVEX;
4026 defm r: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4027 (ins _.RC:$src2, _.RC:$src3),
4029 (_.VT (OpNode _.RC:$src1, _.RC:$src2, _.RC:$src3))>,
4033 defm m: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4034 (ins _.RC:$src2, _.MemOp:$src3),
4036 (_.VT (OpNode _.RC:$src1, _.RC:$src2, (_.LdFrag addr:$src3)))>,
4039 defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4040 (ins _.RC:$src2, _.ScalarMemOp:$src3),
4043 (OpNode _.RC:$src1,
4044 _.RC:$src2,(_.VT (X86VBroadcast (_.ScalarLdFrag addr:$src3))))>,
4051 defm rb: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4052 (ins _.RC:$src2, _.RC:$src3, AVX512RC:$rc),
4054 (_.VT ( OpNode _.RC:$src1, _.RC:$src2, _.RC:$src3, (i32 imm:$rc)))>,
4093 defm r: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4094 (ins _.RC:$src2, _.RC:$src3),
4096 (_.VT (OpNode _.RC:$src2, _.RC:$src3, _.RC:$src1))>,
4100 defm m: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4101 (ins _.RC:$src2, _.MemOp:$src3),
4103 (_.VT (OpNode _.RC:$src2, (_.LdFrag addr:$src3), _.RC:$src1))>,
4106 defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4107 (ins _.RC:$src2, _.ScalarMemOp:$src3),
4110 (_.VT (OpNode _.RC:$src2,
4112 _.RC:$src1))>, AVX512FMA3Base, EVEX_B;
4118 defm rb: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4119 (ins _.RC:$src2, _.RC:$src3, AVX512RC:$rc),
4121 (_.VT ( OpNode _.RC:$src2, _.RC:$src3, _.RC:$src1, (i32 imm:$rc)))>,
4159 defm r: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4160 (ins _.RC:$src3, _.RC:$src2),
4162 (_.VT (OpNode _.RC:$src1, _.RC:$src2, _.RC:$src3))>,
4166 defm m: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4167 (ins _.RC:$src3, _.MemOp:$src2),
4169 (_.VT (OpNode _.RC:$src1, (_.LdFrag addr:$src2), _.RC:$src3))>,
4172 defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4173 (ins _.RC:$src3, _.ScalarMemOp:$src2),
4176 (_.VT (OpNode _.RC:$src1,
4178 _.RC:$src3))>, AVX512FMA3Base, EVEX_B;
4184 defm rb: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4185 (ins _.RC:$src3, _.RC:$src2, AVX512RC:$rc),
4187 (_.VT ( OpNode _.RC:$src1, _.RC:$src2, _.RC:$src3, (i32 imm:$rc)))>,
4227 defm r_Int: AVX512_maskable_3src_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
4228 (ins _.RC:$src2, _.RC:$src3), OpcodeStr,
4232 defm m_Int: AVX512_maskable_3src_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
4233 (ins _.RC:$src2, _.MemOp:$src3), OpcodeStr,
4236 defm rb_Int: AVX512_maskable_3src_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
4237 (ins _.RC:$src2, _.RC:$src3, AVX512RC:$rc),
4262 (_.VT (OpNode _.RC:$src2, _.RC:$src1, _.RC:$src3)),
4263 (_.VT (OpNode _.RC:$src2, _.RC:$src1,
4265 (_.VT ( OpNodeRnd _.RC:$src2, _.RC:$src1, _.RC:$src3,
4273 (_.VT (OpNode _.RC:$src2, _.RC:$src3, _.RC:$src1)),
4274 (_.VT (OpNode _.RC:$src2,
4276 _.RC:$src1)),
4277 (_.VT ( OpNodeRnd _.RC:$src2, _.RC:$src3, _.RC:$src1,
4285 (_.VT (OpNode _.RC:$src1, _.RC:$src3, _.RC:$src2)),
4286 (_.VT (OpNode _.RC:$src1,
4288 _.RC:$src2)),
4289 (_.VT ( OpNodeRnd _.RC:$src1, _.RC:$src3, _.RC:$src2,
4333 def rr_Int : SI<opc, MRMSrcReg, (outs DstVT.RC:$dst),
4334 (ins DstVT.RC:$src1, SrcRC:$src2),
4336 [(set DstVT.RC:$dst,
4337 (OpNode (DstVT.VT DstVT.RC:$src1),
4341 def rm_Int : SI<opc, MRMSrcMem, (outs DstVT.RC:$dst),
4342 (ins DstVT.RC:$src1, x86memop:$src2),
4344 [(set DstVT.RC:$dst,
4345 (OpNode (DstVT.VT DstVT.RC:$src1),
4353 def rrb_Int : SI<opc, MRMSrcReg, (outs DstVT.RC:$dst),
4354 (ins DstVT.RC:$src1, SrcRC:$src2, AVX512RC:$rc),
4357 [(set DstVT.RC:$dst,
4358 (OpNode (DstVT.VT DstVT.RC:$src1),
4623 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
4624 (ins _Src.RC:$src), OpcodeStr, "$src", "$src",
4625 (_.VT (OpNode (_Src.VT _Src.RC:$src)))>, EVEX;
4627 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
4632 defm rmb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
4642 defm rrb : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
4643 (ins _Src.RC:$src), OpcodeStr,
4645 (_.VT (OpNodeRnd (_Src.VT _Src.RC:$src),
4650 // Conversion with rounding control (RC)
4653 defm rrb : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
4654 (ins _Src.RC:$src, AVX512RC:$rc), OpcodeStr,
4656 (_.VT (OpNodeRnd (_Src.VT _Src.RC:$src), (i32 imm:$rc)))>,
5095 multiclass avx512_fp14_s<bits<8> opc, string OpcodeStr, RegisterClass RC,
5098 def rr : AVX5128I<opc, MRMSrcReg, (outs RC:$dst),
5099 (ins RC:$src1, RC:$src2),
5103 def rm : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
5104 (ins RC:$src1, x86memop:$src2),
5143 defm r: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
5144 (ins _.RC:$src), OpcodeStr, "$src", "$src",
5145 (_.FloatVT (OpNode _.RC:$src))>, EVEX, T8PD;
5147 defm m: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
5151 defm mb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
5204 defm r : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
5205 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
5207 (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
5210 defm rb : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
5211 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
5213 (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
5216 defm m : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
5217 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
5219 (OpNode (_.VT _.RC:$src1),
5240 defm r : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
5241 (ins _.RC:$src), OpcodeStr, "$src", "$src",
5242 (OpNode (_.VT _.RC:$src), (i32 FROUND_CURRENT))>;
5244 defm m : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
5250 defm mb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
5259 defm rb : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
5260 (ins _.RC:$src), OpcodeStr,
5262 (OpNode (_.VT _.RC:$src), (i32 FROUND_NO_EXC))>, EVEX_B;
5299 defm rb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
5300 (ins _.RC:$src, AVX512RC:$rc), OpcodeStr, "$rc, $src", "$src, $rc",
5301 (_.VT (OpNodeRnd _.RC:$src, (i32 imm:$rc)))>,
5307 defm r: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
5308 (ins _.RC:$src), OpcodeStr, "$src", "$src",
5309 (_.FloatVT (OpNode _.RC:$src))>, EVEX;
5311 defm m: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
5316 defm mb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
5467 X86MemOperand x86memop, RegisterClass RC,
5473 (outs RC:$dst), (ins RC:$src1, i32u8imm:$src2),
5480 (outs RC:$dst), (ins x86memop:$src1, i32u8imm:$src2),
5510 defm r : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
5511 (ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3), OpcodeStr,
5513 (_.VT (X86RndScale (_.VT _.RC:$src1), (_.VT _.RC:$src2),
5516 defm rb : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
5517 (ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3), OpcodeStr,
5519 (_.VT (X86RndScale (_.VT _.RC:$src1), (_.VT _.RC:$src2),
5523 defm m : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
5524 (ins _.RC:$src1, _.MemOp:$src2, i32u8imm:$src3), OpcodeStr,
5526 (_.VT (X86RndScale (_.VT _.RC:$src1),
5533 (_.VT (COPY_TO_REGCLASS _.FRC:$src, _.RC)), (i32 0x1))), _.FRC)>;
5536 (_.VT (COPY_TO_REGCLASS _.FRC:$src, _.RC)), (i32 0x2))), _.FRC)>;
5539 (_.VT (COPY_TO_REGCLASS _.FRC:$src, _.RC)), (i32 0x3))), _.FRC)>;
5542 (_.VT (COPY_TO_REGCLASS _.FRC:$src, _.RC)), (i32 0x4))), _.FRC)>;
5545 (_.VT (COPY_TO_REGCLASS _.FRC:$src, _.RC)), (i32 0xc))), _.FRC)>;
5679 defm rr : AVX512_maskable<opc, MRMSrcReg, DestInfo, (outs DestInfo.RC:$dst),
5680 (ins SrcInfo.RC:$src), OpcodeStr ,"$src", "$src",
5681 (DestInfo.VT (OpNode (SrcInfo.VT SrcInfo.RC:$src)))>,
5685 defm rm : AVX512_maskable<opc, MRMSrcMem, DestInfo, (outs DestInfo.RC:$dst),
5823 def rm : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst, _.KRCWM:$mask_wb),
5824 (ins _.RC:$src1, _.KRCWM:$mask, memop:$src2),
5827 [(set _.RC:$dst, _.KRCWM:$mask_wb,
5828 (GatherNode (_.VT _.RC:$src1), _.KRCWM:$mask,
5882 (ins memop:$dst, _.KRCWM:$mask, _.RC:$src),
5885 [(set _.KRCWM:$mask_wb, (ScatterNode (_.VT _.RC:$src),
5991 multiclass avx512_shufp<RegisterClass RC, X86MemOperand x86memop,
5994 def rmi : AVX512PIi8<0xC6, MRMSrcMem, (outs RC:$dst),
5995 (ins RC:$src1, x86memop:$src2, u8imm:$src3),
5998 [(set RC:$dst, (vt (X86Shufp RC:$src1, (mem_frag addr:$src2),
6001 def rri : AVX512PIi8<0xC6, MRMSrcReg, (outs RC:$dst),
6002 (ins RC:$src1, RC:$src2, u8imm:$src3),
6005 [(set RC:$dst, (vt (X86Shufp RC:$src1, RC:$src2,
6032 RegisterClass RC, RegisterClass KRC,
6036 def rr : AVX5128I<opc, MRMSrcReg, (outs RC:$dst),
6037 (ins RC:$src),
6041 def rm : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
6046 def rmb : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
6051 def rrkz : AVX5128I<opc, MRMSrcReg, (outs RC:$dst),
6052 (ins KRC:$mask, RC:$src),
6057 def rmkz : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
6063 def rmbkz : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
6071 def rrk : AVX5128I<opc, MRMSrcReg, (outs RC:$dst),
6072 (ins RC:$src1, KRC:$mask, RC:$src2),
6077 def rmk : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
6078 (ins RC:$src1, KRC:$mask, x86memop:$src2),
6083 def rmbk : AVX5128I<opc, MRMSrcMem, (outs RC:$dst),
6084 (ins RC:$src1, KRC:$mask, x86scalar_mop:$src2),
6168 def rr : AVX512XS8I<opc, MRMSrcReg, (outs Vec.RC:$dst), (ins Vec.KRC:$src),
6170 [(set Vec.RC:$dst, (Vec.VT (X86vsext Vec.KRC:$src)))]>, EVEX;
6198 def rr : AVX512XS8I<opc, MRMSrcReg, (outs _.KRC:$dst), (ins _.RC:$src),
6200 [(set _.KRC:$dst, (trunc (_.VT _.RC:$src)))]>, EVEX;
6232 defm rr : AVX512_maskable<opc, MRMDestReg, _, (outs _.RC:$dst),
6233 (ins _.RC:$src1), OpcodeStr, "$src1", "$src1",
6234 (_.VT (X86compress _.RC:$src1))>, AVX5128IBase;
6238 (ins _.MemOp:$dst, _.RC:$src),
6243 (ins _.MemOp:$dst, _.KRCWM:$mask, _.RC:$src),
6246 (_.VT (X86compress _.RC:$src)), _.ImmAllZerosV)),
6274 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
6275 (ins _.RC:$src1), OpcodeStr, "$src1", "$src1",
6276 (_.VT (X86expand _.RC:$src1))>, AVX5128IBase;
6279 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
6311 defm rri : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
6312 (ins _.RC:$src1, _.RC:$src2, u8imm:$src3),
6314 (OpNode (_.VT _.RC:$src1),
6315 (_.VT _.RC:$src2),
6319 defm rmi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
6320 (ins _.RC:$src1, _.MemOp:$src2, u8imm:$src3),
6322 (OpNode (_.VT _.RC:$src1),
6326 defm rmbi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
6327 (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$src3),
6330 (OpNode (_.VT _.RC:$src1),
6342 defm rri : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
6343 (ins _.RC:$src1, _.RC:$src2, u8imm:$src3),
6345 (OpNode (_.VT _.RC:$src1),
6346 (_.VT _.RC:$src2),
6349 defm rmi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
6350 (ins _.RC:$src1, _.MemOp:$src2, u8imm:$src3),
6352 (OpNode (_.VT _.RC:$src1),
6355 defm rmbi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
6356 (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$src3),
6359 (OpNode (_.VT _.RC:$src1),
6371 defm rri : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
6372 (ins _.RC:$src1, _.RC:$src2, u8imm:$src3),
6374 (OpNode (_.VT _.RC:$src1),
6375 (_.VT _.RC:$src2),
6379 defm rmi : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
6380 (ins _.RC:$src1, _.MemOp:$src2, u8imm:$src3),
6382 (OpNode (_.VT _.RC:$src1),
6400 defm rrib : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
6401 (ins _.RC:$src1, _.RC:$src2, u8imm:$src3),
6404 (OpNode (_.VT _.RC:$src1),
6405 (_.VT _.RC:$src2),
6516 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
6517 (ins _.RC:$src1), OpcodeStr##_.Suffix,
6519 (_.VT (OpNode _.RC:$src1))>, EVEX, AVX5128IBase;
6522 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
6533 defm rmb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),