Lines Matching refs:instruction
14 /// Overview of our vector instruction pseudos. Many of the instructions
18 /// specific instruction, but the common dimensions are:
49 /// instructions for each actual instruction. Said differently, we encode
50 /// each of the preceding fields which are relevant for a given instruction
722 // The destination vector register group for a masked vector instruction cannot
2403 // For vadc and vsbc, the instruction encoding is reserved if the destination
4603 multiclass VPatUnaryV_V_AnyMask<string intrinsic, string instruction,
4607 def : VPatUnaryAnyMask<intrinsic, instruction, "VM",
4621 multiclass VPatUnaryV_M<string intrinsic, string instruction> {
4624 def : VPatUnaryNoMask<intrinsic, instruction, "M", vti.Vector, vti.Mask,
4626 def : VPatUnaryMask<intrinsic, instruction, "M", vti.Vector, vti.Mask,
4632 multiclass VPatUnaryV_VF<string intrinsic, string instruction, string suffix,
4639 def : VPatUnaryNoMask<intrinsic, instruction, suffix,
4642 def : VPatUnaryMask<intrinsic, instruction, suffix,
4649 multiclass VPatUnaryV_V<string intrinsic, string instruction,
4653 def : VPatUnaryNoMask<intrinsic, instruction, "V",
4656 def : VPatUnaryMask<intrinsic, instruction, "V",
4663 multiclass VPatUnaryV_V_RM<string intrinsic, string instruction,
4667 def : VPatUnaryNoMaskRoundingMode<intrinsic, instruction, "V",
4670 def : VPatUnaryMaskRoundingMode<intrinsic, instruction, "V",
4677 multiclass VPatNullaryV<string intrinsic, string instruction> {
4683 (!cast<Instruction>(instruction#"_V_" # vti.LMul.MX)
4688 (!cast<Instruction>(instruction#"_V_" # vti.LMul.MX # "_MASK")
4895 multiclass VPatBinaryV_VV<string intrinsic, string instruction,
4901 instruction # "_VV_" # vti.LMul.MX # "_E" # vti.SEW,
4902 instruction # "_VV_" # vti.LMul.MX),
4908 multiclass VPatBinaryV_VV_RM<string intrinsic, string instruction,
4914 instruction # "_VV_" # vti.LMul.MX # "_E" # vti.SEW,
4915 instruction # "_VV_" # vti.LMul.MX),
4921 multiclass VPatBinaryV_VV_INT<string intrinsic, string instruction,
4927 instruction # "_VV_" # vti.LMul.MX # "_E" # vti.SEW,
4934 multiclass VPatBinaryV_VV_INT_EEW<string intrinsic, string instruction,
4944 defvar inst = instruction # "_VV_" # vti.LMul.MX # "_E" # vti.SEW # "_" # emul_str;
4955 multiclass VPatBinaryV_VX<string intrinsic, string instruction,
4962 instruction#"_"#kind#"_"#vti.LMul.MX#"_E"#vti.SEW,
4963 instruction#"_"#kind#"_"#vti.LMul.MX),
4970 multiclass VPatBinaryV_VX_RM<string intrinsic, string instruction,
4977 instruction#"_"#kind#"_"#vti.LMul.MX#"_E"#vti.SEW,
4978 instruction#"_"#kind#"_"#vti.LMul.MX),
4985 multiclass VPatBinaryV_VX_INT<string intrinsic, string instruction,
4989 defm : VPatBinary<intrinsic, instruction # "_VX_" # vti.LMul.MX,
4995 multiclass VPatBinaryV_VI<string intrinsic, string instruction,
4999 defm : VPatBinary<intrinsic, instruction # "_VI_" # vti.LMul.MX,
5005 multiclass VPatBinaryV_VI_RM<string intrinsic, string instruction,
5011 instruction # "_VI_" # vti.LMul.MX,
5017 multiclass VPatBinaryM_MM<string intrinsic, string instruction> {
5020 def : VPatBinaryM<intrinsic, instruction # "_MM_" # mti.LMul.MX,
5025 multiclass VPatBinaryW_VV<string intrinsic, string instruction,
5032 defm : VPatBinary<intrinsic, instruction # "_VV_" # Vti.LMul.MX,
5039 multiclass VPatBinaryW_VV_RM<string intrinsic, string instruction,
5045 instruction # "_VV_" # Vti.LMul.MX # "_E" # Vti.SEW,
5046 instruction # "_VV_" # Vti.LMul.MX);
5056 multiclass VPatBinaryW_VX<string intrinsic, string instruction,
5064 defm : VPatBinary<intrinsic, instruction#"_"#kind#"_"#Vti.LMul.MX,
5071 multiclass VPatBinaryW_VX_RM<string intrinsic, string instruction,
5078 instruction#"_"#kind#"_"#Vti.LMul.MX # "_E" # Vti.SEW,
5079 instruction#"_"#kind#"_"#Vti.LMul.MX);
5089 multiclass VPatBinaryW_WV<string intrinsic, string instruction,
5096 def : VPatTiedBinaryNoMask<intrinsic, instruction # "_WV_" # Vti.LMul.MX,
5099 def : VPatBinaryNoMaskTU<intrinsic, instruction # "_WV_" # Vti.LMul.MX,
5103 def : VPatTiedBinaryNoMaskTU<intrinsic, instruction # "_WV_" # Vti.LMul.MX,
5106 def : VPatTiedBinaryMask<intrinsic, instruction # "_WV_" # Vti.LMul.MX,
5110 def : VPatBinaryMaskPolicy<intrinsic, instruction # "_WV_" # Vti.LMul.MX,
5118 multiclass VPatBinaryW_WV_RM<string intrinsic, string instruction,
5124 instruction # "_WV_" # Vti.LMul.MX # "_E" # Vti.SEW,
5125 instruction # "_WV_" # Vti.LMul.MX);
5150 multiclass VPatBinaryW_WX<string intrinsic, string instruction,
5158 defm : VPatBinary<intrinsic, instruction#"_"#kind#"_"#Vti.LMul.MX,
5165 multiclass VPatBinaryW_WX_RM<string intrinsic, string instruction,
5172 instruction#"_"#kind#"_"#Vti.LMul.MX#"_E"#Vti.SEW,
5173 instruction#"_"#kind#"_"#Vti.LMul.MX);
5183 multiclass VPatBinaryV_WV<string intrinsic, string instruction,
5190 defm : VPatBinary<intrinsic, instruction # "_WV_" # Vti.LMul.MX,
5197 multiclass VPatBinaryV_WV_RM<string intrinsic, string instruction,
5205 instruction # "_WV_" # Vti.LMul.MX,
5212 multiclass VPatBinaryV_WX<string intrinsic, string instruction,
5220 defm : VPatBinary<intrinsic, instruction#"_"#kind#"_"#Vti.LMul.MX,
5227 multiclass VPatBinaryV_WX_RM<string intrinsic, string instruction,
5236 instruction#"_"#kind#"_"#Vti.LMul.MX,
5244 multiclass VPatBinaryV_WI<string intrinsic, string instruction,
5251 defm : VPatBinary<intrinsic, instruction # "_WI_" # Vti.LMul.MX,
5258 multiclass VPatBinaryV_WI_RM<string intrinsic, string instruction,
5266 instruction # "_WI_" # Vti.LMul.MX,
5273 multiclass VPatBinaryV_VM<string intrinsic, string instruction,
5278 defm : VPatBinaryCarryIn<intrinsic, instruction, "VVM",
5285 multiclass VPatBinaryV_XM<string intrinsic, string instruction,
5290 defm : VPatBinaryCarryIn<intrinsic, instruction,
5298 multiclass VPatBinaryV_IM<string intrinsic, string instruction,
5302 defm : VPatBinaryCarryIn<intrinsic, instruction, "VIM",
5309 multiclass VPatBinaryV_VM_TAIL<string intrinsic, string instruction> {
5312 defm : VPatBinaryCarryInTAIL<intrinsic, instruction, "VVM",
5319 multiclass VPatBinaryV_XM_TAIL<string intrinsic, string instruction> {
5322 defm : VPatBinaryCarryInTAIL<intrinsic, instruction,
5330 multiclass VPatBinaryV_IM_TAIL<string intrinsic, string instruction> {
5333 defm : VPatBinaryCarryInTAIL<intrinsic, instruction, "VIM",
5340 multiclass VPatBinaryV_V<string intrinsic, string instruction> {
5343 defm : VPatBinaryMaskOut<intrinsic, instruction, "VV",
5349 multiclass VPatBinaryV_X<string intrinsic, string instruction> {
5352 defm : VPatBinaryMaskOut<intrinsic, instruction, "VX",
5358 multiclass VPatBinaryV_I<string intrinsic, string instruction> {
5361 defm : VPatBinaryMaskOut<intrinsic, instruction, "VI",
5367 multiclass VPatBinaryM_VV<string intrinsic, string instruction,
5371 defm : VPatBinaryM<intrinsic, instruction # "_VV_" # vti.LMul.MX,
5377 multiclass VPatBinarySwappedM_VV<string intrinsic, string instruction,
5381 defm : VPatBinaryMSwapped<intrinsic, instruction # "_VV_" # vti.LMul.MX,
5387 multiclass VPatBinaryM_VX<string intrinsic, string instruction,
5392 defm : VPatBinaryM<intrinsic, instruction#"_"#kind#"_"#vti.LMul.MX,
5399 multiclass VPatBinaryM_VI<string intrinsic, string instruction,
5403 defm : VPatBinaryM<intrinsic, instruction # "_VI_" # vti.LMul.MX,
5409 multiclass VPatBinaryV_VV_VX_VI<string intrinsic, string instruction,
5411 : VPatBinaryV_VV<intrinsic, instruction, vtilist>,
5412 VPatBinaryV_VX<intrinsic, instruction, vtilist>,
5413 VPatBinaryV_VI<intrinsic, instruction, vtilist, ImmType>;
5415 multiclass VPatBinaryV_VV_VX_VI_RM<string intrinsic, string instruction,
5417 : VPatBinaryV_VV_RM<intrinsic, instruction, vtilist>,
5418 VPatBinaryV_VX_RM<intrinsic, instruction, vtilist>,
5419 VPatBinaryV_VI_RM<intrinsic, instruction, vtilist, ImmType>;
5421 multiclass VPatBinaryV_VV_VX<string intrinsic, string instruction,
5423 : VPatBinaryV_VV<intrinsic, instruction, vtilist, isSEWAware>,
5424 VPatBinaryV_VX<intrinsic, instruction, vtilist, isSEWAware>;
5426 multiclass VPatBinaryV_VV_VX_RM<string intrinsic, string instruction,
5428 : VPatBinaryV_VV_RM<intrinsic, instruction, vtilist, isSEWAware>,
5429 VPatBinaryV_VX_RM<intrinsic, instruction, vtilist, isSEWAware>;
5431 multiclass VPatBinaryV_VX_VI<string intrinsic, string instruction,
5433 : VPatBinaryV_VX<intrinsic, instruction, vtilist>,
5434 VPatBinaryV_VI<intrinsic, instruction, vtilist, simm5>;
5436 multiclass VPatBinaryW_VV_VX<string intrinsic, string instruction,
5438 : VPatBinaryW_VV<intrinsic, instruction, vtilist>,
5439 VPatBinaryW_VX<intrinsic, instruction, vtilist>;
5442 VPatBinaryW_VV_VX_RM<string intrinsic, string instruction,
5444 : VPatBinaryW_VV_RM<intrinsic, instruction, vtilist, isSEWAware>,
5445 VPatBinaryW_VX_RM<intrinsic, instruction, vtilist, isSEWAware>;
5447 multiclass VPatBinaryW_WV_WX<string intrinsic, string instruction,
5449 : VPatBinaryW_WV<intrinsic, instruction, vtilist>,
5450 VPatBinaryW_WX<intrinsic, instruction, vtilist>;
5453 VPatBinaryW_WV_WX_RM<string intrinsic, string instruction,
5455 : VPatBinaryW_WV_RM<intrinsic, instruction, vtilist, isSEWAware>,
5456 VPatBinaryW_WX_RM<intrinsic, instruction, vtilist, isSEWAware>;
5458 multiclass VPatBinaryV_WV_WX_WI<string intrinsic, string instruction,
5460 : VPatBinaryV_WV<intrinsic, instruction, vtilist>,
5461 VPatBinaryV_WX<intrinsic, instruction, vtilist>,
5462 VPatBinaryV_WI<intrinsic, instruction, vtilist>;
5464 multiclass VPatBinaryV_WV_WX_WI_RM<string intrinsic, string instruction,
5466 : VPatBinaryV_WV_RM<intrinsic, instruction, vtilist>,
5467 VPatBinaryV_WX_RM<intrinsic, instruction, vtilist>,
5468 VPatBinaryV_WI_RM<intrinsic, instruction, vtilist>;
5470 multiclass VPatBinaryV_VM_XM_IM<string intrinsic, string instruction>
5471 : VPatBinaryV_VM_TAIL<intrinsic, instruction>,
5472 VPatBinaryV_XM_TAIL<intrinsic, instruction>,
5473 VPatBinaryV_IM_TAIL<intrinsic, instruction>;
5475 multiclass VPatBinaryM_VM_XM_IM<string intrinsic, string instruction>
5476 : VPatBinaryV_VM<intrinsic, instruction, CarryOut=1>,
5477 VPatBinaryV_XM<intrinsic, instruction, CarryOut=1>,
5478 VPatBinaryV_IM<intrinsic, instruction, CarryOut=1>;
5480 multiclass VPatBinaryM_V_X_I<string intrinsic, string instruction>
5481 : VPatBinaryV_V<intrinsic, instruction>,
5482 VPatBinaryV_X<intrinsic, instruction>,
5483 VPatBinaryV_I<intrinsic, instruction>;
5485 multiclass VPatBinaryV_VM_XM<string intrinsic, string instruction>
5486 : VPatBinaryV_VM_TAIL<intrinsic, instruction>,
5487 VPatBinaryV_XM_TAIL<intrinsic, instruction>;
5489 multiclass VPatBinaryM_VM_XM<string intrinsic, string instruction>
5490 : VPatBinaryV_VM<intrinsic, instruction, CarryOut=1>,
5491 VPatBinaryV_XM<intrinsic, instruction, CarryOut=1>;
5493 multiclass VPatBinaryM_V_X<string intrinsic, string instruction>
5494 : VPatBinaryV_V<intrinsic, instruction>,
5495 VPatBinaryV_X<intrinsic, instruction>;
5580 multiclass VPatTernaryV_VV_AAXA<string intrinsic, string instruction,
5584 defm : VPatTernaryWithPolicy<intrinsic, instruction, "VV",
5590 multiclass VPatTernaryV_VV_AAXA_RM<string intrinsic, string instruction,
5594 defm : VPatTernaryWithPolicyRoundingMode<intrinsic, instruction, "VV",
5600 multiclass VPatTernaryV_VX<string intrinsic, string instruction,
5604 defm : VPatTernaryWithPolicy<intrinsic, instruction, "VX",
5610 multiclass VPatTernaryV_VX_AAXA<string intrinsic, string instruction,
5614 defm : VPatTernaryWithPolicy<intrinsic, instruction,
5621 multiclass VPatTernaryV_VX_AAXA_RM<string intrinsic, string instruction,
5625 defm : VPatTernaryWithPolicyRoundingMode<intrinsic, instruction,
5632 multiclass VPatTernaryV_VI<string intrinsic, string instruction,
5636 defm : VPatTernaryWithPolicy<intrinsic, instruction, "VI",
5642 multiclass VPatTernaryW_VV<string intrinsic, string instruction,
5649 defm : VPatTernaryWithPolicy<intrinsic, instruction, "VV",
5656 multiclass VPatTernaryW_VV_RM<string intrinsic, string instruction,
5663 defm : VPatTernaryWithPolicyRoundingMode<intrinsic, instruction, "VV",
5671 multiclass VPatTernaryW_VX<string intrinsic, string instruction,
5678 defm : VPatTernaryWithPolicy<intrinsic, instruction,
5687 VPatTernaryW_VX_RM<string intrinsic, string instruction,
5695 intrinsic, instruction, "V" #vti.ScalarSuffix, wti.Vector,
5701 multiclass VPatTernaryV_VV_VX_AAXA<string intrinsic, string instruction,
5703 : VPatTernaryV_VV_AAXA<intrinsic, instruction, vtilist>,
5704 VPatTernaryV_VX_AAXA<intrinsic, instruction, vtilist>;
5706 multiclass VPatTernaryV_VV_VX_AAXA_RM<string intrinsic, string instruction,
5708 : VPatTernaryV_VV_AAXA_RM<intrinsic, instruction, vtilist, isSEWAware>,
5709 VPatTernaryV_VX_AAXA_RM<intrinsic, instruction, vtilist, isSEWAware>;
5711 multiclass VPatTernaryV_VX_VI<string intrinsic, string instruction,
5713 : VPatTernaryV_VX<intrinsic, instruction, vtilist>,
5714 VPatTernaryV_VI<intrinsic, instruction, vtilist, Imm_type>;
5717 multiclass VPatBinaryM_VV_VX_VI<string intrinsic, string instruction,
5719 : VPatBinaryM_VV<intrinsic, instruction, vtilist>,
5720 VPatBinaryM_VX<intrinsic, instruction, vtilist>,
5721 VPatBinaryM_VI<intrinsic, instruction, vtilist>;
5723 multiclass VPatTernaryW_VV_VX<string intrinsic, string instruction,
5725 : VPatTernaryW_VV<intrinsic, instruction, vtilist>,
5726 VPatTernaryW_VX<intrinsic, instruction, vtilist>;
5728 multiclass VPatTernaryW_VV_VX_RM<string intrinsic, string instruction,
5730 : VPatTernaryW_VV_RM<intrinsic, instruction, vtilist, isSEWAware>,
5731 VPatTernaryW_VX_RM<intrinsic, instruction, vtilist, isSEWAware>;
5733 multiclass VPatBinaryM_VV_VX<string intrinsic, string instruction,
5735 : VPatBinaryM_VV<intrinsic, instruction, vtilist>,
5736 VPatBinaryM_VX<intrinsic, instruction, vtilist>;
5738 multiclass VPatBinaryM_VX_VI<string intrinsic, string instruction,
5740 : VPatBinaryM_VX<intrinsic, instruction, vtilist>,
5741 VPatBinaryM_VI<intrinsic, instruction, vtilist>;
5743 multiclass VPatBinaryV_VV_VX_VI_INT<string intrinsic, string instruction,
5745 : VPatBinaryV_VV_INT<intrinsic#"_vv", instruction, vtilist>,
5746 VPatBinaryV_VX_INT<intrinsic#"_vx", instruction, vtilist>,
5747 VPatBinaryV_VI<intrinsic#"_vx", instruction, vtilist, ImmType>;
5749 multiclass VPatReductionV_VS<string intrinsic, string instruction, bit IsFloat = 0> {
5753 defm : VPatTernaryTU<intrinsic, instruction, "VS",
5761 defm : VPatTernaryTU<intrinsic, instruction, "VS",
5769 multiclass VPatReductionV_VS_RM<string intrinsic, string instruction, bit IsFloat = 0> {
5773 defm : VPatTernaryTURoundingMode<intrinsic, instruction, "VS",
5781 defm : VPatTernaryTURoundingMode<intrinsic, instruction, "VS",
5789 multiclass VPatReductionW_VS<string intrinsic, string instruction, bit IsFloat = 0> {
5795 defm : VPatTernaryTU<intrinsic, instruction, "VS",
5805 multiclass VPatReductionW_VS_RM<string intrinsic, string instruction, bit IsFloat = 0> {
5811 defm : VPatTernaryTURoundingMode<intrinsic, instruction, "VS",
5822 string instruction> {
5827 defm : VPatConversion<intrinsic, instruction, "V",
5834 string instruction> {
5839 defm : VPatConversionRoundingMode<intrinsic, instruction, "V",
5846 string instruction> {
5851 defm : VPatConversionRTZ<intrinsic, instruction, "V",
5857 multiclass VPatConversionVF_VI_RM<string intrinsic, string instruction,
5863 defm : VPatConversionRoundingMode<intrinsic, instruction, "V",
5870 multiclass VPatConversionWI_VF<string intrinsic, string instruction> {
5876 defm : VPatConversion<intrinsic, instruction, "V",
5882 multiclass VPatConversionWI_VF_RM<string intrinsic, string instruction> {
5888 defm : VPatConversionRoundingMode<intrinsic, instruction, "V",
5894 multiclass VPatConversionWI_VF_RTZ<string intrinsic, string instruction> {
5900 defm : VPatConversionRTZ<intrinsic, instruction, "V",
5906 multiclass VPatConversionWF_VI<string intrinsic, string instruction,
5913 defm : VPatConversion<intrinsic, instruction, "V",
5919 multiclass VPatConversionWF_VF<string intrinsic, string instruction,
5928 defm : VPatConversion<intrinsic, instruction, "V",
5934 multiclass VPatConversionWF_VF_BF<string intrinsic, string instruction,
5942 defm : VPatConversion<intrinsic, instruction, "V",
5948 multiclass VPatConversionVI_WF<string intrinsic, string instruction> {
5954 defm : VPatConversion<intrinsic, instruction, "W",
5960 multiclass VPatConversionVI_WF_RM <string intrinsic, string instruction> {
5966 defm : VPatConversionRoundingMode<intrinsic, instruction, "W",
5972 multiclass VPatConversionVI_WF_RTZ <string intrinsic, string instruction> {
5978 defm : VPatConversionRTZ<intrinsic, instruction, "W",
5984 multiclass VPatConversionVF_WI_RM <string intrinsic, string instruction,
5991 defm : VPatConversionRoundingMode<intrinsic, instruction, "W",
5998 multiclass VPatConversionVF_WF<string intrinsic, string instruction,
6005 defm : VPatConversion<intrinsic, instruction, "W",
6011 multiclass VPatConversionVF_WF_RM<string intrinsic, string instruction,
6019 defm : VPatConversionRoundingMode<intrinsic, instruction, "W",
6026 multiclass VPatConversionVF_WF_RTZ<string intrinsic, string instruction,
6034 defm : VPatConversionRTZ<intrinsic, instruction, "W",
6040 multiclass VPatConversionVF_WF_BF_RM<string intrinsic, string instruction,
6047 defm : VPatConversionRoundingMode<intrinsic, instruction, "W",
6134 // verifier, we also need a GPRX0 instruction for the special encodings.
6960 // there is no vmslt(u).vi instruction. Similar for vmsge(u).vx intrinsics