466 : ST(&_ST), MRI(&_MRI) {
468 addRulesForGOpcs({G_ADD, G_SUB},
Standard)
478 addRulesForGOpcs({G_UADDO, G_USUBO},
Standard)
482 addRulesForGOpcs({G_UADDE, G_USUBE},
Standard)
488 addRulesForGOpcs({G_XOR, G_OR, G_AND},
StandardB)
508 addRulesForGOpcs({G_LSHR},
Standard)
518 addRulesForGOpcs({G_ASHR},
Standard)
528 addRulesForGOpcs({G_FSHR},
Standard)
534 addRulesForGOpcs({G_UBFX, G_SBFX},
Standard)
540 addRulesForGOpcs({G_SMIN, G_SMAX},
Standard)
548 addRulesForGOpcs({G_UMIN, G_UMAX},
Standard)
559 addRulesForGOpcs({G_CONSTANT})
563 addRulesForGOpcs({G_ICMP})
568 addRulesForGOpcs({G_FCMP})
572 addRulesForGOpcs({G_BRCOND})
576 addRulesForGOpcs({G_BR}).
Any({{
_}, {{}, {
None}}});
586 addRulesForGOpcs({G_ANYEXT})
600 addRulesForGOpcs({G_TRUNC})
615 addRulesForGOpcs({G_ZEXT})
630 addRulesForGOpcs({G_SEXT})
645 addRulesForGOpcs({G_SEXT_INREG})
651 addRulesForGOpcs({G_ASSERT_ZEXT, G_ASSERT_SEXT},
Standard)
657 bool hasSMRDx3 = ST->hasScalarDwordx3Loads();
658 bool hasSMRDSmall = ST->hasScalarSubwordLoads();
659 bool usesTrue16 = ST->useRealTrue16Insts();
662 return (*
MI.memoperands_begin())->getAlign() >=
Align(16);
666 return (*
MI.memoperands_begin())->getAlign() >=
Align(4);
670 return (*
MI.memoperands_begin())->isAtomic();
686 return (*
MI.memoperands_begin())->isVolatile();
690 return (*
MI.memoperands_begin())->isInvariant();
705 return MemSize == 16 || MemSize == 8;
713 auto isUL = !isAtomicMMO && isUniMMO && (isConst || !isVolatileMMO) &&
714 (isConst || isInvMMO || isNoClobberMMO);
718 addRulesForGOpcs({G_LOAD})
825 addRulesForGOpcs({G_ZEXTLOAD, G_SEXTLOAD})
845 addRulesForGOpcs({G_STORE})
880 addRulesForGOpcs({G_AMDGPU_BUFFER_LOAD, G_AMDGPU_BUFFER_LOAD_FORMAT,
881 G_AMDGPU_TBUFFER_LOAD_FORMAT},
892 addRulesForGOpcs({G_AMDGPU_BUFFER_STORE})
895 addRulesForGOpcs({G_PTR_ADD})
901 addRulesForGOpcs({G_INTTOPTR})
909 addRulesForGOpcs({G_PTRTOINT})
919 addRulesForGOpcs({G_FENCE}).
Any({{{}}, {{}, {}}});
921 addRulesForGOpcs({G_READSTEADYCOUNTER, G_READCYCLECOUNTER},
Standard)
926 addRulesForGOpcs({G_GLOBAL_VALUE})
933 addRulesForGOpcs({G_AMDGPU_WAVE_ADDRESS}).
Any({{
UniP5}, {{
SgprP5}, {}}});
935 bool hasSALUFloat = ST->hasSALUFloatInsts();
937 addRulesForGOpcs({G_FADD, G_FMUL, G_STRICT_FADD, G_STRICT_FMUL},
Standard)
955 addRulesForGOpcs({G_FNEG, G_FABS},
Standard)
970 addRulesForGOpcs({G_FPTOUI})
974 addRulesForGOpcs({G_UITOFP})
979 addRulesForGOpcs({G_IS_FPCLASS})
994 addRulesForIOpcs({amdgcn_if_break},
Standard)
997 addRulesForIOpcs({amdgcn_mbcnt_lo, amdgcn_mbcnt_hi},
Standard)
1000 addRulesForIOpcs({amdgcn_readfirstlane})