467 : ST(&_ST), MRI(&_MRI) {
469 addRulesForGOpcs({G_ADD, G_SUB},
Standard)
479 addRulesForGOpcs({G_UADDO, G_USUBO},
Standard)
483 addRulesForGOpcs({G_UADDE, G_USUBE},
Standard)
489 addRulesForGOpcs({G_XOR, G_OR, G_AND},
StandardB)
509 addRulesForGOpcs({G_LSHR},
Standard)
519 addRulesForGOpcs({G_ASHR},
Standard)
531 addRulesForGOpcs({G_UBFX, G_SBFX},
Standard)
537 addRulesForGOpcs({G_SMIN, G_SMAX},
Standard)
545 addRulesForGOpcs({G_UMIN, G_UMAX},
Standard)
556 addRulesForGOpcs({G_CONSTANT})
560 addRulesForGOpcs({G_ICMP})
565 addRulesForGOpcs({G_FCMP})
569 addRulesForGOpcs({G_BRCOND})
573 addRulesForGOpcs({G_BR}).
Any({{
_}, {{}, {
None}}});
583 addRulesForGOpcs({G_ANYEXT})
597 addRulesForGOpcs({G_TRUNC})
612 addRulesForGOpcs({G_ZEXT})
627 addRulesForGOpcs({G_SEXT})
642 addRulesForGOpcs({G_SEXT_INREG})
648 addRulesForGOpcs({G_ASSERT_ZEXT, G_ASSERT_SEXT},
Standard)
654 bool hasSMRDx3 = ST->hasScalarDwordx3Loads();
655 bool hasSMRDSmall = ST->hasScalarSubwordLoads();
656 bool usesTrue16 = ST->useRealTrue16Insts();
659 return (*
MI.memoperands_begin())->getAlign() >=
Align(16);
663 return (*
MI.memoperands_begin())->getAlign() >=
Align(4);
667 return (*
MI.memoperands_begin())->isAtomic();
683 return (*
MI.memoperands_begin())->isVolatile();
687 return (*
MI.memoperands_begin())->isInvariant();
702 return MemSize == 16 || MemSize == 8;
710 auto isUL = !isAtomicMMO && isUniMMO && (isConst || !isVolatileMMO) &&
711 (isConst || isInvMMO || isNoClobberMMO);
715 addRulesForGOpcs({G_LOAD})
822 addRulesForGOpcs({G_ZEXTLOAD, G_SEXTLOAD})
842 addRulesForGOpcs({G_STORE})
877 addRulesForGOpcs({G_AMDGPU_BUFFER_LOAD, G_AMDGPU_BUFFER_LOAD_FORMAT,
878 G_AMDGPU_TBUFFER_LOAD_FORMAT},
889 addRulesForGOpcs({G_AMDGPU_BUFFER_STORE})
892 addRulesForGOpcs({G_PTR_ADD})
898 addRulesForGOpcs({G_INTTOPTR})
906 addRulesForGOpcs({G_PTRTOINT})
916 addRulesForGOpcs({G_FENCE}).
Any({{{}}, {{}, {}}});
918 addRulesForGOpcs({G_READSTEADYCOUNTER, G_READCYCLECOUNTER},
Standard)
921 bool hasSALUFloat = ST->hasSALUFloatInsts();
923 addRulesForGOpcs({G_FADD},
Standard)
939 addRulesForGOpcs({G_FPTOUI})
943 addRulesForGOpcs({G_UITOFP})
955 addRulesForIOpcs({amdgcn_if_break},
Standard)
958 addRulesForIOpcs({amdgcn_mbcnt_lo, amdgcn_mbcnt_hi},
Standard)
961 addRulesForIOpcs({amdgcn_readfirstlane})