Lines Matching refs:opName
485 class SOP1_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
487 SIMCInstr<opName, SISubtarget.NONE> {
492 class SOP1_Real_si <sop1 op, string opName, dag outs, dag ins, string asm> :
495 SIMCInstr<opName, SISubtarget.SI> {
500 class SOP1_Real_vi <sop1 op, string opName, dag outs, dag ins, string asm> :
503 SIMCInstr<opName, SISubtarget.VI> {
508 multiclass SOP1_m <sop1 op, string opName, dag outs, dag ins, string asm,
511 def "" : SOP1_Pseudo <opName, outs, ins, pattern>;
513 def _si : SOP1_Real_si <op, opName, outs, ins, asm>;
515 def _vi : SOP1_Real_vi <op, opName, outs, ins, asm>;
519 multiclass SOP1_32 <sop1 op, string opName, list<dag> pattern> : SOP1_m <
520 op, opName, (outs SReg_32:$dst), (ins SSrc_32:$src0),
521 opName#" $dst, $src0", pattern
524 multiclass SOP1_64 <sop1 op, string opName, list<dag> pattern> : SOP1_m <
525 op, opName, (outs SReg_64:$dst), (ins SSrc_64:$src0),
526 opName#" $dst, $src0", pattern
530 multiclass SOP1_64_0 <sop1 op, string opName, list<dag> pattern> {
531 def "" : SOP1_Pseudo <opName, (outs SReg_64:$dst), (ins), pattern>;
533 def _si : SOP1_Real_si <op, opName, (outs SReg_64:$dst), (ins),
534 opName#" $dst"> {
538 def _vi : SOP1_Real_vi <op, opName, (outs SReg_64:$dst), (ins),
539 opName#" $dst"> {
545 multiclass SOP1_1 <sop1 op, string opName, list<dag> pattern> {
546 def "" : SOP1_Pseudo <opName, (outs), (ins SReg_64:$src0), pattern>;
548 def _si : SOP1_Real_si <op, opName, (outs), (ins SReg_64:$src0),
549 opName#" $src0"> {
553 def _vi : SOP1_Real_vi <op, opName, (outs), (ins SReg_64:$src0),
554 opName#" $src0"> {
560 multiclass SOP1_32_64 <sop1 op, string opName, list<dag> pattern> : SOP1_m <
561 op, opName, (outs SReg_32:$dst), (ins SSrc_64:$src0),
562 opName#" $dst, $src0", pattern
565 class SOP2_Pseudo<string opName, dag outs, dag ins, list<dag> pattern> :
567 SIMCInstr<opName, SISubtarget.NONE> {
579 class SOP2_Real_si<sop2 op, string opName, dag outs, dag ins, string asm> :
582 SIMCInstr<opName, SISubtarget.SI> {
586 class SOP2_Real_vi<sop2 op, string opName, dag outs, dag ins, string asm> :
589 SIMCInstr<opName, SISubtarget.VI> {
593 multiclass SOP2_SELECT_32 <sop2 op, string opName, list<dag> pattern> {
594 def "" : SOP2_Pseudo <opName, (outs SReg_32:$dst),
597 def _si : SOP2_Real_si <op, opName, (outs SReg_32:$dst),
599 opName#" $dst, $src0, $src1 [$scc]">;
601 def _vi : SOP2_Real_vi <op, opName, (outs SReg_32:$dst),
603 opName#" $dst, $src0, $src1 [$scc]">;
606 multiclass SOP2_m <sop2 op, string opName, dag outs, dag ins, string asm,
609 def "" : SOP2_Pseudo <opName, outs, ins, pattern>;
611 def _si : SOP2_Real_si <op, opName, outs, ins, asm>;
613 def _vi : SOP2_Real_vi <op, opName, outs, ins, asm>;
617 multiclass SOP2_32 <sop2 op, string opName, list<dag> pattern> : SOP2_m <
618 op, opName, (outs SReg_32:$dst), (ins SSrc_32:$src0, SSrc_32:$src1),
619 opName#" $dst, $src0, $src1", pattern
622 multiclass SOP2_64 <sop2 op, string opName, list<dag> pattern> : SOP2_m <
623 op, opName, (outs SReg_64:$dst), (ins SSrc_64:$src0, SSrc_64:$src1),
624 opName#" $dst, $src0, $src1", pattern
627 multiclass SOP2_64_32 <sop2 op, string opName, list<dag> pattern> : SOP2_m <
628 op, opName, (outs SReg_64:$dst), (ins SSrc_64:$src0, SSrc_32:$src1),
629 opName#" $dst, $src0, $src1", pattern
633 string opName, PatLeaf cond> : SOPC <
635 opName#" $src0, $src1", []>;
637 class SOPC_32<bits<7> op, string opName, PatLeaf cond = COND_NULL>
638 : SOPC_Helper<op, SSrc_32, i32, opName, cond>;
640 class SOPC_64<bits<7> op, string opName, PatLeaf cond = COND_NULL>
641 : SOPC_Helper<op, SSrc_64, i64, opName, cond>;
643 class SOPK_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
645 SIMCInstr<opName, SISubtarget.NONE> {
650 class SOPK_Real_si <sopk op, string opName, dag outs, dag ins, string asm> :
653 SIMCInstr<opName, SISubtarget.SI> {
658 class SOPK_Real_vi <sopk op, string opName, dag outs, dag ins, string asm> :
661 SIMCInstr<opName, SISubtarget.VI> {
666 multiclass SOPK_m <sopk op, string opName, dag outs, dag ins, string opAsm,
667 string asm = opName#opAsm> {
668 def "" : SOPK_Pseudo <opName, outs, ins, []>;
670 def _si : SOPK_Real_si <op, opName, outs, ins, asm>;
672 def _vi : SOPK_Real_vi <op, opName, outs, ins, asm>;
676 multiclass SOPK_32 <sopk op, string opName, list<dag> pattern> {
677 def "" : SOPK_Pseudo <opName, (outs SReg_32:$dst), (ins u16imm:$src0),
680 def _si : SOPK_Real_si <op, opName, (outs SReg_32:$dst), (ins u16imm:$src0),
681 opName#" $dst, $src0">;
683 def _vi : SOPK_Real_vi <op, opName, (outs SReg_32:$dst), (ins u16imm:$src0),
684 opName#" $dst, $src0">;
687 multiclass SOPK_SCC <sopk op, string opName, list<dag> pattern> {
688 def "" : SOPK_Pseudo <opName, (outs SCCReg:$dst),
692 def _si : SOPK_Real_si <op, opName, (outs SCCReg:$dst),
693 (ins SReg_32:$sdst, u16imm:$simm16), opName#" $sdst, $simm16">;
695 def _vi : SOPK_Real_vi <op, opName, (outs SCCReg:$dst),
696 (ins SReg_32:$sdst, u16imm:$simm16), opName#" $sdst, $simm16">;
700 multiclass SOPK_32TIE <sopk op, string opName, list<dag> pattern> : SOPK_m <
701 op, opName, (outs SReg_32:$sdst), (ins SReg_32:$src0, u16imm:$simm16),
705 multiclass SOPK_IMM32 <sopk op, string opName, dag outs, dag ins,
706 string argAsm, string asm = opName#argAsm> {
708 def "" : SOPK_Pseudo <opName, outs, ins, []>;
712 SIMCInstr<opName, SISubtarget.SI> {
719 SIMCInstr<opName, SISubtarget.VI> {
728 class SMRD_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
730 SIMCInstr<opName, SISubtarget.NONE> {
735 class SMRD_Real_si <bits<5> op, string opName, bit imm, dag outs, dag ins,
739 SIMCInstr<opName, SISubtarget.SI> {
743 class SMRD_Real_vi <bits<8> op, string opName, bit imm, dag outs, dag ins,
747 SIMCInstr<opName, SISubtarget.VI> {
751 multiclass SMRD_m <bits<5> op, string opName, bit imm, dag outs, dag ins,
754 def "" : SMRD_Pseudo <opName, outs, ins, pattern>;
756 def _si : SMRD_Real_si <op, opName, imm, outs, ins, asm>;
761 def _vi : SMRD_Real_vi <{0, 0, 0, op}, opName, imm, outs, ins, asm>;
765 multiclass SMRD_Helper <bits<5> op, string opName, RegisterClass baseClass,
768 op, opName#"_IMM", 1, (outs dstClass:$dst),
770 opName#" $dst, $sbase, $offset", []
774 op, opName#"_SGPR", 0, (outs dstClass:$dst),
776 opName#" $dst, $sbase, $soff", []
986 class VOP <string opName> {
987 string OpName = opName;
1000 class VOP1_Pseudo <dag outs, dag ins, list<dag> pattern, string opName> :
1002 VOP <opName>,
1003 SIMCInstr <opName#"_e32", SISubtarget.NONE>,
1004 MnemonicAlias<opName#"_e32", opName> {
1012 class VOP1_Real_si <string opName, vop1 op, dag outs, dag ins, string asm> :
1014 SIMCInstr <opName#"_e32", SISubtarget.SI>;
1016 class VOP1_Real_vi <string opName, vop1 op, dag outs, dag ins, string asm> :
1018 SIMCInstr <opName#"_e32", SISubtarget.VI>;
1021 string opName> {
1022 def "" : VOP1_Pseudo <outs, ins, pattern, opName>;
1024 def _si : VOP1_Real_si <opName, op, outs, ins, asm>;
1026 def _vi : VOP1_Real_vi <opName, op, outs, ins, asm>;
1030 string opName> {
1031 def "" : VOP1_Pseudo <outs, ins, pattern, opName>;
1033 def _si : VOP1_Real_si <opName, op, outs, ins, asm>;
1036 class VOP2_Pseudo <dag outs, dag ins, list<dag> pattern, string opName> :
1038 VOP <opName>,
1039 SIMCInstr<opName#"_e32", SISubtarget.NONE>,
1040 MnemonicAlias<opName#"_e32", opName> {
1045 class VOP2_Real_si <string opName, vop2 op, dag outs, dag ins, string asm> :
1046 VOP2 <op.SI, outs, ins, opName#asm, []>,
1047 SIMCInstr <opName#"_e32", SISubtarget.SI> {
1051 class VOP2_Real_vi <string opName, vop2 op, dag outs, dag ins, string asm> :
1052 VOP2 <op.VI, outs, ins, opName#asm, []>,
1053 SIMCInstr <opName#"_e32", SISubtarget.VI> {
1058 string opName, string revOp> {
1059 def "" : VOP2_Pseudo <outs, ins, pattern, opName>,
1060 VOP2_REV<revOp#"_e32", !eq(revOp, opName)>;
1062 def _si : VOP2_Real_si <opName, op, outs, ins, asm>;
1066 string opName, string revOp> {
1067 def "" : VOP2_Pseudo <outs, ins, pattern, opName>,
1068 VOP2_REV<revOp#"_e32", !eq(revOp, opName)>;
1070 def _si : VOP2_Real_si <opName, op, outs, ins, asm>;
1072 def _vi : VOP2_Real_vi <opName, op, outs, ins, asm>;
1098 class VOP3_Pseudo <dag outs, dag ins, list<dag> pattern, string opName> :
1100 VOP <opName>,
1101 SIMCInstr<opName#"_e64", SISubtarget.NONE>,
1102 MnemonicAlias<opName#"_e64", opName> {
1107 class VOP3_Real_si <bits<9> op, dag outs, dag ins, string asm, string opName> :
1110 SIMCInstr<opName#"_e64", SISubtarget.SI> {
1114 class VOP3_Real_vi <bits<10> op, dag outs, dag ins, string asm, string opName> :
1117 SIMCInstr <opName#"_e64", SISubtarget.VI> {
1121 class VOP3b_Real_si <bits<9> op, dag outs, dag ins, string asm, string opName> :
1124 SIMCInstr<opName#"_e64", SISubtarget.SI> {
1128 class VOP3b_Real_vi <bits<10> op, dag outs, dag ins, string asm, string opName> :
1131 SIMCInstr <opName#"_e64", SISubtarget.VI> {
1136 string opName, int NumSrcArgs, bit HasMods = 1> {
1138 def "" : VOP3_Pseudo <outs, ins, pattern, opName>;
1140 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName>,
1144 def _vi : VOP3_Real_vi <op.VI3, outs, ins, asm, opName>,
1152 string opName, int NumSrcArgs, bit HasMods = 1> {
1154 def "" : VOP3_Pseudo <outs, ins, pattern, opName>;
1161 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName>;
1162 def _vi : VOP3_Real_vi <op.VI3, outs, ins, asm, opName>;
1167 list<dag> pattern, string opName, bit HasMods = 1> {
1169 def "" : VOP3_Pseudo <outs, ins, pattern, opName>;
1171 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName>,
1174 def _vi : VOP3_Real_vi <op.VI3, outs, ins, asm, opName>,
1179 list<dag> pattern, string opName, bit HasMods = 1> {
1181 def "" : VOP3_Pseudo <outs, ins, pattern, opName>;
1183 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName>,
1189 list<dag> pattern, string opName, string revOp,
1192 def "" : VOP3_Pseudo <outs, ins, pattern, opName>,
1193 VOP2_REV<revOp#"_e64", !eq(revOp, opName)>;
1195 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName>,
1198 def _vi : VOP3_Real_vi <op.VI3, outs, ins, asm, opName>,
1203 list<dag> pattern, string opName, string revOp,
1206 def "" : VOP3_Pseudo <outs, ins, pattern, opName>,
1207 VOP2_REV<revOp#"_e64", !eq(revOp, opName)>;
1209 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName>,
1218 list<dag> pattern, string opName, string revOp,
1220 def "" : VOP3_Pseudo <outs, ins, pattern, opName>,
1221 VOP2_REV<revOp#"_e64", !eq(revOp, opName)>;
1227 def _si : VOP3b_Real_si <op.SI3, outs, ins, asm, opName>,
1230 def _vi : VOP3b_Real_vi <op.VI3, outs, ins, asm, opName>,
1236 list<dag> pattern, string opName, string revOp,
1238 def "" : VOP3_Pseudo <outs, ins, pattern, opName>;
1241 def _si : VOP3b_Real_si <op.SI3, outs, ins, asm, opName>,
1244 def _vi : VOP3b_Real_vi <op.VI3, outs, ins, asm, opName>,
1249 list<dag> pattern, string opName,
1252 def "" : VOP3_Pseudo <outs, ins, pattern, opName>,
1253 VOP2_REV<revOp#"_e64", !eq(revOp, opName)>;
1255 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName>,
1260 def _vi : VOP3_Real_vi <op.VI3, outs, ins, asm, opName>,
1267 multiclass VOP2SI_3VI_m <vop3 op, string opName, dag outs, dag ins,
1271 SIMCInstr<opName, SISubtarget.NONE>;
1275 SIMCInstr <opName, SISubtarget.SI> {
1282 SIMCInstr <opName, SISubtarget.VI> {
1287 multiclass VOP1_Helper <vop1 op, string opName, dag outs,
1292 defm _e32 : VOP1_m <op, outs, ins32, opName#asm32, pat32, opName>;
1294 defm _e64 : VOP3_1_m <op, outs, ins64, opName#asm64, pat64, opName, HasMods>;
1297 multiclass VOP1Inst <vop1 op, string opName, VOPProfile P,
1299 op, opName, P.Outs,
1309 multiclass VOP1InstSI <vop1 op, string opName, VOPProfile P,
1312 defm _e32 : VOP1SI_m <op, P.Outs, P.Ins32, opName#P.Asm32, [], opName>;
1314 defm _e64 : VOP3SI_1_m <op, P.Outs, P.Ins64, opName#P.Asm64,
1319 opName, P.HasModifiers>;
1322 multiclass VOP2_Helper <vop2 op, string opName, dag outs,
1326 defm _e32 : VOP2_m <op, outs, ins32, asm32, pat32, opName, revOp>;
1329 outs, ins64, opName#asm64, pat64, opName, revOp, HasMods
1333 multiclass VOP2Inst <vop2 op, string opName, VOPProfile P,
1335 string revOp = opName> : VOP2_Helper <
1336 op, opName, P.Outs,
1348 multiclass VOP2InstSI <vop2 op, string opName, VOPProfile P,
1350 string revOp = opName> {
1351 defm _e32 : VOP2SI_m <op, P.Outs, P.Ins32, P.Asm32, [], opName, revOp>;
1353 defm _e64 : VOP3SI_2_m <op, P.Outs, P.Ins64, opName#P.Asm64,
1360 opName, revOp, P.HasModifiers>;
1363 multiclass VOP2b_Helper <vop2 op, string opName, dag outs,
1368 defm _e32 : VOP2_m <op, outs, ins32, asm32, pat32, opName, revOp>;
1371 outs, ins64, opName#asm64, pat64, opName, revOp, HasMods
1375 multiclass VOP2bInst <vop2 op, string opName, VOPProfile P,
1377 string revOp = opName> : VOP2b_Helper <
1378 op, opName, P.Outs,
1391 multiclass VOP2_VI3_Helper <vop23 op, string opName, dag outs,
1395 defm _e32 : VOP2SI_m <op, outs, ins32, asm32, pat32, opName, revOp>;
1397 defm _e64 : VOP3_2_m <op, outs, ins64, opName#asm64, pat64, opName,
1401 multiclass VOP2_VI3_Inst <vop23 op, string opName, VOPProfile P,
1403 string revOp = opName>
1405 op, opName, P.Outs,
1417 multiclass VOP2MADK <vop2 op, string opName, list<dag> pattern = []> {
1419 def "" : VOP2_Pseudo <VOP_MADK.Outs, VOP_MADK.Ins, pattern, opName>;
1423 !strconcat(opName, VOP_MADK.Asm), []>,
1424 SIMCInstr <opName#"_e32", SISubtarget.SI>,
1428 !strconcat(opName, VOP_MADK.Asm), []>,
1429 SIMCInstr <opName#"_e32", SISubtarget.VI>,
1434 class VOPC_Pseudo <dag outs, dag ins, list<dag> pattern, string opName> :
1436 VOP <opName>,
1437 SIMCInstr<opName#"_e32", SISubtarget.NONE>,
1438 MnemonicAlias<opName#"_e32", opName> {
1444 string opName, bit DefExec, string revOpName = ""> {
1445 def "" : VOPC_Pseudo <outs, ins, pattern, opName>;
1448 SIMCInstr <opName#"_e32", SISubtarget.SI> {
1454 SIMCInstr <opName#"_e32", SISubtarget.VI> {
1460 multiclass VOPC_Helper <vopc op, string opName,
1464 defm _e32 : VOPC_m <op, (outs), ins32, opName#asm32, pat32, opName, DefExec>;
1466 defm _e64 : VOP3_C_m <op, out64, ins64, opName#asm64, pat64,
1467 opName, HasMods, DefExec, revOp>;
1472 multiclass VOPC_Class_Helper <vopc op, string opName,
1476 defm _e32 : VOPC_m <op, (outs), ins32, opName#asm32, pat32, opName, DefExec>;
1478 defm _e64 : VOP3_C_m <op, out64, ins64, opName#asm64, pat64,
1479 opName, HasMods, DefExec, revOp>,
1483 multiclass VOPCInst <vopc op, string opName,
1485 string revOp = opName,
1487 op, opName,
1500 multiclass VOPCClassInst <vopc op, string opName, VOPProfile P,
1502 op, opName,
1509 P.HasModifiers, DefExec, opName
1513 multiclass VOPC_F32 <vopc op, string opName, PatLeaf cond = COND_NULL, string revOp = opName> :
1514 VOPCInst <op, opName, VOP_F32_F32_F32, cond, revOp>;
1516 multiclass VOPC_F64 <vopc op, string opName, PatLeaf cond = COND_NULL, string revOp = opName> :
1517 VOPCInst <op, opName, VOP_F64_F64_F64, cond, revOp>;
1519 multiclass VOPC_I32 <vopc op, string opName, PatLeaf cond = COND_NULL, string revOp = opName> :
1520 VOPCInst <op, opName, VOP_I32_I32_I32, cond, revOp>;
1522 multiclass VOPC_I64 <vopc op, string opName, PatLeaf cond = COND_NULL, string revOp = opName> :
1523 VOPCInst <op, opName, VOP_I64_I64_I64, cond, revOp>;
1526 multiclass VOPCX <vopc op, string opName, VOPProfile P,
1529 : VOPCInst <op, opName, P, cond, revOp, 1>;
1531 multiclass VOPCX_F32 <vopc op, string opName, string revOp = opName> :
1532 VOPCX <op, opName, VOP_F32_F32_F32, COND_NULL, revOp>;
1534 multiclass VOPCX_F64 <vopc op, string opName, string revOp = opName> :
1535 VOPCX <op, opName, VOP_F64_F64_F64, COND_NULL, revOp>;
1537 multiclass VOPCX_I32 <vopc op, string opName, string revOp = opName> :
1538 VOPCX <op, opName, VOP_I32_I32_I32, COND_NULL, revOp>;
1540 multiclass VOPCX_I64 <vopc op, string opName, string revOp = opName> :
1541 VOPCX <op, opName, VOP_I64_I64_I64, COND_NULL, revOp>;
1543 multiclass VOP3_Helper <vop3 op, string opName, dag outs, dag ins, string asm,
1545 op, outs, ins, opName#" "#asm, pat, opName, NumSrcArgs, HasMods
1548 multiclass VOPC_CLASS_F32 <vopc op, string opName> :
1549 VOPCClassInst <op, opName, VOP_I1_F32_I32, 0>;
1551 multiclass VOPCX_CLASS_F32 <vopc op, string opName> :
1552 VOPCClassInst <op, opName, VOP_I1_F32_I32, 1>;
1554 multiclass VOPC_CLASS_F64 <vopc op, string opName> :
1555 VOPCClassInst <op, opName, VOP_I1_F64_I32, 0>;
1557 multiclass VOPCX_CLASS_F64 <vopc op, string opName> :
1558 VOPCClassInst <op, opName, VOP_I1_F64_I32, 1>;
1560 multiclass VOP3Inst <vop3 op, string opName, VOPProfile P,
1562 op, opName, (outs P.DstRC.RegClass:$dst), P.Ins64, P.Asm64,
1590 multiclass VOP3_VCC_Inst <vop3 op, string opName,
1593 op, opName,
1611 string opName, list<dag> pattern> :
1618 …opName#" $vdst, $sdst, $src0_modifiers, $src1_modifiers, $src2_modifiers"#"$clamp"#"$omod", patter…
1619 opName, opName, 1, 1
1622 multiclass VOP3b_64 <vop3 op, string opName, list<dag> pattern> :
1623 VOP3b_Helper <op, VReg_64, VSrc_64, opName, pattern>;
1625 multiclass VOP3b_32 <vop3 op, string opName, list<dag> pattern> :
1626 VOP3b_Helper <op, VGPR_32, VSrc_32, opName, pattern>;
1643 class VINTRP_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
1645 SIMCInstr<opName, SISubtarget.NONE> {
1650 class VINTRP_Real_si <bits <2> op, string opName, dag outs, dag ins,
1654 SIMCInstr<opName, SISubtarget.SI>;
1656 class VINTRP_Real_vi <bits <2> op, string opName, dag outs, dag ins,
1660 SIMCInstr<opName, SISubtarget.VI>;
1662 multiclass VINTRP_m <bits <2> op, string opName, dag outs, dag ins, string asm,
1667 def "" : VINTRP_Pseudo <opName, outs, ins, pattern>;
1669 def _si : VINTRP_Real_si <op, opName, outs, ins, asm>;
1671 def _vi : VINTRP_Real_vi <op, opName, outs, ins, asm>;
1679 class DS_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
1681 SIMCInstr <opName, SISubtarget.NONE> {
1686 class DS_Real_si <bits<8> op, string opName, dag outs, dag ins, string asm> :
1689 SIMCInstr <opName, SISubtarget.SI> {
1693 class DS_Real_vi <bits<8> op, string opName, dag outs, dag ins, string asm> :
1696 SIMCInstr <opName, SISubtarget.VI>;
1698 class DS_Off16_Real_si <bits<8> op, string opName, dag outs, dag ins, string asm> :
1699 DS_Real_si <op,opName, outs, ins, asm> {
1708 class DS_Off16_Real_vi <bits<8> op, string opName, dag outs, dag ins, string asm> :
1709 DS_Real_vi <op, opName, outs, ins, asm> {
1717 multiclass DS_1A_RET <bits<8> op, string opName, RegisterClass rc,
1720 string asm = opName#" $vdst, $addr"#"$offset$gds"> {
1722 def "" : DS_Pseudo <opName, outs, ins, []>;
1725 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
1726 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
1730 multiclass DS_1A_Off8_RET <bits<8> op, string opName, RegisterClass rc,
1734 string asm = opName#" $vdst, $addr"#"$offset0"#"$offset1$gds"> {
1736 def "" : DS_Pseudo <opName, outs, ins, []>;
1739 def _si : DS_Real_si <op, opName, outs, ins, asm>;
1740 def _vi : DS_Real_vi <op, opName, outs, ins, asm>;
1744 multiclass DS_1A1D_NORET <bits<8> op, string opName, RegisterClass rc,
1748 string asm = opName#" $addr, $data0"#"$offset$gds"> {
1750 def "" : DS_Pseudo <opName, outs, ins, []>,
1751 AtomicNoRet<opName, 0>;
1754 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
1755 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
1759 multiclass DS_1A1D_Off8_NORET <bits<8> op, string opName, RegisterClass rc,
1763 string asm = opName#" $addr, $data0, $data1"#"$offset0"#"$offset1"#"$gds"> {
1765 def "" : DS_Pseudo <opName, outs, ins, []>;
1768 def _si : DS_Real_si <op, opName, outs, ins, asm>;
1769 def _vi : DS_Real_vi <op, opName, outs, ins, asm>;
1773 multiclass DS_1A1D_RET <bits<8> op, string opName, RegisterClass rc,
1778 string asm = opName#" $vdst, $addr, $data0"#"$offset$gds"> {
1780 def "" : DS_Pseudo <opName, outs, ins, []>,
1784 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
1785 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
1789 multiclass DS_1A2D_RET_m <bits<8> op, string opName, RegisterClass rc,
1792 string asm = opName#" $vdst, $addr, $data0, $data1"#"$offset"#"$gds"> {
1794 def "" : DS_Pseudo <opName, outs, ins, []>,
1797 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
1798 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
1808 multiclass DS_1A2D_NORET <bits<8> op, string opName, RegisterClass rc,
1809 string noRetOp = opName,
1813 string asm = opName#" $addr, $data0, $data1"#"$offset"#"$gds"> {
1815 def "" : DS_Pseudo <opName, outs, ins, []>,
1819 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
1820 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
1824 multiclass DS_0A_RET <bits<8> op, string opName,
1827 string asm = opName#" $vdst"#"$offset"#"$gds"> {
1830 def "" : DS_Pseudo <opName, outs, ins, []>;
1833 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
1834 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
1839 multiclass DS_1A_RET_GDS <bits<8> op, string opName,
1842 string asm = opName#" $vdst, $addr"#"$offset gds"> {
1844 def "" : DS_Pseudo <opName, outs, ins, []>;
1847 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
1848 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
1852 multiclass DS_1A_GDS <bits<8> op, string opName,
1855 string asm = opName#" $addr gds"> {
1857 def "" : DS_Pseudo <opName, outs, ins, []>;
1860 def _si : DS_Real_si <op, opName, outs, ins, asm>;
1861 def _vi : DS_Real_vi <op, opName, outs, ins, asm>;
1865 multiclass DS_1A <bits<8> op, string opName,
1868 string asm = opName#" $addr"#"$offset"#"$gds"> {
1871 def "" : DS_Pseudo <opName, outs, ins, []>;
1874 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
1875 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
1884 class MTBUF_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
1886 SIMCInstr<opName, SISubtarget.NONE> {
1891 class MTBUF_Real_si <bits<3> op, string opName, dag outs, dag ins,
1895 SIMCInstr<opName, SISubtarget.SI>;
1897 class MTBUF_Real_vi <bits<4> op, string opName, dag outs, dag ins, string asm> :
1900 SIMCInstr <opName, SISubtarget.VI>;
1902 multiclass MTBUF_m <bits<3> op, string opName, dag outs, dag ins, string asm,
1905 def "" : MTBUF_Pseudo <opName, outs, ins, pattern>;
1907 def _si : MTBUF_Real_si <op, opName, outs, ins, asm>;
1909 def _vi : MTBUF_Real_vi <{0, op{2}, op{1}, op{0}}, opName, outs, ins, asm>;
1915 multiclass MTBUF_Store_Helper <bits<3> op, string opName,
1917 op, opName, (outs),
1921 opName#" $vdata, $offset, $offen, $idxen, $glc, $addr64, $dfmt,"
1929 multiclass MTBUF_Load_Helper <bits<3> op, string opName,
1931 op, opName, (outs regClass:$dst),
1935 opName#" $dst, $offset, $offen, $idxen, $glc, $addr64, $dfmt,"
1969 class MUBUF_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
1971 SIMCInstr<opName, SISubtarget.NONE> {
1985 class MUBUF_Real_si <mubuf op, string opName, dag outs, dag ins,
1989 SIMCInstr<opName, SISubtarget.SI> {
1993 class MUBUF_Real_vi <mubuf op, string opName, dag outs, dag ins,
1997 SIMCInstr<opName, SISubtarget.VI> {
2001 multiclass MUBUF_m <mubuf op, string opName, dag outs, dag ins, string asm,
2004 def "" : MUBUF_Pseudo <opName, outs, ins, pattern>,
2008 def _si : MUBUF_Real_si <op, opName, outs, ins, asm>;
2011 def _vi : MUBUF_Real_vi <op, opName, outs, ins, asm>;
2014 multiclass MUBUFAddr64_m <mubuf op, string opName, dag outs,
2017 def "" : MUBUF_Pseudo <opName, outs, ins, pattern>,
2021 def _si : MUBUF_Real_si <op, opName, outs, ins, asm>;
2028 multiclass MUBUFAtomicOffset_m <mubuf op, string opName, dag outs, dag ins,
2031 def "" : MUBUF_Pseudo <opName, outs, ins, pattern>,
2037 def _si : MUBUF_Real_si <op, opName, outs, ins, asm>;
2040 def _vi : MUBUF_Real_vi <op, opName, outs, ins, asm>;
2044 multiclass MUBUFAtomicAddr64_m <mubuf op, string opName, dag outs, dag ins,
2047 def "" : MUBUF_Pseudo <opName, outs, ins, pattern>,
2052 def _si : MUBUF_Real_si <op, opName, outs, ins, asm>;