Lines Matching full:ps
163 class VOP_Real<VOP_Pseudo ps> {
165 bit IsSingle = ps.Pfl.IsSingle;
166 bit IsInvalidSingleUseConsumer = ps.Pfl.IsInvalidSingleUseConsumer;
167 bit IsInvalidSingleUseProducer = ps.Pfl.IsInvalidSingleUseProducer;
170 class VOP3_Real <VOP_Pseudo ps, int EncodingFamily, string asm_name = ps.Mnemonic> :
171 VOP_Real <ps>,
172 InstSI <ps.OutOperandList, ps.InOperandList, asm_name # ps.AsmOperands, []>,
173 SIMCInstr <ps.PseudoInstr, EncodingFamily> {
182 let SubtargetPredicate = ps.SubtargetPredicate;
183 let WaveSizePredicate = ps.WaveSizePredicate;
184 let OtherPredicates = ps.OtherPredicates;
185 let AsmMatchConverter = ps.AsmMatchConverter;
186 let AsmVariantName = ps.AsmVariantName;
187 let Constraints = ps.Constraints;
188 let DisableEncoding = ps.DisableEncoding;
189 let TSFlags = ps.TSFlags;
190 let UseNamedOperandTable = ps.UseNamedOperandTable;
191 let Uses = ps.Uses;
192 let Defs = ps.Defs;
193 let SchedRW = ps.SchedRW;
194 let mayLoad = ps.mayLoad;
195 let mayStore = ps.mayStore;
196 let TRANS = ps.TRANS;
198 VOPProfile Pfl = ps.Pfl;
201 class VOP3_Real_Gen <VOP_Pseudo ps, GFXGen Gen, string asm_name = ps.Mnemonic> :
202 VOP3_Real <ps, Gen.Subtarget, asm_name> {
204 let True16Predicate = !if(ps.Pfl.IsRealTrue16, UseRealTrue16Insts, NoTrue16Predicate);
206 !if(ps.Pfl.IsRealTrue16, "", "_FAKE16");
211 class VOP3P_Real<VOP_Pseudo ps, int EncodingFamily, string asm_name = ps.Mnemonic> :
212 VOP3_Real<ps, EncodingFamily, asm_name> {
215 let Constraints = !if(!eq(!substr(ps.Mnemonic,0,6), "v_wmma"), "", ps.Constraints);
218 class VOP3P_Real_Gen<VOP_Pseudo ps, GFXGen Gen, string asm_name = ps.Mnemonic> :
219 VOP3P_Real<ps, Gen.Subtarget, asm_name> {
624 class VOP_SDWA_Real <VOP_SDWA_Pseudo ps> :
625 InstSI <ps.OutOperandList, ps.InOperandList, ps.Mnemonic # ps.AsmOperands, []>,
626 SIMCInstr <ps.PseudoInstr, SIEncodingFamily.SDWA> {
633 let Defs = ps.Defs;
634 let Uses = ps.Uses;
635 let hasSideEffects = ps.hasSideEffects;
637 let Constraints = ps.Constraints;
638 let DisableEncoding = ps.DisableEncoding;
641 let SubtargetPredicate = ps.SubtargetPredicate;
642 let AssemblerPredicate = ps.AssemblerPredicate;
643 let AsmMatchConverter = ps.AsmMatchConverter;
644 let AsmVariantName = ps.AsmVariantName;
645 let UseNamedOperandTable = ps.UseNamedOperandTable;
646 let DecoderNamespace = ps.DecoderNamespace;
647 let Constraints = ps.Constraints;
648 let DisableEncoding = ps.DisableEncoding;
649 let TSFlags = ps.TSFlags;
650 let Uses = ps.Uses;
651 let Defs = ps.Defs;
652 let SchedRW = ps.SchedRW;
653 let mayLoad = ps.mayLoad;
654 let mayStore = ps.mayStore;
655 let TRANS = ps.TRANS;
658 class Base_VOP_SDWA9_Real <VOP_SDWA_Pseudo ps> :
659 InstSI <ps.OutOperandList, ps.InOperandList, ps.Mnemonic # ps.AsmOperands9, []> {
666 let Defs = ps.Defs;
667 let Uses = ps.Uses;
668 let hasSideEffects = ps.hasSideEffects;
670 let Constraints = ps.Constraints;
671 let DisableEncoding = ps.DisableEncoding;
675 let OtherPredicates = ps.OtherPredicates;
676 let AsmVariantName = !if(ps.Pfl.HasExtSDWA9, AMDGPUAsmVariants.SDWA9,
681 let AsmMatchConverter = ps.AsmMatchConverter;
682 let UseNamedOperandTable = ps.UseNamedOperandTable;
683 let Constraints = ps.Constraints;
684 let DisableEncoding = ps.DisableEncoding;
685 let TSFlags = ps.TSFlags;
686 let Uses = ps.Uses;
687 let Defs = ps.Defs;
688 let SchedRW = ps.SchedRW;
689 let mayLoad = ps.mayLoad;
690 let mayStore = ps.mayStore;
691 let TRANS = ps.TRANS;
694 class VOP_SDWA9_Real <VOP_SDWA_Pseudo ps> :
695 Base_VOP_SDWA9_Real <ps >,
696 SIMCInstr <ps.PseudoInstr, SIEncodingFamily.SDWA9>;
698 class Base_VOP_SDWA10_Real<VOP_SDWA_Pseudo ps> : Base_VOP_SDWA9_Real<ps> {
704 class VOP_SDWA10_Real<VOP_SDWA_Pseudo ps> :
705 Base_VOP_SDWA10_Real<ps>, SIMCInstr<ps.PseudoInstr, SIEncodingFamily.SDWA10>;
858 class VOP_DPP_Real <VOP_DPP_Pseudo ps, int EncodingFamily> :
859 InstSI <ps.OutOperandList, ps.InOperandList, ps.Mnemonic # ps.AsmOperands, []>,
860 SIMCInstr <ps.PseudoInstr, EncodingFamily> {
867 let Defs = ps.Defs;
868 let Uses = ps.Uses;
869 let hasSideEffects = ps.hasSideEffects;
871 let Constraints = ps.Constraints;
872 let DisableEncoding = ps.DisableEncoding;
875 let isConvergent = ps.isConvergent;
876 let SubtargetPredicate = ps.SubtargetPredicate;
877 let AssemblerPredicate = ps.AssemblerPredicate;
878 let OtherPredicates = ps.OtherPredicates;
879 let AsmMatchConverter = ps.AsmMatchConverter;
880 let AsmVariantName = ps.AsmVariantName;
881 let UseNamedOperandTable = ps.UseNamedOperandTable;
882 let DecoderNamespace = ps.DecoderNamespace;
883 let Constraints = ps.Constraints;
884 let DisableEncoding = ps.DisableEncoding;
885 let TSFlags = ps.TSFlags;
886 let Uses = ps.Uses;
887 let Defs = ps.Defs;
888 let SchedRW = ps.SchedRW;
889 let mayLoad = ps.mayLoad;
890 let mayStore = ps.mayStore;
891 let TRANS = ps.TRANS;
1335 class Base_VOP3_DPP16<bits<10> op, VOP_DPP_Pseudo ps, string opName = ps.OpName>
1336 : VOP3_DPP<op, opName, ps.Pfl, 1> {
1337 let VOP3_OPSEL = ps.Pfl.HasOpSel;
1338 let IsDOT = ps.IsDOT;
1339 let hasSideEffects = ps.hasSideEffects;
1340 let Defs = ps.Defs;
1341 let SchedRW = ps.SchedRW;
1342 let Uses = ps.Uses;
1344 let SubtargetPredicate = ps.SubtargetPredicate;
1345 let OtherPredicates = ps.OtherPredicates;
1348 class VOP3_DPP16<bits<10> op, VOP_DPP_Pseudo ps, int subtarget,
1349 string opName = ps.OpName>
1350 : Base_VOP3_DPP16<op, ps, opName>, SIMCInstr<ps.PseudoInstr, subtarget>;
1352 class VOP3_DPP16_Gen<bits<10> op, VOP_DPP_Pseudo ps, GFXGen Gen,
1353 string opName = ps.OpName> :
1354 VOP3_DPP16 <op, ps, Gen.Subtarget, opName> {
1356 let True16Predicate = !if(ps.Pfl.IsRealTrue16, UseRealTrue16Insts, NoTrue16Predicate);
1358 !if(ps.Pfl.IsRealTrue16, "", "_FAKE16");
1361 class Base_VOP3_DPP8<bits<10> op, VOP_Pseudo ps, string opName = ps.OpName>
1362 : VOP3_DPP8<op, opName, ps.Pfl> {
1363 let VOP3_OPSEL = ps.Pfl.HasOpSel;
1364 let IsDOT = ps.IsDOT;
1365 let hasSideEffects = ps.hasSideEffects;
1366 let Defs = ps.Defs;
1367 let SchedRW = ps.SchedRW;
1368 let Uses = ps.Uses;
1370 let SubtargetPredicate = ps.SubtargetPredicate;
1371 let OtherPredicates = ps.OtherPredicates;
1374 class Base_VOP3b_DPP16<bits<10> op, VOP_DPP_Pseudo ps,
1375 string opName = ps.OpName>
1376 : Base_VOP3_DPP16<op, ps, opName> {
1381 class VOP3b_DPP8_Base<bits<10> op, VOP_Pseudo ps, string opName = ps.OpName>
1382 : Base_VOP3_DPP8<op, ps, opName> {
1393 defvar ps = !cast<VOP_Pseudo>(opName#"_e64");
1394 let IsSingle = !or(isSingle, ps.Pfl.IsSingle) in {
1395 if ps.Pfl.IsFP8SrcByteSel then {
1397 VOP3_Real_Gen<ps, Gen>,
1398 VOP3FP8OpSel_src_bytesel_gfx11_gfx12<op, ps.Pfl>;
1399 } else if ps.Pfl.IsFP8DstByteSel then {
1401 VOP3_Real_Gen<ps, Gen>,
1402 VOP3FP8OpSel_dst_bytesel_gfx11_gfx12<op, ps.Pfl>;
1403 } else if ps.Pfl.HasOpSel then {
1405 VOP3_Real_Gen<ps, Gen>,
1406 VOP3OpSel_gfx11_gfx12<op, ps.Pfl>;
1409 VOP3_Real_Gen<ps, Gen>,
1410 VOP3e_gfx11_gfx12<op, ps.Pfl>;
1417 defvar ps = !cast<VOP_Pseudo>(opName#"_e64");
1418 let IsSingle = !or(isSingle, ps.Pfl.IsSingle) in {
1420 VOP3_Real_Gen<ps, Gen>,
1421 VOP3DotOpSel_gfx11_gfx12<op, ps.Pfl>;
1427 defvar ps = !cast<VOP_Pseudo>(opName#"_e64");
1428 let AsmString = asmName # ps.AsmOperands,
1429 IsSingle = !or(isSingle, ps.Pfl.IsSingle) in {
1430 if ps.Pfl.IsFP8SrcByteSel then {
1432 VOP3_Real_Gen<ps, Gen>,
1433 VOP3FP8OpSel_src_bytesel_gfx11_gfx12<op, ps.Pfl>;
1434 } else if ps.Pfl.IsFP8DstByteSel then {
1436 VOP3_Real_Gen<ps, Gen>,
1437 VOP3FP8OpSel_dst_bytesel_gfx11_gfx12<op, ps.Pfl>;
1438 } else if ps.Pfl.HasOpSel then {
1440 VOP3_Real_Gen<ps, Gen>,
1441 VOP3OpSel_gfx11_gfx12<op, ps.Pfl>;
1444 VOP3_Real_Gen<ps, Gen>,
1445 VOP3e_gfx11_gfx12<op, ps.Pfl>;
1448 def Gen.Suffix#"_VOP3_alias" : LetDummies, AMDGPUMnemonicAlias<ps.Mnemonic, asmName> {
1455 defvar ps = !cast<VOP_Pseudo>(opName);
1457 VOP3_Real_Gen<ps, Gen>,
1458 VOP3e_gfx11_gfx12<op, ps.Pfl>;
1476 defvar ps = !cast<VOP3_Pseudo>(opName#"_e64");
1477 let AsmString = asmName # ps.Pfl.AsmVOP3DPP16 in {
1483 defvar ps = !cast<VOP3_Pseudo>(opName#"_e64");
1484 def _e64_dpp8#Gen.Suffix : Base_VOP3_DPP8<op, ps> {
1491 defvar ps = !cast<VOP3_Pseudo>(opName#"_e64");
1492 def _e64_dpp8#Gen.Suffix : Base_VOP3_DPP8<op, ps> {
1502 defvar ps = !cast<VOP3_Pseudo>(opName#"_e64");
1503 let AsmString = asmName # ps.Pfl.AsmVOP3DPP8,
1505 !if(ps.Pfl.IsRealTrue16, "", "_FAKE16"),
1506 True16Predicate = !if(ps.Pfl.IsRealTrue16, UseRealTrue16Insts,
1514 defvar ps = !cast<VOP3_Pseudo>(opName#"_e64");
1515 let IsSingle = !or(isSingle, ps.Pfl.IsSingle) in
1517 VOP3_Real_Gen<ps, Gen, asmName>,
1518 VOP3be_gfx11_gfx12<op, ps.Pfl> ;
1523 defvar ps = !cast<VOP3_Pseudo>(opName #"_e64");
1534 defvar ps = !cast<VOP3_Pseudo>(opName #"_e64");
1535 def _e64_dpp8#Gen.Suffix : VOP3b_DPP8_Base<op, ps, asmName> {
1618 defvar ps = !cast<VOP3_Pseudo>(opName#"_e64");
1619 let AsmString = asmName # ps.AsmOperands,
1620 IsSingle = !or(isSingle, ps.Pfl.IsSingle) in
1622 VOP3_Real_Gen<ps, GFX12Gen, asmName>,
1623 VOP3be_gfx11_gfx12<op, ps.Pfl>;
1624 def : AMDGPUMnemonicAlias<ps.Mnemonic, asmName> {