[llvm] [AMDGPU] Add FeatureGFX13 and SMEM encoding for gfx13 (PR #177567)
Mariusz Sikora via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 23 04:38:14 PST 2026
https://github.com/mariusz-sikora-at-amd updated https://github.com/llvm/llvm-project/pull/177567
>From d5f475cdf6dd4a5b993df5ad4dbc5019b4c1b89a Mon Sep 17 00:00:00 2001
From: Jay Foad <jay.foad at amd.com>
Date: Tue, 13 Jan 2026 09:46:38 -0500
Subject: [PATCH 1/2] [AMDGPU] Add FeatureGFX13 and SMEM encoding for gfx13
For now list of features is based on gfx12 and gfx1250
---
llvm/lib/Target/AMDGPU/AMDGPU.td | 112 +-
llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp | 10 +-
.../Target/AMDGPU/AMDGPUInsertDelayAlu.cpp | 2 +-
.../lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp | 2 +-
llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h | 1 +
.../AMDGPU/AsmParser/AMDGPUAsmParser.cpp | 20 +-
.../Disassembler/AMDGPUDisassembler.cpp | 21 +-
.../AMDGPU/Disassembler/AMDGPUDisassembler.h | 3 +
.../lib/Target/AMDGPU/GCNHazardRecognizer.cpp | 4 +-
llvm/lib/Target/AMDGPU/GCNProcessors.td | 2 +-
llvm/lib/Target/AMDGPU/GCNSubtarget.h | 1 +
.../MCTargetDesc/AMDGPUTargetStreamer.cpp | 4 +-
llvm/lib/Target/AMDGPU/SIDefines.h | 1 +
llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 2 +-
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | 4 +-
llvm/lib/Target/AMDGPU/SIInstrInfo.td | 4 +-
llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp | 6 +-
llvm/lib/Target/AMDGPU/SMInstructions.td | 83 +-
.../Target/AMDGPU/Utils/AMDGPUAsmUtils.cpp | 10 +-
.../Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp | 16 +-
llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h | 3 +
llvm/test/CodeGen/AMDGPU/occupancy-levels.ll | 2 +-
llvm/test/MC/AMDGPU/gfx13_smem.s | 1428 +++++++++++++++++
23 files changed, 1696 insertions(+), 45 deletions(-)
create mode 100644 llvm/test/MC/AMDGPU/gfx13_smem.s
diff --git a/llvm/lib/Target/AMDGPU/AMDGPU.td b/llvm/lib/Target/AMDGPU/AMDGPU.td
index 7044f91195075..3ed93cd80fd92 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPU.td
+++ b/llvm/lib/Target/AMDGPU/AMDGPU.td
@@ -496,6 +496,11 @@ defm GFX1250Insts : AMDGPUSubtargetFeature<"gfx1250-insts",
/*GenPredicate=*/0
>;
+defm GFX13Insts : AMDGPUSubtargetFeature<"gfx13-insts",
+ "Additional instructions for GFX13+",
+ /*GenPredicate=*/0
+>;
+
defm GFX10_3Insts : AMDGPUSubtargetFeature<"gfx10-3-insts",
"Additional instructions for GFX10.3",
/*GenPredicate=*/0
@@ -1435,6 +1440,29 @@ def FeatureGFX12 : GCNSubtargetFeatureGeneration<"GFX12",
]
>;
+def FeatureGFX13 : GCNSubtargetFeatureGeneration<"GFX13",
+ "gfx13",
+ [FeatureFP64, FeatureMIMG_R128,
+ FeatureFlatAddressSpace, Feature16BitInsts,
+ FeatureInv2PiInlineImm, FeatureApertureRegs,
+ FeatureCIInsts, FeatureGFX8Insts, FeatureGFX9Insts, FeatureGFX10Insts,
+ FeatureGFX10_AEncoding, FeatureGFX10_BEncoding, FeatureGFX10_3Insts,
+ FeatureGFX11Insts, FeatureGFX12Insts, FeatureGFX13Insts, FeatureVOP3PInsts,
+ FeatureVOPDInsts, FeatureMovrel, FeatureFastFMAF32, FeatureDPP, FeatureIntClamp,
+ FeatureFlatInstOffsets, FeatureFlatGlobalInsts, FeatureFlatScratchInsts,
+ FeatureAddNoCarryInsts, FeatureFmaMixInsts,
+ FeatureNoSdstCMPX, FeatureVscnt,
+ FeatureVOP3Literal, FeatureDPP8,
+ FeatureNoDataDepHazard, FeaturePkFmacF16Inst,
+ FeatureA16, FeatureFastDenormalF32, FeatureG16,
+ FeatureUnalignedBufferAccess, FeatureUnalignedScratchAccess,
+ FeatureUnalignedDSAccess, FeatureTrue16BitInsts,
+ FeatureDefaultComponentBroadcast, FeatureMaxHardClauseLength32,
+ FeatureAtomicFMinFMaxF32GlobalInsts, FeatureAtomicFMinFMaxF32FlatInsts,
+ FeatureIEEEMinimumMaximumInsts, FeatureMinimum3Maximum3F32,
+ FeatureMinimum3Maximum3F16, FeatureAgentScopeFineGrainedRemoteMemoryAtomics
+ ]
+>;
//===----------------------------------------------------------------------===//
class FeatureSet<list<SubtargetFeature> Features_> {
@@ -1993,6 +2021,65 @@ def FeatureISAVersion12_Generic: FeatureSet<
!listconcat(FeatureISAVersion12.Features,
[FeatureRequiresCOV6])>;
+def FeatureISAVersion13 : FeatureSet<
+ [FeatureGFX13,
+ FeatureGFX1250Insts,
+ FeatureAddressableLocalMemorySize65536,
+ Feature64BitLiterals,
+ FeatureLDSBankCount32,
+ FeatureDLInsts,
+ FeatureFmacF64Inst,
+ FeatureDot7Insts,
+ FeatureDot8Insts,
+ FeatureNSAEncoding,
+ FeaturePartialNSAEncoding,
+ FeatureShaderCyclesRegister,
+ FeatureArchitectedFlatScratch,
+ FeatureArchitectedSGPRs,
+ FeatureAtomicFaddRtnInsts,
+ FeatureAtomicFaddNoRtnInsts,
+ FeatureAtomicDsPkAdd16Insts,
+ FeatureAtomicFlatPkAdd16Insts,
+ FeatureAtomicBufferGlobalPkAddF16Insts,
+ FeatureAtomicGlobalPkAddBF16Inst,
+ FeatureAtomicBufferPkAddBF16Inst,
+ FeatureFlatAtomicFaddF32Inst,
+ FeatureFP8ConversionInsts,
+ FeaturePackedTID,
+ FeatureVcmpxPermlaneHazard,
+ FeatureSALUFloatInsts,
+ FeaturePseudoScalarTrans,
+ FeatureRestrictedSOffset,
+ FeatureScalarDwordx3Loads,
+ FeatureDPPSrc1SGPR,
+ FeatureBitOp3Insts,
+ FeatureTanhInsts,
+ FeatureTensorCvtLutInsts,
+ FeatureTransposeLoadF4F6Insts,
+ Feature1_5xVGPRs,
+ FeatureBF16TransInsts,
+ FeatureBF16ConversionInsts,
+ FeatureBF16PackedInsts,
+ FeaturePrngInst,
+ FeaturePermlane16Swap,
+ FeatureAshrPkInsts,
+ FeatureAtomicFMinFMaxF64GlobalInsts,
+ FeatureAtomicFMinFMaxF64FlatInsts,
+ FeatureFmaMixBF16Insts,
+ FeatureGloballyAddressableScratch,
+ FeatureCvtPkF16F32Inst,
+ FeatureF16BF16ToFP6BF6ConversionScaleInsts,
+ FeatureIEEEMinimumMaximumInsts,
+ FeatureClusters,
+ FeatureCubeInsts,
+ FeatureLerpInst,
+ FeatureSadInsts,
+ FeatureQsadInsts,
+ FeatureCvtNormInsts,
+ FeatureCvtPkNormVOP2Insts,
+ FeatureCvtPkNormVOP3Insts,
+]>;
+
//===----------------------------------------------------------------------===//
def AMDGPUInstrInfo : InstrInfo {
@@ -2277,7 +2364,7 @@ def isGFX11Plus :
def isGFX12Only :
Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX12">,
- AssemblerPredicate<(all_of FeatureGFX12Insts)>;
+ AssemblerPredicate<(all_of FeatureGFX12Insts, (not FeatureGFX13Insts))>;
def isGFX12Not12_50 :
Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX12 && !Subtarget->hasGFX1250Insts()">,
@@ -2288,12 +2375,13 @@ def isGFX12Plus :
AssemblerPredicate<(all_of FeatureGFX12Insts)>;
def isGFX12PlusNot12_50 :
- Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX12 && !Subtarget->hasGFX1250Insts()">,
- AssemblerPredicate<(all_of FeatureGFX12Insts, (not FeatureGFX1250Insts))>;
+ Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX12 &&"
+ "(Subtarget->getGeneration() >= AMDGPUSubtarget::GFX13 || !Subtarget->hasGFX1250Insts())">,
+ AssemblerPredicate<(all_of FeatureGFX12Insts, (any_of FeatureGFX13Insts, (not FeatureGFX1250Insts)))>;
def isGFX125xOnly :
- Predicate<"Subtarget->hasGFX1250Insts()">,
- AssemblerPredicate<(all_of FeatureGFX1250Insts)>;
+ Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX12 && Subtarget->hasGFX1250Insts()">,
+ AssemblerPredicate<(all_of FeatureGFX1250Insts, (not FeatureGFX13Insts))>;
def isGFX1250Plus :
Predicate<"Subtarget->hasGFX1250Insts()">,
@@ -2304,8 +2392,18 @@ def isNotGFX1250Plus :
AssemblerPredicate<(all_of (not FeatureGFX1250Insts))>;
def isGFX940orGFX1250 :
- Predicate<"Subtarget->hasGFX940Insts() || Subtarget->hasGFX1250Insts()">,
- AssemblerPredicate<(any_of FeatureGFX940Insts, FeatureGFX1250Insts)>;
+ Predicate<"Subtarget->hasGFX940Insts() ||"
+ "(Subtarget->hasGFX1250Insts() && !Subtarget->hasGFX13Insts())">,
+ AssemblerPredicate<(any_of FeatureGFX940Insts,
+ (all_of FeatureGFX1250Insts, (not FeatureGFX13Insts)))>;
+
+def isGFX13Only :
+ Predicate<"Subtarget->getGeneration() == AMDGPUSubtarget::GFX13">,
+ AssemblerPredicate<(all_of FeatureGFX13Insts)>;
+
+def isGFX13Plus :
+ Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX13">,
+ AssemblerPredicate<(all_of FeatureGFX13Insts)>;
def HasAtomicCondSubClampFlatInsts :
Predicate<"Subtarget->getGeneration() >= AMDGPUSubtarget::GFX12">,
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
index 5686e0c19f85e..3f69ff3325123 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
@@ -660,8 +660,8 @@ AMDGPUAsmPrinter::getAmdhsaKernelDescriptor(const MachineFunction &MF,
(void)PGRM_Rsrc3;
(void)EvaluatableRsrc3;
assert(STM.getGeneration() >= AMDGPUSubtarget::GFX10 ||
- STM.hasGFX90AInsts() || AMDGPU::isGFX1250(STM) || !EvaluatableRsrc3 ||
- static_cast<uint64_t>(PGRM_Rsrc3) == 0);
+ STM.hasGFX90AInsts() || AMDGPU::isGFX1250Plus(STM) ||
+ !EvaluatableRsrc3 || static_cast<uint64_t>(PGRM_Rsrc3) == 0);
KernelDescriptor.compute_pgm_rsrc3 = CurrentProgramInfo.ComputePGMRSrc3;
KernelDescriptor.kernarg_preload = MCConstantExpr::create(
@@ -831,7 +831,7 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
" AccumOffset: " + getMCExprStr(AdjustedAccum), false);
}
- if (AMDGPU::isGFX1250(STM))
+ if (AMDGPU::isGFX1250Plus(STM))
OutStreamer->emitRawComment(
" NamedBarCnt: " + getMCExprStr(CurrentProgramInfo.NamedBarCnt),
false);
@@ -867,7 +867,7 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
[[maybe_unused]] int64_t PGMRSrc3;
assert(STM.getGeneration() >= AMDGPUSubtarget::GFX10 ||
- STM.hasGFX90AInsts() || AMDGPU::isGFX1250(STM) ||
+ STM.hasGFX90AInsts() || AMDGPU::isGFX1250Plus(STM) ||
(CurrentProgramInfo.ComputePGMRSrc3->evaluateAsAbsolute(PGMRSrc3) &&
static_cast<uint64_t>(PGMRSrc3) == 0));
if (STM.hasGFX90AInsts()) {
@@ -1288,7 +1288,7 @@ void AMDGPUAsmPrinter::getSIProgramInfo(SIProgramInfo &ProgInfo,
amdhsa::COMPUTE_PGM_RSRC3_GFX90A_TG_SPLIT_SHIFT);
}
- if (AMDGPU::isGFX1250(STM))
+ if (AMDGPU::isGFX1250Plus(STM))
ProgInfo.ComputePGMRSrc3 =
SetBits(ProgInfo.ComputePGMRSrc3, ProgInfo.NamedBarCnt,
amdhsa::COMPUTE_PGM_RSRC3_GFX125_NAMED_BAR_CNT,
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp b/llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp
index f3d17862e3e1c..4aac5871cb1c2 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp
@@ -71,7 +71,7 @@ class AMDGPUInsertDelayAlu {
if (SIInstrInfo::isTRANS(MI))
return TRANS;
// WMMA XDL ops are treated the same as TRANS.
- if (AMDGPU::isGFX1250(*ST) && SII->isXDLWMMA(MI))
+ if (AMDGPU::isGFX1250Plus(*ST) && SII->isXDLWMMA(MI))
return TRANS;
if (SIInstrInfo::isVALU(MI))
return VALU;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
index 6a19078d2605f..b1881995be118 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
@@ -6153,7 +6153,7 @@ AMDGPULegalizerInfo::splitBufferOffsets(MachineIRBuilder &B,
// On GFX1250+, voffset and immoffset are zero-extended from 32 bits before
// being added, so we can only safely match a 32-bit addition with no unsigned
// overflow.
- bool CheckNUW = AMDGPU::isGFX1250(ST);
+ bool CheckNUW = AMDGPU::isGFX1250Plus(ST);
std::tie(BaseReg, ImmOffset) = AMDGPU::getBaseWithConstantOffset(
MRI, OrigOffset, /*KnownBits=*/nullptr, CheckNUW);
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h b/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h
index 09df36e953129..ec0253bee3a0d 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h
+++ b/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h
@@ -83,6 +83,7 @@ class AMDGPUSubtarget {
GFX10 = 9,
GFX11 = 10,
GFX12 = 11,
+ GFX13 = 12,
};
private:
diff --git a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
index fa4b790b88a79..02abad3eb45a8 100644
--- a/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+++ b/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
@@ -1551,6 +1551,12 @@ class AMDGPUAsmParser : public MCTargetAsmParser {
bool isGFX1250() const { return AMDGPU::isGFX1250(getSTI()); }
+ bool isGFX1250Plus() const { return AMDGPU::isGFX1250Plus(getSTI()); }
+
+ bool isGFX13() const { return AMDGPU::isGFX13(getSTI()); }
+
+ bool isGFX13Plus() const { return AMDGPU::isGFX13Plus(getSTI()); }
+
bool isGFX10_AEncoding() const { return AMDGPU::isGFX10_AEncoding(getSTI()); }
bool isGFX10_BEncoding() const {
@@ -2931,7 +2937,7 @@ MCRegister AMDGPUAsmParser::getRegularReg(RegisterKind RegKind, unsigned RegNum,
return AMDGPU::NoRegister;
}
- if (RegKind == IS_VGPR && !isGFX1250() && RegIdx + RegWidth / 32 > 256) {
+ if (RegKind == IS_VGPR && !isGFX1250Plus() && RegIdx + RegWidth / 32 > 256) {
Error(Loc, "register index is out of range");
return MCRegister();
}
@@ -3953,7 +3959,7 @@ AMDGPUAsmParser::checkVOPDRegBankConstraints(const MCInst &Inst, bool AsVOPD3) {
bool SkipSrc = Opcode == AMDGPU::V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx12 ||
Opcode == AMDGPU::V_DUAL_MOV_B32_e32_X_MOV_B32_e32_gfx1250 ||
Opcode == AMDGPU::V_DUAL_MOV_B32_e32_X_MOV_B32_e32_e96_gfx1250;
- bool AllowSameVGPR = isGFX1250();
+ bool AllowSameVGPR = isGFX1250Plus();
if (AsVOPD3) { // Literal constants are not allowed with VOPD3.
for (auto OpName : {OpName::src0X, OpName::src0Y}) {
@@ -4087,7 +4093,7 @@ bool AMDGPUAsmParser::tryVOPD(const MCInst &Inst) {
// form but switch to VOPD3 otherwise.
bool AMDGPUAsmParser::tryAnotherVOPDEncoding(const MCInst &Inst) {
const unsigned Opcode = Inst.getOpcode();
- if (!isGFX1250() || !isVOPD(Opcode))
+ if (!isGFX1250Plus() || !isVOPD(Opcode))
return false;
if (MII.get(Opcode).TSFlags & SIInstrFlags::VOPD3)
@@ -5377,7 +5383,7 @@ bool AMDGPUAsmParser::validateCoherencyBits(const MCInst &Inst,
unsigned CPol = Inst.getOperand(CPolPos).getImm();
- if (!isGFX1250()) {
+ if (!isGFX1250Plus()) {
if (CPol & CPol::SCAL) {
SMLoc S = getImmLoc(AMDGPUOperand::ImmTyCPol, Operands);
StringRef CStr(S.getPointer());
@@ -6176,7 +6182,7 @@ bool AMDGPUAsmParser::ParseDirectiveAMDHSAKernel() {
return Error(IDRange.Start, "directive requires gfx90a+", IDRange);
AccumOffset = ExprVal;
} else if (ID == ".amdhsa_named_barrier_count") {
- if (!isGFX1250())
+ if (!isGFX1250Plus())
return Error(IDRange.Start, "directive requires gfx1250+", IDRange);
NamedBarCnt = ExprVal;
} else if (ID == ".amdhsa_reserve_vcc") {
@@ -6376,7 +6382,7 @@ bool AMDGPUAsmParser::ParseDirectiveAMDHSAKernel() {
return TokError("amdgpu_user_sgpr_count smaller than than implied by "
"enabled user SGPRs");
- if (isGFX1250()) {
+ if (isGFX1250Plus()) {
if (!isUInt<COMPUTE_PGM_RSRC2_GFX125_USER_SGPR_COUNT_WIDTH>(UserSGPRCount))
return TokError("too many user SGPRs enabled");
AMDGPU::MCKernelDescriptor::bits_set(
@@ -6431,7 +6437,7 @@ bool AMDGPUAsmParser::ParseDirectiveAMDHSAKernel() {
getContext());
}
- if (isGFX1250())
+ if (isGFX1250Plus())
MCKernelDescriptor::bits_set(KD.compute_pgm_rsrc3, NamedBarCnt,
COMPUTE_PGM_RSRC3_GFX125_NAMED_BAR_CNT_SHIFT,
COMPUTE_PGM_RSRC3_GFX125_NAMED_BAR_CNT,
diff --git a/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp b/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
index cc03fb988ddbb..a22d92632ef5c 100644
--- a/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
+++ b/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp
@@ -580,7 +580,7 @@ DecodeStatus AMDGPUDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
// Try to decode DPP and SDWA first to solve conflict with VOP1 and VOP2
// encodings
- if (isGFX1250() && Bytes.size() >= 16) {
+ if (isGFX1250Plus() && Bytes.size() >= 16) {
std::bitset<128> DecW = eat16Bytes(Bytes);
if (tryDecodeInst(DecoderTableGFX1250128, MI, DecW, Address, CS))
break;
@@ -694,6 +694,9 @@ DecodeStatus AMDGPUDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
tryDecodeInst(DecoderTableGFX12W6464, MI, QW, Address, CS))
break;
+ if (isGFX13() && tryDecodeInst(DecoderTableGFX1364, MI, QW, Address, CS))
+ break;
+
// Reinitialize Bytes
Bytes = Bytes_.slice(0, MaxInstBytesNum);
}
@@ -2242,6 +2245,16 @@ bool AMDGPUDisassembler::isGFX12Plus() const {
bool AMDGPUDisassembler::isGFX1250() const { return AMDGPU::isGFX1250(STI); }
+bool AMDGPUDisassembler::isGFX1250Plus() const {
+ return AMDGPU::isGFX1250Plus(STI);
+}
+
+bool AMDGPUDisassembler::isGFX13() const { return AMDGPU::isGFX13(STI); }
+
+bool AMDGPUDisassembler::isGFX13Plus() const {
+ return AMDGPU::isGFX13Plus(STI);
+}
+
bool AMDGPUDisassembler::hasArchitectedFlatScratch() const {
return STI.hasFeature(AMDGPU::FeatureArchitectedFlatScratch);
}
@@ -2398,7 +2411,7 @@ Expected<bool> AMDGPUDisassembler::decodeCOMPUTE_PGM_RSRC1(
}
// Bits [27].
- if (isGFX1250()) {
+ if (isGFX1250Plus()) {
PRINT_PSEUDO_DIRECTIVE_COMMENT("FLAT_SCRATCH_IS_NV",
COMPUTE_PGM_RSRC1_GFX125_FLAT_SCRATCH_IS_NV);
} else {
@@ -2412,7 +2425,7 @@ Expected<bool> AMDGPUDisassembler::decodeCOMPUTE_PGM_RSRC1(
// Bits [29-31].
if (isGFX10Plus()) {
// WGP_MODE is not available on GFX1250.
- if (!isGFX1250()) {
+ if (!isGFX1250Plus()) {
PRINT_DIRECTIVE(".amdhsa_workgroup_processor_mode",
COMPUTE_PGM_RSRC1_GFX10_PLUS_WGP_MODE);
}
@@ -2543,7 +2556,7 @@ Expected<bool> AMDGPUDisassembler::decodeCOMPUTE_PGM_RSRC3(
}
// Bits [14-21].
- if (isGFX1250()) {
+ if (isGFX1250Plus()) {
PRINT_DIRECTIVE(".amdhsa_named_barrier_count",
COMPUTE_PGM_RSRC3_GFX125_NAMED_BAR_CNT);
PRINT_PSEUDO_DIRECTIVE_COMMENT(
diff --git a/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h b/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h
index ab130dbb08ff9..28f71d8d7556b 100644
--- a/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h
+++ b/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.h
@@ -182,6 +182,9 @@ class AMDGPUDisassembler : public MCDisassembler {
bool isGFX12() const;
bool isGFX12Plus() const;
bool isGFX1250() const;
+ bool isGFX1250Plus() const;
+ bool isGFX13() const;
+ bool isGFX13Plus() const;
bool hasArchitectedFlatScratch() const;
bool hasKernargPreload() const;
diff --git a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
index f2ce5bf2b79cc..0e3beee1b3419 100644
--- a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+++ b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
@@ -1932,7 +1932,7 @@ bool GCNHazardRecognizer::fixVALUTransUseHazard(MachineInstr *MI) {
}
bool GCNHazardRecognizer::fixVALUTransCoexecutionHazards(MachineInstr *MI) {
- if (!AMDGPU::isGFX1250(ST) || // Coexecution disabled.
+ if (!AMDGPU::isGFX1250Plus(ST) || // Coexecution disabled.
!SIInstrInfo::isVALU(*MI) || SIInstrInfo::isTRANS(*MI))
return false;
@@ -2077,7 +2077,7 @@ static bool IsWMMAHazardInstInCategory(const MachineInstr &MI,
}
int GCNHazardRecognizer::checkWMMACoexecutionHazards(MachineInstr *MI) {
- if (!AMDGPU::isGFX1250(ST))
+ if (!AMDGPU::isGFX1250Plus(ST))
return 0;
const SIInstrInfo *TII = ST.getInstrInfo();
diff --git a/llvm/lib/Target/AMDGPU/GCNProcessors.td b/llvm/lib/Target/AMDGPU/GCNProcessors.td
index e13be88410862..56cb6287d6ef5 100644
--- a/llvm/lib/Target/AMDGPU/GCNProcessors.td
+++ b/llvm/lib/Target/AMDGPU/GCNProcessors.td
@@ -339,5 +339,5 @@ def : ProcessorModel<"gfx1251", GFX1250SpeedModel,
//===----------------------------------------------------------------------===//
def : ProcessorModel<"gfx1310", GFX12SpeedModel,
- FeatureISAVersion12_50.Features
+ FeatureISAVersion13.Features
>;
diff --git a/llvm/lib/Target/AMDGPU/GCNSubtarget.h b/llvm/lib/Target/AMDGPU/GCNSubtarget.h
index ee9d47c15127d..a05e69162f40a 100644
--- a/llvm/lib/Target/AMDGPU/GCNSubtarget.h
+++ b/llvm/lib/Target/AMDGPU/GCNSubtarget.h
@@ -161,6 +161,7 @@
X(GFX10_AEncoding) \
X(GFX10_BEncoding) \
X(GFX1250Insts) \
+ X(GFX13Insts) \
X(GFX90AInsts) \
X(GFX940Insts) \
X(GFX950Insts) \
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
index 27786836fead9..1ac7182917a12 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
@@ -401,7 +401,7 @@ void AMDGPUTargetAsmStreamer::EmitAmdhsaKernelDescriptor(
EmitMCExpr(KD.kernarg_size);
OS << '\n';
- if (isGFX1250(STI)) {
+ if (isGFX1250Plus(STI)) {
PrintField(KD.compute_pgm_rsrc2,
amdhsa::COMPUTE_PGM_RSRC2_GFX125_USER_SGPR_COUNT_SHIFT,
amdhsa::COMPUTE_PGM_RSRC2_GFX125_USER_SGPR_COUNT,
@@ -515,7 +515,7 @@ void AMDGPUTargetAsmStreamer::EmitAmdhsaKernelDescriptor(
OS << '\n';
}
- if (AMDGPU::isGFX1250(STI))
+ if (AMDGPU::isGFX1250Plus(STI))
PrintField(KD.compute_pgm_rsrc3,
amdhsa::COMPUTE_PGM_RSRC3_GFX125_NAMED_BAR_CNT_SHIFT,
amdhsa::COMPUTE_PGM_RSRC3_GFX125_NAMED_BAR_CNT,
diff --git a/llvm/lib/Target/AMDGPU/SIDefines.h b/llvm/lib/Target/AMDGPU/SIDefines.h
index a7721cdad08bf..147ef9dddebf6 100644
--- a/llvm/lib/Target/AMDGPU/SIDefines.h
+++ b/llvm/lib/Target/AMDGPU/SIDefines.h
@@ -46,6 +46,7 @@ enum {
GFX11 = 10,
GFX12 = 11,
GFX1250 = 12,
+ GFX13 = 13,
};
}
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
index 657eec1d93076..a94c29e76c088 100644
--- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -11740,7 +11740,7 @@ SITargetLowering::splitBufferOffsets(SDValue Offset, SelectionDAG &DAG) const {
// On GFX1250+, voffset and immoffset are zero-extended from 32 bits before
// being added, so we can only safely match a 32-bit addition with no
// unsigned overflow.
- bool CheckNUW = AMDGPU::isGFX1250(*Subtarget);
+ bool CheckNUW = AMDGPU::isGFX1250Plus(*Subtarget);
if (!CheckNUW || isNoUnsignedWrap(N0)) {
C1 = cast<ConstantSDNode>(N0.getOperand(1));
N0 = N0.getOperand(0);
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
index 2e7a81a9ef3ee..102402bccf781 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
@@ -10221,6 +10221,8 @@ static unsigned subtargetEncodingFamily(const GCNSubtarget &ST) {
case AMDGPUSubtarget::GFX12:
return ST.hasGFX1250Insts() ? SIEncodingFamily::GFX1250
: SIEncodingFamily::GFX12;
+ case AMDGPUSubtarget::GFX13:
+ return SIEncodingFamily::GFX13;
}
llvm_unreachable("Unknown subtarget generation!");
}
@@ -11202,7 +11204,7 @@ bool SIInstrInfo::isXDLWMMA(const MachineInstr &MI) const {
if (!isWMMA(MI) && !isSWMMAC(MI))
return false;
- if (AMDGPU::isGFX1250(ST))
+ if (AMDGPU::isGFX1250Plus(ST))
return AMDGPU::getWMMAIsXDL(MI.getOpcode());
return true;
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.td b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
index 2ec3ec8674488..789a65bce5ec5 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.td
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
@@ -27,6 +27,7 @@ def SIEncodingFamily {
int GFX11 = 10;
int GFX12 = 11;
int GFX1250 = 12;
+ int GFX13 = 13;
}
//===----------------------------------------------------------------------===//
@@ -3365,7 +3366,8 @@ def getMCOpcodeGen : InstrMapping {
[!cast<string>(SIEncodingFamily.GFX940)],
[!cast<string>(SIEncodingFamily.GFX11)],
[!cast<string>(SIEncodingFamily.GFX12)],
- [!cast<string>(SIEncodingFamily.GFX1250)]];
+ [!cast<string>(SIEncodingFamily.GFX1250)],
+ [!cast<string>(SIEncodingFamily.GFX13)]];
}
// Get equivalent SOPK instruction.
diff --git a/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp b/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
index 2867eb429a726..c16aa3e8a0352 100644
--- a/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
+++ b/llvm/lib/Target/AMDGPU/SIMemoryLegalizer.cpp
@@ -512,9 +512,9 @@ class SIGfx12CacheControl final : public SICacheControl {
public:
SIGfx12CacheControl(const GCNSubtarget &ST) : SICacheControl(ST) {
- // GFX12.0 and GFX12.5 memory models greatly overlap, and in some cases
- // the behavior is the same if assuming GFX12.0 in CU mode.
- assert(!ST.hasGFX1250Insts() || ST.isCuModeEnabled());
+ // GFX120x and GFX125x memory models greatly overlap, and in some cases
+ // the behavior is the same if assuming GFX120x in CU mode.
+ assert(!ST.hasGFX1250Insts() || ST.hasGFX13Insts() || ST.isCuModeEnabled());
}
bool insertWait(MachineBasicBlock::iterator &MI, SIAtomicScope Scope,
diff --git a/llvm/lib/Target/AMDGPU/SMInstructions.td b/llvm/lib/Target/AMDGPU/SMInstructions.td
index 781c61b073db7..ee8d29c77708b 100644
--- a/llvm/lib/Target/AMDGPU/SMInstructions.td
+++ b/llvm/lib/Target/AMDGPU/SMInstructions.td
@@ -1464,7 +1464,7 @@ class SMEM_Real_gfx12Plus<bits<6> op, SM_Pseudo ps, string opName,
class SMEM_Real_gfx12<bits<6> op, SM_Pseudo ps, string opName = ps.Mnemonic> :
SMEM_Real_gfx12Plus<op, ps, opName, SIEncodingFamily.GFX12,
SGPR_NULL_gfx11plus> {
- let AssemblerPredicate = isGFX12Plus;
+ let AssemblerPredicate = isGFX12Only;
let DecoderNamespace = "GFX12";
let Inst{5-0} = !if(ps.has_sbase, sbase{6-1}, ?);
@@ -1537,3 +1537,84 @@ multiclass SMEM_Real_Probe_gfx12<bits<6> op> {
defm S_ATC_PROBE : SMEM_Real_Probe_gfx12<0x22>;
defm S_ATC_PROBE_BUFFER : SMEM_Real_Probe_gfx12<0x23>;
+
+//===----------------------------------------------------------------------===//
+// GFX13.
+//===----------------------------------------------------------------------===//
+
+class SMEM_Real_gfx13<bits<6> op, SM_Pseudo ps, string opName = ps.Mnemonic> :
+ SMEM_Real_gfx12Plus<op, ps, opName, SIEncodingFamily.GFX13,
+ SGPR_NULL_gfx11plus> {
+ let AssemblerPredicate = isGFX13Plus;
+ let DecoderNamespace = "GFX13";
+
+ let Inst{5-0} = !if(ps.has_sbase, sbase{6-1}, ?);
+ let Inst{12-6} = !if(ps.has_sdst, sdst{6-0}, ?);
+}
+
+class SMEM_Real_Prefetch_gfx13<bits<6> op, SM_Pseudo ps> :
+ SMEM_Real_gfx13<op, ps> {
+ bits<7> sdata; // Only 5 bits of sdata are supported.
+
+ let sdst = ?;
+ let Inst{12-11} = 0; // Unused sdata bits.
+ let Inst{10-6} = !if(ps.has_sdst, sdata{4-0}, ?);
+}
+
+class SMEM_Real_Load_gfx13<bits<6> op, string ps, string opName, OffsetMode offsets> :
+ SMEM_Real_gfx13<op, !cast<SM_Pseudo>(ps # offsets.Variant), opName> {
+ RegisterClass BaseClass = !cast<SM_Load_Pseudo>(ps # offsets.Variant).BaseClass;
+ let InOperandList = !con((ins BaseClass:$sbase), offsets.Ins, (ins CPol:$cpol));
+
+ let Inst{20} = cpol{CPolBit.NV}; // non-volatile
+ let Inst{22-21} = cpol{4-3}; // scope
+ let Inst{24-23} = cpol{1-0}; // th - only lower 2 bits are supported
+ let Inst{56} = cpol{CPolBit.SCAL}; // scale offset
+}
+
+multiclass SM_Real_Loads_gfx13<bits<6> op, string ps = NAME> {
+ defvar opName = !tolower(NAME);
+ def _IMM_gfx13 : SMEM_Real_Load_gfx13<op, ps, opName, IMM_Offset>;
+ def _SGPR_IMM_gfx13 : SMEM_Real_Load_gfx13<op, ps, opName, SGPR_IMM_OptOffset>;
+}
+
+defm S_LOAD_B32 : SM_Real_Loads_gfx13<0x00, "S_LOAD_DWORD">;
+defm S_LOAD_B64 : SM_Real_Loads_gfx13<0x01, "S_LOAD_DWORDX2">;
+defm S_LOAD_B96 : SM_Real_Loads_gfx13<0x0e, "S_LOAD_DWORDX3">;
+defm S_LOAD_B128 : SM_Real_Loads_gfx13<0x02, "S_LOAD_DWORDX4">;
+defm S_LOAD_B256 : SM_Real_Loads_gfx13<0x03, "S_LOAD_DWORDX8">;
+defm S_LOAD_B512 : SM_Real_Loads_gfx13<0x04, "S_LOAD_DWORDX16">;
+
+defm S_LOAD_I8 : SM_Real_Loads_gfx13<0x30>;
+defm S_LOAD_U8 : SM_Real_Loads_gfx13<0x31>;
+defm S_LOAD_I16 : SM_Real_Loads_gfx13<0x32>;
+defm S_LOAD_U16 : SM_Real_Loads_gfx13<0x33>;
+
+defm S_BUFFER_LOAD_B32 : SM_Real_Loads_gfx13<0x08, "S_BUFFER_LOAD_DWORD">;
+defm S_BUFFER_LOAD_B64 : SM_Real_Loads_gfx13<0x09, "S_BUFFER_LOAD_DWORDX2">;
+defm S_BUFFER_LOAD_B96 : SM_Real_Loads_gfx13<0x0d, "S_BUFFER_LOAD_DWORDX3">;
+defm S_BUFFER_LOAD_B128 : SM_Real_Loads_gfx13<0x0a, "S_BUFFER_LOAD_DWORDX4">;
+defm S_BUFFER_LOAD_B256 : SM_Real_Loads_gfx13<0x0b, "S_BUFFER_LOAD_DWORDX8">;
+defm S_BUFFER_LOAD_B512 : SM_Real_Loads_gfx13<0x0c, "S_BUFFER_LOAD_DWORDX16">;
+
+defm S_BUFFER_LOAD_I8 : SM_Real_Loads_gfx13<0x34>;
+defm S_BUFFER_LOAD_U8 : SM_Real_Loads_gfx13<0x35>;
+defm S_BUFFER_LOAD_I16 : SM_Real_Loads_gfx13<0x36>;
+defm S_BUFFER_LOAD_U16 : SM_Real_Loads_gfx13<0x37>;
+
+def S_DCACHE_INV_gfx13 : SMEM_Real_gfx13<0x020, S_DCACHE_INV>;
+
+def S_PREFETCH_INST_gfx13 : SMEM_Real_Prefetch_gfx13<0x22, S_PREFETCH_INST>;
+def S_PREFETCH_INST_PC_REL_gfx13 : SMEM_Real_Prefetch_gfx13<0x23, S_PREFETCH_INST_PC_REL>;
+def S_PREFETCH_DATA_gfx13 : SMEM_Real_Prefetch_gfx13<0x2c, S_PREFETCH_DATA>;
+def S_BUFFER_PREFETCH_DATA_gfx13 : SMEM_Real_Prefetch_gfx13<0x2d, S_BUFFER_PREFETCH_DATA>;
+def S_PREFETCH_DATA_PC_REL_gfx13 : SMEM_Real_Prefetch_gfx13<0x2e, S_PREFETCH_DATA_PC_REL>;
+
+multiclass SMEM_Real_Probe_gfx13<bits<6> op> {
+ defvar ps = NAME;
+ def _IMM_gfx13 : SMEM_Real_Prefetch_gfx13<op, !cast<SM_Probe_Pseudo>(ps#_IMM)>;
+ def _SGPR_IMM_gfx13 : SMEM_Real_Prefetch_gfx13<op, !cast<SM_Probe_Pseudo>(ps#_SGPR_OPT_IMM)>;
+}
+
+defm S_ATC_PROBE : SMEM_Real_Probe_gfx13<0x26>;
+defm S_ATC_PROBE_BUFFER : SMEM_Real_Probe_gfx13<0x27>;
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUAsmUtils.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDGPUAsmUtils.cpp
index ce782b025464e..ee5a10fb6e8f9 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUAsmUtils.cpp
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUAsmUtils.cpp
@@ -99,7 +99,7 @@ static constexpr CustomOperand MsgOperands[] = {
{{"MSG_EARLY_PRIM_DEALLOC"}, ID_EARLY_PRIM_DEALLOC, isGFX9_GFX10},
{{"MSG_GS_ALLOC_REQ"}, ID_GS_ALLOC_REQ, isGFX9Plus},
{{"MSG_GET_DOORBELL"}, ID_GET_DOORBELL, isGFX9_GFX10},
- {{"MSG_SAVEWAVE_HAS_TDM"}, ID_SAVEWAVE_HAS_TDM, isGFX1250},
+ {{"MSG_SAVEWAVE_HAS_TDM"}, ID_SAVEWAVE_HAS_TDM, isGFX1250Plus},
{{"MSG_GET_DDID"}, ID_GET_DDID, isGFX10},
{{"MSG_SYSMSG"}, ID_SYSMSG},
{{"MSG_RTN_GET_DOORBELL"}, ID_RTN_GET_DOORBELL, isGFX11Plus},
@@ -111,7 +111,7 @@ static constexpr CustomOperand MsgOperands[] = {
{{"MSG_RTN_GET_TBA_TO_PC"}, ID_RTN_GET_TBA_TO_PC, isGFX11Plus},
{{"MSG_RTN_GET_SE_AID_ID"}, ID_RTN_GET_SE_AID_ID, isGFX12Plus},
{{"MSG_RTN_GET_CLUSTER_BARRIER_STATE"}, ID_RTN_GET_CLUSTER_BARRIER_STATE,
- isGFX1250},
+ isGFX1250Plus},
};
static constexpr CustomOperand SysMsgOperands[] = {
@@ -213,7 +213,7 @@ static constexpr CustomOperand Operands[] = {
{{"HW_REG_POPS_PACKER"}, ID_POPS_PACKER, isGFX10},
{{"HW_REG_WAVE_SCHED_MODE"}, ID_SCHED_MODE, isGFX12Plus},
{{"HW_REG_PERF_SNAPSHOT_DATA"}, ID_PERF_SNAPSHOT_DATA_gfx11, isGFX11},
- {{"HW_REG_IB_STS2"}, ID_IB_STS2, isGFX1250},
+ {{"HW_REG_IB_STS2"}, ID_IB_STS2, isGFX1250Plus},
{{"HW_REG_SHADER_CYCLES"}, ID_SHADER_CYCLES, isGFX10_3_GFX11},
{{"HW_REG_SHADER_CYCLES_LO"}, ID_SHADER_CYCLES, isGFX12Plus},
{{"HW_REG_SHADER_CYCLES_HI"}, ID_SHADER_CYCLES_HI, isGFX12Plus},
@@ -221,8 +221,8 @@ static constexpr CustomOperand Operands[] = {
{{"HW_REG_DVGPR_ALLOC_LO"}, ID_DVGPR_ALLOC_LO, isGFX12Plus},
{{"HW_REG_WAVE_DVGPR_ALLOC_HI"}, ID_DVGPR_ALLOC_HI, isGFX12Plus},
{{"HW_REG_DVGPR_ALLOC_HI"}, ID_DVGPR_ALLOC_HI, isGFX12Plus},
- {{"HW_REG_XNACK_STATE_PRIV"}, ID_XNACK_STATE_PRIV, isGFX1250},
- {{"HW_REG_XNACK_MASK"}, ID_XNACK_MASK_gfx1250, isGFX1250},
+ {{"HW_REG_XNACK_STATE_PRIV"}, ID_XNACK_STATE_PRIV, isGFX1250Plus},
+ {{"HW_REG_XNACK_MASK"}, ID_XNACK_MASK_gfx1250, isGFX1250Plus},
};
// clang-format on
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
index 86dc80f378a84..34cdb86cf9ec5 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
@@ -2514,7 +2514,7 @@ unsigned getNSAMaxSize(const MCSubtargetInfo &STI, bool HasSampler) {
}
unsigned getMaxNumUserSGPRs(const MCSubtargetInfo &STI) {
- if (isGFX1250(STI))
+ if (isGFX1250Plus(STI))
return 32;
return 16;
}
@@ -2581,14 +2581,26 @@ bool isGFX12(const MCSubtargetInfo &STI) {
return STI.getFeatureBits()[AMDGPU::FeatureGFX12];
}
-bool isGFX12Plus(const MCSubtargetInfo &STI) { return isGFX12(STI); }
+bool isGFX12Plus(const MCSubtargetInfo &STI) {
+ return isGFX12(STI) || isGFX13Plus(STI);
+}
bool isNotGFX12Plus(const MCSubtargetInfo &STI) { return !isGFX12Plus(STI); }
bool isGFX1250(const MCSubtargetInfo &STI) {
+ return STI.getFeatureBits()[AMDGPU::FeatureGFX1250Insts] && !isGFX13(STI);
+}
+
+bool isGFX1250Plus(const MCSubtargetInfo &STI) {
return STI.getFeatureBits()[AMDGPU::FeatureGFX1250Insts];
}
+bool isGFX13(const MCSubtargetInfo &STI) {
+ return STI.getFeatureBits()[AMDGPU::FeatureGFX13];
+}
+
+bool isGFX13Plus(const MCSubtargetInfo &STI) { return isGFX13(STI); }
+
bool supportsWGP(const MCSubtargetInfo &STI) {
if (isGFX1250(STI))
return false;
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
index 472b26bbdee85..97dfdabc13691 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h
@@ -1599,6 +1599,9 @@ bool isGFX11Plus(const MCSubtargetInfo &STI);
bool isGFX12(const MCSubtargetInfo &STI);
bool isGFX12Plus(const MCSubtargetInfo &STI);
bool isGFX1250(const MCSubtargetInfo &STI);
+bool isGFX1250Plus(const MCSubtargetInfo &STI);
+bool isGFX13(const MCSubtargetInfo &STI);
+bool isGFX13Plus(const MCSubtargetInfo &STI);
bool supportsWGP(const MCSubtargetInfo &STI);
bool isNotGFX12Plus(const MCSubtargetInfo &STI);
bool isNotGFX11Plus(const MCSubtargetInfo &STI);
diff --git a/llvm/test/CodeGen/AMDGPU/occupancy-levels.ll b/llvm/test/CodeGen/AMDGPU/occupancy-levels.ll
index d71091dc20093..fcfeb099c698f 100644
--- a/llvm/test/CodeGen/AMDGPU/occupancy-levels.ll
+++ b/llvm/test/CodeGen/AMDGPU/occupancy-levels.ll
@@ -21,7 +21,7 @@
; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W32 %s
; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W64 %s
; RUN: llc -mtriple=amdgcn -mcpu=gfx1250 < %s | FileCheck --check-prefixes=GCN,GFX1250 %s
-; RUN: llc -mtriple=amdgcn -mcpu=gfx1310 < %s | FileCheck --check-prefixes=GCN,GFX1250 %s
+; RUN: llc -mtriple=amdgcn -mcpu=gfx1310 < %s | FileCheck --check-prefixes=GCN,GFX1100,GFX1100W32 %s
; GCN-LABEL: {{^}}max_occupancy:
; GFX9: ; Occupancy: 10
diff --git a/llvm/test/MC/AMDGPU/gfx13_smem.s b/llvm/test/MC/AMDGPU/gfx13_smem.s
new file mode 100644
index 0000000000000..88940d3c411cb
--- /dev/null
+++ b/llvm/test/MC/AMDGPU/gfx13_smem.s
@@ -0,0 +1,1428 @@
+// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --version 6
+// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1310 -show-encoding < %s | FileCheck -check-prefixes=GFX13,GFX13-ASM %s
+// RUN: llvm-mc -triple=amdgcn -mcpu=gfx1310 -show-encoding %s | %extract-encodings | llvm-mc -triple=amdgcn -mcpu=gfx1310 -disassemble -show-encoding | FileCheck --strict-whitespace --check-prefixes=GFX13,GFX13-DIS %s
+
+s_prefetch_inst s[12:13], 16, s4, 2
+// GFX13: s_prefetch_inst s[12:13], 0x10, s4, 2 ; encoding: [0x86,0x40,0x04,0xf4,0x10,0x00,0x00,0x08]
+
+s_prefetch_inst s[14:15], 0, m0, 7
+// GFX13: s_prefetch_inst s[14:15], 0x0, m0, 7 ; encoding: [0xc7,0x41,0x04,0xf4,0x00,0x00,0x00,0xfa]
+
+s_prefetch_inst s[14:15], 0x7fffff, m0, 7
+// GFX13: s_prefetch_inst s[14:15], 0x7fffff, m0, 7 ; encoding: [0xc7,0x41,0x04,0xf4,0xff,0xff,0x7f,0xfa]
+
+s_prefetch_inst s[14:15], -1, m0, 7
+// GFX13: s_prefetch_inst s[14:15], -0x1, m0, 7 ; encoding: [0xc7,0x41,0x04,0xf4,0xff,0xff,0xff,0xfa]
+
+s_prefetch_inst s[14:15], 100, m0, 31
+// GFX13: s_prefetch_inst s[14:15], 0x64, m0, 31 ; encoding: [0xc7,0x47,0x04,0xf4,0x64,0x00,0x00,0xfa]
+
+s_prefetch_inst_pc_rel 100, s10, 7
+// GFX13: s_prefetch_inst_pc_rel 0x64, s10, 7 ; encoding: [0xc0,0x61,0x04,0xf4,0x64,0x00,0x00,0x14]
+
+s_prefetch_data s[18:19], 100, s10, 7
+// GFX13: s_prefetch_data s[18:19], 0x64, s10, 7 ; encoding: [0xc9,0x81,0x05,0xf4,0x64,0x00,0x00,0x14]
+
+s_prefetch_data_pc_rel 100, s10, 7
+// GFX13: s_prefetch_data_pc_rel 0x64, s10, 7 ; encoding: [0xc0,0xc1,0x05,0xf4,0x64,0x00,0x00,0x14]
+
+s_buffer_prefetch_data s[20:23], 100, s10, 7
+// GFX13: s_buffer_prefetch_data s[20:23], 0x64, s10, 7 ; encoding: [0xca,0xa1,0x05,0xf4,0x64,0x00,0x00,0x14]
+
+s_buffer_prefetch_data s[20:23], 100, null, 7
+// GFX13: s_buffer_prefetch_data s[20:23], 0x64, null, 7 ; encoding: [0xca,0xa1,0x05,0xf4,0x64,0x00,0x00,0xf8]
+
+s_load_i8 s5, s[2:3], s0
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x01,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 s101, s[2:3], s0
+// GFX13: s_load_i8 s101, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x19,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 vcc_lo, s[2:3], s0
+// GFX13: s_load_i8 vcc_lo, s[2:3], s0 offset:0x0 ; encoding: [0x81,0x1a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 vcc_hi, s[2:3], s0
+// GFX13: s_load_i8 vcc_hi, s[2:3], s0 offset:0x0 ; encoding: [0xc1,0x1a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[4:5], s0
+// GFX13: s_load_i8 s5, s[4:5], s0 offset:0x0 ; encoding: [0x42,0x01,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[100:101], s0
+// GFX13: s_load_i8 s5, s[100:101], s0 offset:0x0 ; encoding: [0x72,0x01,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, vcc, s0
+// GFX13: s_load_i8 s5, vcc, s0 offset:0x0 ; encoding: [0x75,0x01,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s101
+// GFX13: s_load_i8 s5, s[2:3], s101 offset:0x0 ; encoding: [0x41,0x01,0x06,0xf4,0x00,0x00,0x00,0xca]
+
+s_load_i8 s5, s[2:3], vcc_lo
+// GFX13: s_load_i8 s5, s[2:3], vcc_lo offset:0x0 ; encoding: [0x41,0x01,0x06,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_i8 s5, s[2:3], vcc_hi
+// GFX13: s_load_i8 s5, s[2:3], vcc_hi offset:0x0 ; encoding: [0x41,0x01,0x06,0xf4,0x00,0x00,0x00,0xd6]
+
+s_load_i8 s5, s[2:3], m0
+// GFX13: s_load_i8 s5, s[2:3], m0 offset:0x0 ; encoding: [0x41,0x01,0x06,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_i8 s5, s[2:3], 0x0
+// GFX13: s_load_i8 s5, s[2:3], 0x0 ; encoding: [0x41,0x01,0x06,0xf4,0x00,0x00,0x00,0xf8]
+
+s_load_i8 s5, s[2:3], s7 offset:0x12345
+// GFX13: s_load_i8 s5, s[2:3], s7 offset:0x12345 ; encoding: [0x41,0x01,0x06,0xf4,0x45,0x23,0x01,0x0e]
+
+s_load_u8 s5, s[2:3], s0
+// GFX13: s_load_u8 s5, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x21,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x39,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 vcc_lo, s[2:3], s0
+// GFX13: s_load_u8 vcc_lo, s[2:3], s0 offset:0x0 ; encoding: [0x81,0x3a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 vcc_hi, s[2:3], s0
+// GFX13: s_load_u8 vcc_hi, s[2:3], s0 offset:0x0 ; encoding: [0xc1,0x3a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 s5, s[4:5], s0
+// GFX13: s_load_u8 s5, s[4:5], s0 offset:0x0 ; encoding: [0x42,0x21,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 s5, s[100:101], s0
+// GFX13: s_load_u8 s5, s[100:101], s0 offset:0x0 ; encoding: [0x72,0x21,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 s5, vcc, s0
+// GFX13: s_load_u8 s5, vcc, s0 offset:0x0 ; encoding: [0x75,0x21,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 s5, s[2:3], s101
+// GFX13: s_load_u8 s5, s[2:3], s101 offset:0x0 ; encoding: [0x41,0x21,0x06,0xf4,0x00,0x00,0x00,0xca]
+
+s_load_u8 s5, s[2:3], vcc_lo
+// GFX13: s_load_u8 s5, s[2:3], vcc_lo offset:0x0 ; encoding: [0x41,0x21,0x06,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_u8 s5, s[2:3], vcc_hi
+// GFX13: s_load_u8 s5, s[2:3], vcc_hi offset:0x0 ; encoding: [0x41,0x21,0x06,0xf4,0x00,0x00,0x00,0xd6]
+
+s_load_u8 s5, s[2:3], m0
+// GFX13: s_load_u8 s5, s[2:3], m0 offset:0x0 ; encoding: [0x41,0x21,0x06,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_u8 s5, s[2:3], 0x0
+// GFX13: s_load_u8 s5, s[2:3], 0x0 ; encoding: [0x41,0x21,0x06,0xf4,0x00,0x00,0x00,0xf8]
+
+s_load_u8 s5, s[2:3], s7 offset:0x12345
+// GFX13: s_load_u8 s5, s[2:3], s7 offset:0x12345 ; encoding: [0x41,0x21,0x06,0xf4,0x45,0x23,0x01,0x0e]
+
+s_buffer_load_i8 s5, s[4:7], s0
+// GFX13: s_buffer_load_i8 s5, s[4:7], s0 offset:0x0 ; encoding: [0x42,0x81,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 s101, s[4:7], s0
+// GFX13: s_buffer_load_i8 s101, s[4:7], s0 offset:0x0 ; encoding: [0x42,0x99,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 ; encoding: [0x82,0x9a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_hi, s[4:7], s0
+// GFX13: s_buffer_load_i8 vcc_hi, s[4:7], s0 offset:0x0 ; encoding: [0xc2,0x9a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 s5, s[8:11], s0
+// GFX13: s_buffer_load_i8 s5, s[8:11], s0 offset:0x0 ; encoding: [0x44,0x81,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 s5, s[96:99], s0
+// GFX13: s_buffer_load_i8 s5, s[96:99], s0 offset:0x0 ; encoding: [0x70,0x81,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 s5, s[4:7], s101
+// GFX13: s_buffer_load_i8 s5, s[4:7], s101 offset:0x0 ; encoding: [0x42,0x81,0x06,0xf4,0x00,0x00,0x00,0xca]
+
+s_buffer_load_i8 s5, s[4:7], vcc_lo
+// GFX13: s_buffer_load_i8 s5, s[4:7], vcc_lo offset:0x0 ; encoding: [0x42,0x81,0x06,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_i8 s5, s[4:7], vcc_hi
+// GFX13: s_buffer_load_i8 s5, s[4:7], vcc_hi offset:0x0 ; encoding: [0x42,0x81,0x06,0xf4,0x00,0x00,0x00,0xd6]
+
+s_buffer_load_i8 s5, s[4:7], m0
+// GFX13: s_buffer_load_i8 s5, s[4:7], m0 offset:0x0 ; encoding: [0x42,0x81,0x06,0xf4,0x00,0x00,0x00,0xfa]
+
+s_buffer_load_i8 s5, s[4:7], 0x0
+// GFX13: s_buffer_load_i8 s5, s[4:7], 0x0 ; encoding: [0x42,0x81,0x06,0xf4,0x00,0x00,0x00,0xf8]
+
+s_buffer_load_i8 s5, s[4:7], s0 offset:0x12345
+// GFX13: s_buffer_load_i8 s5, s[4:7], s0 offset:0x12345 ; encoding: [0x42,0x81,0x06,0xf4,0x45,0x23,0x01,0x00]
+
+s_buffer_load_u8 s5, s[4:7], s0
+// GFX13: s_buffer_load_u8 s5, s[4:7], s0 offset:0x0 ; encoding: [0x42,0xa1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s101, s[4:7], s0
+// GFX13: s_buffer_load_u8 s101, s[4:7], s0 offset:0x0 ; encoding: [0x42,0xb9,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 vcc_lo, s[4:7], s0
+// GFX13: s_buffer_load_u8 vcc_lo, s[4:7], s0 offset:0x0 ; encoding: [0x82,0xba,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 vcc_hi, s[4:7], s0
+// GFX13: s_buffer_load_u8 vcc_hi, s[4:7], s0 offset:0x0 ; encoding: [0xc2,0xba,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 ; encoding: [0x44,0xa1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[96:99], s0
+// GFX13: s_buffer_load_u8 s5, s[96:99], s0 offset:0x0 ; encoding: [0x70,0xa1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[4:7], s101
+// GFX13: s_buffer_load_u8 s5, s[4:7], s101 offset:0x0 ; encoding: [0x42,0xa1,0x06,0xf4,0x00,0x00,0x00,0xca]
+
+s_buffer_load_u8 s5, s[4:7], vcc_lo
+// GFX13: s_buffer_load_u8 s5, s[4:7], vcc_lo offset:0x0 ; encoding: [0x42,0xa1,0x06,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_u8 s5, s[4:7], vcc_hi
+// GFX13: s_buffer_load_u8 s5, s[4:7], vcc_hi offset:0x0 ; encoding: [0x42,0xa1,0x06,0xf4,0x00,0x00,0x00,0xd6]
+
+s_buffer_load_u8 s5, s[4:7], m0
+// GFX13: s_buffer_load_u8 s5, s[4:7], m0 offset:0x0 ; encoding: [0x42,0xa1,0x06,0xf4,0x00,0x00,0x00,0xfa]
+
+s_buffer_load_u8 s5, s[4:7], 0x0
+// GFX13: s_buffer_load_u8 s5, s[4:7], 0x0 ; encoding: [0x42,0xa1,0x06,0xf4,0x00,0x00,0x00,0xf8]
+
+s_buffer_load_u8 s5, s[4:7], s0 offset:0x12345
+// GFX13: s_buffer_load_u8 s5, s[4:7], s0 offset:0x12345 ; encoding: [0x42,0xa1,0x06,0xf4,0x45,0x23,0x01,0x00]
+
+s_load_i16 s5, s[2:3], s0
+// GFX13: s_load_i16 s5, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x41,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 s101, s[2:3], s0
+// GFX13: s_load_i16 s101, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x59,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 vcc_lo, s[2:3], s0
+// GFX13: s_load_i16 vcc_lo, s[2:3], s0 offset:0x0 ; encoding: [0x81,0x5a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 vcc_hi, s[2:3], s0
+// GFX13: s_load_i16 vcc_hi, s[2:3], s0 offset:0x0 ; encoding: [0xc1,0x5a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[4:5], s0
+// GFX13: s_load_i16 s5, s[4:5], s0 offset:0x0 ; encoding: [0x42,0x41,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 ; encoding: [0x72,0x41,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, vcc, s0
+// GFX13: s_load_i16 s5, vcc, s0 offset:0x0 ; encoding: [0x75,0x41,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[2:3], s101
+// GFX13: s_load_i16 s5, s[2:3], s101 offset:0x0 ; encoding: [0x41,0x41,0x06,0xf4,0x00,0x00,0x00,0xca]
+
+s_load_i16 s5, s[2:3], vcc_lo
+// GFX13: s_load_i16 s5, s[2:3], vcc_lo offset:0x0 ; encoding: [0x41,0x41,0x06,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_i16 s5, s[2:3], vcc_hi
+// GFX13: s_load_i16 s5, s[2:3], vcc_hi offset:0x0 ; encoding: [0x41,0x41,0x06,0xf4,0x00,0x00,0x00,0xd6]
+
+s_load_i16 s5, s[2:3], m0
+// GFX13: s_load_i16 s5, s[2:3], m0 offset:0x0 ; encoding: [0x41,0x41,0x06,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_i16 s5, s[2:3], 0x0
+// GFX13: s_load_i16 s5, s[2:3], 0x0 ; encoding: [0x41,0x41,0x06,0xf4,0x00,0x00,0x00,0xf8]
+
+s_load_i16 s5, s[2:3], s7 offset:0x12345
+// GFX13: s_load_i16 s5, s[2:3], s7 offset:0x12345 ; encoding: [0x41,0x41,0x06,0xf4,0x45,0x23,0x01,0x0e]
+
+s_load_u16 s5, s[2:3], s0
+// GFX13: s_load_u16 s5, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x61,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 s101, s[2:3], s0
+// GFX13: s_load_u16 s101, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x79,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 vcc_lo, s[2:3], s0
+// GFX13: s_load_u16 vcc_lo, s[2:3], s0 offset:0x0 ; encoding: [0x81,0x7a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 vcc_hi, s[2:3], s0
+// GFX13: s_load_u16 vcc_hi, s[2:3], s0 offset:0x0 ; encoding: [0xc1,0x7a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, s[4:5], s0
+// GFX13: s_load_u16 s5, s[4:5], s0 offset:0x0 ; encoding: [0x42,0x61,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, s[100:101], s0
+// GFX13: s_load_u16 s5, s[100:101], s0 offset:0x0 ; encoding: [0x72,0x61,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 ; encoding: [0x75,0x61,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, s[2:3], s101
+// GFX13: s_load_u16 s5, s[2:3], s101 offset:0x0 ; encoding: [0x41,0x61,0x06,0xf4,0x00,0x00,0x00,0xca]
+
+s_load_u16 s5, s[2:3], vcc_lo
+// GFX13: s_load_u16 s5, s[2:3], vcc_lo offset:0x0 ; encoding: [0x41,0x61,0x06,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_u16 s5, s[2:3], vcc_hi
+// GFX13: s_load_u16 s5, s[2:3], vcc_hi offset:0x0 ; encoding: [0x41,0x61,0x06,0xf4,0x00,0x00,0x00,0xd6]
+
+s_load_u16 s5, s[2:3], m0
+// GFX13: s_load_u16 s5, s[2:3], m0 offset:0x0 ; encoding: [0x41,0x61,0x06,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_u16 s5, s[2:3], 0x0
+// GFX13: s_load_u16 s5, s[2:3], 0x0 ; encoding: [0x41,0x61,0x06,0xf4,0x00,0x00,0x00,0xf8]
+
+s_load_u16 s5, s[2:3], s7 offset:0x12345
+// GFX13: s_load_u16 s5, s[2:3], s7 offset:0x12345 ; encoding: [0x41,0x61,0x06,0xf4,0x45,0x23,0x01,0x0e]
+
+s_buffer_load_i16 s5, s[4:7], s0
+// GFX13: s_buffer_load_i16 s5, s[4:7], s0 offset:0x0 ; encoding: [0x42,0xc1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 s101, s[4:7], s0
+// GFX13: s_buffer_load_i16 s101, s[4:7], s0 offset:0x0 ; encoding: [0x42,0xd9,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_lo, s[4:7], s0
+// GFX13: s_buffer_load_i16 vcc_lo, s[4:7], s0 offset:0x0 ; encoding: [0x82,0xda,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 ; encoding: [0xc2,0xda,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 s5, s[8:11], s0
+// GFX13: s_buffer_load_i16 s5, s[8:11], s0 offset:0x0 ; encoding: [0x44,0xc1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 s5, s[96:99], s0
+// GFX13: s_buffer_load_i16 s5, s[96:99], s0 offset:0x0 ; encoding: [0x70,0xc1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 s5, s[4:7], s101
+// GFX13: s_buffer_load_i16 s5, s[4:7], s101 offset:0x0 ; encoding: [0x42,0xc1,0x06,0xf4,0x00,0x00,0x00,0xca]
+
+s_buffer_load_i16 s5, s[4:7], vcc_lo
+// GFX13: s_buffer_load_i16 s5, s[4:7], vcc_lo offset:0x0 ; encoding: [0x42,0xc1,0x06,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_i16 s5, s[4:7], vcc_hi
+// GFX13: s_buffer_load_i16 s5, s[4:7], vcc_hi offset:0x0 ; encoding: [0x42,0xc1,0x06,0xf4,0x00,0x00,0x00,0xd6]
+
+s_buffer_load_i16 s5, s[4:7], m0
+// GFX13: s_buffer_load_i16 s5, s[4:7], m0 offset:0x0 ; encoding: [0x42,0xc1,0x06,0xf4,0x00,0x00,0x00,0xfa]
+
+s_buffer_load_i16 s5, s[4:7], 0x0
+// GFX13: s_buffer_load_i16 s5, s[4:7], 0x0 ; encoding: [0x42,0xc1,0x06,0xf4,0x00,0x00,0x00,0xf8]
+
+s_buffer_load_i16 s5, s[4:7], s0 offset:0x12345
+// GFX13: s_buffer_load_i16 s5, s[4:7], s0 offset:0x12345 ; encoding: [0x42,0xc1,0x06,0xf4,0x45,0x23,0x01,0x00]
+
+s_buffer_load_u16 s5, s[4:7], s0
+// GFX13: s_buffer_load_u16 s5, s[4:7], s0 offset:0x0 ; encoding: [0x42,0xe1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s101, s[4:7], s0
+// GFX13: s_buffer_load_u16 s101, s[4:7], s0 offset:0x0 ; encoding: [0x42,0xf9,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 vcc_lo, s[4:7], s0
+// GFX13: s_buffer_load_u16 vcc_lo, s[4:7], s0 offset:0x0 ; encoding: [0x82,0xfa,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 vcc_hi, s[4:7], s0
+// GFX13: s_buffer_load_u16 vcc_hi, s[4:7], s0 offset:0x0 ; encoding: [0xc2,0xfa,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[8:11], s0
+// GFX13: s_buffer_load_u16 s5, s[8:11], s0 offset:0x0 ; encoding: [0x44,0xe1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 ; encoding: [0x70,0xe1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[4:7], s101
+// GFX13: s_buffer_load_u16 s5, s[4:7], s101 offset:0x0 ; encoding: [0x42,0xe1,0x06,0xf4,0x00,0x00,0x00,0xca]
+
+s_buffer_load_u16 s5, s[4:7], vcc_lo
+// GFX13: s_buffer_load_u16 s5, s[4:7], vcc_lo offset:0x0 ; encoding: [0x42,0xe1,0x06,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_u16 s5, s[4:7], vcc_hi
+// GFX13: s_buffer_load_u16 s5, s[4:7], vcc_hi offset:0x0 ; encoding: [0x42,0xe1,0x06,0xf4,0x00,0x00,0x00,0xd6]
+
+s_buffer_load_u16 s5, s[4:7], m0
+// GFX13: s_buffer_load_u16 s5, s[4:7], m0 offset:0x0 ; encoding: [0x42,0xe1,0x06,0xf4,0x00,0x00,0x00,0xfa]
+
+s_buffer_load_u16 s5, s[4:7], 0x0
+// GFX13: s_buffer_load_u16 s5, s[4:7], 0x0 ; encoding: [0x42,0xe1,0x06,0xf4,0x00,0x00,0x00,0xf8]
+
+s_buffer_load_u16 s5, s[4:7], s0 offset:0x12345
+// GFX13: s_buffer_load_u16 s5, s[4:7], s0 offset:0x12345 ; encoding: [0x42,0xe1,0x06,0xf4,0x45,0x23,0x01,0x00]
+
+s_load_b32 s5, s[2:3], s0
+// GFX13: s_load_b32 s5, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x01,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s101, s[2:3], s0
+// GFX13: s_load_b32 s101, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x19,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 vcc_lo, s[2:3], s0
+// GFX13: s_load_b32 vcc_lo, s[2:3], s0 offset:0x0 ; encoding: [0x81,0x1a,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 vcc_hi, s[2:3], s0
+// GFX13: s_load_b32 vcc_hi, s[2:3], s0 offset:0x0 ; encoding: [0xc1,0x1a,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[4:5], s0
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 ; encoding: [0x42,0x01,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[100:101], s0
+// GFX13: s_load_b32 s5, s[100:101], s0 offset:0x0 ; encoding: [0x72,0x01,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, vcc, s0
+// GFX13: s_load_b32 s5, vcc, s0 offset:0x0 ; encoding: [0x75,0x01,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[2:3], s101
+// GFX13: s_load_b32 s5, s[2:3], s101 offset:0x0 ; encoding: [0x41,0x01,0x00,0xf4,0x00,0x00,0x00,0xca]
+
+s_load_b32 s5, s[2:3], vcc_lo
+// GFX13: s_load_b32 s5, s[2:3], vcc_lo offset:0x0 ; encoding: [0x41,0x01,0x00,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b32 s5, s[2:3], vcc_hi
+// GFX13: s_load_b32 s5, s[2:3], vcc_hi offset:0x0 ; encoding: [0x41,0x01,0x00,0xf4,0x00,0x00,0x00,0xd6]
+
+s_load_b32 s5, s[2:3], m0
+// GFX13: s_load_b32 s5, s[2:3], m0 offset:0x0 ; encoding: [0x41,0x01,0x00,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b32 s5, s[2:3], 0x0
+// GFX13: s_load_b32 s5, s[2:3], 0x0 ; encoding: [0x41,0x01,0x00,0xf4,0x00,0x00,0x00,0xf8]
+
+s_load_b32 s5, s[2:3], s7 offset:0x12345
+// GFX13: s_load_b32 s5, s[2:3], s7 offset:0x12345 ; encoding: [0x41,0x01,0x00,0xf4,0x45,0x23,0x01,0x0e]
+
+s_load_b64 s[10:11], s[2:3], s0
+// GFX13: s_load_b64 s[10:11], s[2:3], s0 offset:0x0 ; encoding: [0x81,0x22,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b64 s[12:13], s[2:3], s0
+// GFX13: s_load_b64 s[12:13], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x23,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b64 s[100:101], s[2:3], s0
+// GFX13: s_load_b64 s[100:101], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x39,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b64 vcc, s[2:3], s0
+// GFX13: s_load_b64 vcc, s[2:3], s0 offset:0x0 ; encoding: [0x81,0x3a,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b64 s[10:11], s[4:5], s0
+// GFX13: s_load_b64 s[10:11], s[4:5], s0 offset:0x0 ; encoding: [0x82,0x22,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b64 s[10:11], s[100:101], s0
+// GFX13: s_load_b64 s[10:11], s[100:101], s0 offset:0x0 ; encoding: [0xb2,0x22,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b64 s[10:11], vcc, s0
+// GFX13: s_load_b64 s[10:11], vcc, s0 offset:0x0 ; encoding: [0xb5,0x22,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b64 s[10:11], s[2:3], s101
+// GFX13: s_load_b64 s[10:11], s[2:3], s101 offset:0x0 ; encoding: [0x81,0x22,0x00,0xf4,0x00,0x00,0x00,0xca]
+
+s_load_b64 s[10:11], s[2:3], vcc_lo
+// GFX13: s_load_b64 s[10:11], s[2:3], vcc_lo offset:0x0 ; encoding: [0x81,0x22,0x00,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b64 s[10:11], s[2:3], vcc_hi
+// GFX13: s_load_b64 s[10:11], s[2:3], vcc_hi offset:0x0 ; encoding: [0x81,0x22,0x00,0xf4,0x00,0x00,0x00,0xd6]
+
+s_load_b64 s[10:11], s[2:3], m0
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 ; encoding: [0x81,0x22,0x00,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b64 s[10:11], s[2:3], 0x0
+// GFX13: s_load_b64 s[10:11], s[2:3], 0x0 ; encoding: [0x81,0x22,0x00,0xf4,0x00,0x00,0x00,0xf8]
+
+s_load_b96 s[20:22], s[2:3], s0
+// GFX13: s_load_b96 s[20:22], s[2:3], s0 offset:0x0 ; encoding: [0x01,0xc5,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b96 s[24:26], s[2:3], s0
+// GFX13: s_load_b96 s[24:26], s[2:3], s0 offset:0x0 ; encoding: [0x01,0xc6,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b96 s[96:98], s[2:3], s0
+// GFX13: s_load_b96 s[96:98], s[2:3], s0 offset:0x0 ; encoding: [0x01,0xd8,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b96 s[20:22], s[4:5], s0
+// GFX13: s_load_b96 s[20:22], s[4:5], s0 offset:0x0 ; encoding: [0x02,0xc5,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b96 s[20:22], s[100:101], s0
+// GFX13: s_load_b96 s[20:22], s[100:101], s0 offset:0x0 ; encoding: [0x32,0xc5,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b96 s[20:22], vcc, s0
+// GFX13: s_load_b96 s[20:22], vcc, s0 offset:0x0 ; encoding: [0x35,0xc5,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b96 s[20:22], s[2:3], s101
+// GFX13: s_load_b96 s[20:22], s[2:3], s101 offset:0x0 ; encoding: [0x01,0xc5,0x01,0xf4,0x00,0x00,0x00,0xca]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 ; encoding: [0x01,0xc5,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b96 s[20:22], s[2:3], vcc_hi
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_hi offset:0x0 ; encoding: [0x01,0xc5,0x01,0xf4,0x00,0x00,0x00,0xd6]
+
+s_load_b96 s[20:22], s[2:3], m0
+// GFX13: s_load_b96 s[20:22], s[2:3], m0 offset:0x0 ; encoding: [0x01,0xc5,0x01,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b96 s[20:22], s[2:3], 0x0
+// GFX13: s_load_b96 s[20:22], s[2:3], 0x0 ; encoding: [0x01,0xc5,0x01,0xf4,0x00,0x00,0x00,0xf8]
+
+s_load_b128 s[20:23], s[2:3], s0
+// GFX13: s_load_b128 s[20:23], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x45,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b128 s[24:27], s[2:3], s0
+// GFX13: s_load_b128 s[24:27], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x46,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b128 s[96:99], s[2:3], s0
+// GFX13: s_load_b128 s[96:99], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x58,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b128 s[20:23], s[4:5], s0
+// GFX13: s_load_b128 s[20:23], s[4:5], s0 offset:0x0 ; encoding: [0x02,0x45,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b128 s[20:23], s[100:101], s0
+// GFX13: s_load_b128 s[20:23], s[100:101], s0 offset:0x0 ; encoding: [0x32,0x45,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b128 s[20:23], vcc, s0
+// GFX13: s_load_b128 s[20:23], vcc, s0 offset:0x0 ; encoding: [0x35,0x45,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b128 s[20:23], s[2:3], s101
+// GFX13: s_load_b128 s[20:23], s[2:3], s101 offset:0x0 ; encoding: [0x01,0x45,0x00,0xf4,0x00,0x00,0x00,0xca]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 ; encoding: [0x01,0x45,0x00,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_hi
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_hi offset:0x0 ; encoding: [0x01,0x45,0x00,0xf4,0x00,0x00,0x00,0xd6]
+
+s_load_b128 s[20:23], s[2:3], m0
+// GFX13: s_load_b128 s[20:23], s[2:3], m0 offset:0x0 ; encoding: [0x01,0x45,0x00,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b128 s[20:23], s[2:3], 0x0
+// GFX13: s_load_b128 s[20:23], s[2:3], 0x0 ; encoding: [0x01,0x45,0x00,0xf4,0x00,0x00,0x00,0xf8]
+
+s_load_b256 s[20:27], s[2:3], s0
+// GFX13: s_load_b256 s[20:27], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x65,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[24:31], s[2:3], s0
+// GFX13: s_load_b256 s[24:31], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x66,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[92:99], s[2:3], s0
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x77,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[20:27], s[4:5], s0
+// GFX13: s_load_b256 s[20:27], s[4:5], s0 offset:0x0 ; encoding: [0x02,0x65,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[20:27], s[100:101], s0
+// GFX13: s_load_b256 s[20:27], s[100:101], s0 offset:0x0 ; encoding: [0x32,0x65,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[20:27], vcc, s0
+// GFX13: s_load_b256 s[20:27], vcc, s0 offset:0x0 ; encoding: [0x35,0x65,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[20:27], s[2:3], s101
+// GFX13: s_load_b256 s[20:27], s[2:3], s101 offset:0x0 ; encoding: [0x01,0x65,0x00,0xf4,0x00,0x00,0x00,0xca]
+
+s_load_b256 s[20:27], s[2:3], vcc_lo
+// GFX13: s_load_b256 s[20:27], s[2:3], vcc_lo offset:0x0 ; encoding: [0x01,0x65,0x00,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b256 s[20:27], s[2:3], vcc_hi
+// GFX13: s_load_b256 s[20:27], s[2:3], vcc_hi offset:0x0 ; encoding: [0x01,0x65,0x00,0xf4,0x00,0x00,0x00,0xd6]
+
+s_load_b256 s[20:27], s[2:3], m0
+// GFX13: s_load_b256 s[20:27], s[2:3], m0 offset:0x0 ; encoding: [0x01,0x65,0x00,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b256 s[20:27], s[2:3], 0x0
+// GFX13: s_load_b256 s[20:27], s[2:3], 0x0 ; encoding: [0x01,0x65,0x00,0xf4,0x00,0x00,0x00,0xf8]
+
+s_load_b512 s[20:35], s[2:3], s0
+// GFX13: s_load_b512 s[20:35], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x85,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[24:39], s[2:3], s0
+// GFX13: s_load_b512 s[24:39], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x86,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[84:99], s[2:3], s0
+// GFX13: s_load_b512 s[84:99], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x95,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 ; encoding: [0x02,0x85,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[100:101], s0
+// GFX13: s_load_b512 s[20:35], s[100:101], s0 offset:0x0 ; encoding: [0x32,0x85,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], vcc, s0
+// GFX13: s_load_b512 s[20:35], vcc, s0 offset:0x0 ; encoding: [0x35,0x85,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[2:3], s101
+// GFX13: s_load_b512 s[20:35], s[2:3], s101 offset:0x0 ; encoding: [0x01,0x85,0x00,0xf4,0x00,0x00,0x00,0xca]
+
+s_load_b512 s[20:35], s[2:3], vcc_lo
+// GFX13: s_load_b512 s[20:35], s[2:3], vcc_lo offset:0x0 ; encoding: [0x01,0x85,0x00,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b512 s[20:35], s[2:3], vcc_hi
+// GFX13: s_load_b512 s[20:35], s[2:3], vcc_hi offset:0x0 ; encoding: [0x01,0x85,0x00,0xf4,0x00,0x00,0x00,0xd6]
+
+s_load_b512 s[20:35], s[2:3], m0
+// GFX13: s_load_b512 s[20:35], s[2:3], m0 offset:0x0 ; encoding: [0x01,0x85,0x00,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b512 s[20:35], s[2:3], 0x0
+// GFX13: s_load_b512 s[20:35], s[2:3], 0x0 ; encoding: [0x01,0x85,0x00,0xf4,0x00,0x00,0x00,0xf8]
+
+s_buffer_load_b32 s5, s[4:7], s0
+// GFX13: s_buffer_load_b32 s5, s[4:7], s0 offset:0x0 ; encoding: [0x42,0x01,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s101, s[4:7], s0
+// GFX13: s_buffer_load_b32 s101, s[4:7], s0 offset:0x0 ; encoding: [0x42,0x19,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 vcc_lo, s[4:7], s0
+// GFX13: s_buffer_load_b32 vcc_lo, s[4:7], s0 offset:0x0 ; encoding: [0x82,0x1a,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 vcc_hi, s[4:7], s0
+// GFX13: s_buffer_load_b32 vcc_hi, s[4:7], s0 offset:0x0 ; encoding: [0xc2,0x1a,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[8:11], s0
+// GFX13: s_buffer_load_b32 s5, s[8:11], s0 offset:0x0 ; encoding: [0x44,0x01,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 ; encoding: [0x70,0x01,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[4:7], s101
+// GFX13: s_buffer_load_b32 s5, s[4:7], s101 offset:0x0 ; encoding: [0x42,0x01,0x01,0xf4,0x00,0x00,0x00,0xca]
+
+s_buffer_load_b32 s5, s[4:7], vcc_lo
+// GFX13: s_buffer_load_b32 s5, s[4:7], vcc_lo offset:0x0 ; encoding: [0x42,0x01,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b32 s5, s[4:7], vcc_hi
+// GFX13: s_buffer_load_b32 s5, s[4:7], vcc_hi offset:0x0 ; encoding: [0x42,0x01,0x01,0xf4,0x00,0x00,0x00,0xd6]
+
+s_buffer_load_b32 s5, s[4:7], m0
+// GFX13: s_buffer_load_b32 s5, s[4:7], m0 offset:0x0 ; encoding: [0x42,0x01,0x01,0xf4,0x00,0x00,0x00,0xfa]
+
+s_buffer_load_b32 s5, s[4:7], 0x0
+// GFX13: s_buffer_load_b32 s5, s[4:7], 0x0 ; encoding: [0x42,0x01,0x01,0xf4,0x00,0x00,0x00,0xf8]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 ; encoding: [0x82,0x22,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[12:13], s[4:7], s0
+// GFX13: s_buffer_load_b64 s[12:13], s[4:7], s0 offset:0x0 ; encoding: [0x02,0x23,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[100:101], s[4:7], s0
+// GFX13: s_buffer_load_b64 s[100:101], s[4:7], s0 offset:0x0 ; encoding: [0x02,0x39,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 vcc, s[4:7], s0
+// GFX13: s_buffer_load_b64 vcc, s[4:7], s0 offset:0x0 ; encoding: [0x82,0x3a,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[8:11], s0
+// GFX13: s_buffer_load_b64 s[10:11], s[8:11], s0 offset:0x0 ; encoding: [0x84,0x22,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[96:99], s0
+// GFX13: s_buffer_load_b64 s[10:11], s[96:99], s0 offset:0x0 ; encoding: [0xb0,0x22,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s101
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s101 offset:0x0 ; encoding: [0x82,0x22,0x01,0xf4,0x00,0x00,0x00,0xca]
+
+s_buffer_load_b64 s[10:11], s[4:7], vcc_lo
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], vcc_lo offset:0x0 ; encoding: [0x82,0x22,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b64 s[10:11], s[4:7], vcc_hi
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], vcc_hi offset:0x0 ; encoding: [0x82,0x22,0x01,0xf4,0x00,0x00,0x00,0xd6]
+
+s_buffer_load_b64 s[10:11], s[4:7], m0
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], m0 offset:0x0 ; encoding: [0x82,0x22,0x01,0xf4,0x00,0x00,0x00,0xfa]
+
+s_buffer_load_b64 s[10:11], s[4:7], 0x0
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], 0x0 ; encoding: [0x82,0x22,0x01,0xf4,0x00,0x00,0x00,0xf8]
+
+s_buffer_load_b96 s[20:22], s[4:7], s0
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], s0 offset:0x0 ; encoding: [0x02,0xa5,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b96 s[24:26], s[4:7], s0
+// GFX13: s_buffer_load_b96 s[24:26], s[4:7], s0 offset:0x0 ; encoding: [0x02,0xa6,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b96 s[96:98], s[4:7], s0
+// GFX13: s_buffer_load_b96 s[96:98], s[4:7], s0 offset:0x0 ; encoding: [0x02,0xb8,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b96 s[20:22], s[8:11], s0
+// GFX13: s_buffer_load_b96 s[20:22], s[8:11], s0 offset:0x0 ; encoding: [0x04,0xa5,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b96 s[20:22], s[96:99], s0
+// GFX13: s_buffer_load_b96 s[20:22], s[96:99], s0 offset:0x0 ; encoding: [0x30,0xa5,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b96 s[20:22], s[4:7], s101
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], s101 offset:0x0 ; encoding: [0x02,0xa5,0x01,0xf4,0x00,0x00,0x00,0xca]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 ; encoding: [0x02,0xa5,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_hi
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_hi offset:0x0 ; encoding: [0x02,0xa5,0x01,0xf4,0x00,0x00,0x00,0xd6]
+
+s_buffer_load_b96 s[20:22], s[4:7], m0
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], m0 offset:0x0 ; encoding: [0x02,0xa5,0x01,0xf4,0x00,0x00,0x00,0xfa]
+
+s_buffer_load_b96 s[20:22], s[4:7], 0x0
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], 0x0 ; encoding: [0x02,0xa5,0x01,0xf4,0x00,0x00,0x00,0xf8]
+
+s_buffer_load_b128 s[20:23], s[4:7], s0
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], s0 offset:0x0 ; encoding: [0x02,0x45,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b128 s[24:27], s[4:7], s0
+// GFX13: s_buffer_load_b128 s[24:27], s[4:7], s0 offset:0x0 ; encoding: [0x02,0x46,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b128 s[96:99], s[4:7], s0
+// GFX13: s_buffer_load_b128 s[96:99], s[4:7], s0 offset:0x0 ; encoding: [0x02,0x58,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b128 s[20:23], s[8:11], s0
+// GFX13: s_buffer_load_b128 s[20:23], s[8:11], s0 offset:0x0 ; encoding: [0x04,0x45,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b128 s[20:23], s[96:99], s0
+// GFX13: s_buffer_load_b128 s[20:23], s[96:99], s0 offset:0x0 ; encoding: [0x30,0x45,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b128 s[20:23], s[4:7], s101
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], s101 offset:0x0 ; encoding: [0x02,0x45,0x01,0xf4,0x00,0x00,0x00,0xca]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 ; encoding: [0x02,0x45,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_hi
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_hi offset:0x0 ; encoding: [0x02,0x45,0x01,0xf4,0x00,0x00,0x00,0xd6]
+
+s_buffer_load_b128 s[20:23], s[4:7], m0
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], m0 offset:0x0 ; encoding: [0x02,0x45,0x01,0xf4,0x00,0x00,0x00,0xfa]
+
+s_buffer_load_b128 s[20:23], s[4:7], 0x0
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], 0x0 ; encoding: [0x02,0x45,0x01,0xf4,0x00,0x00,0x00,0xf8]
+
+s_buffer_load_b256 s[20:27], s[4:7], s0
+// GFX13: s_buffer_load_b256 s[20:27], s[4:7], s0 offset:0x0 ; encoding: [0x02,0x65,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[24:31], s[4:7], s0
+// GFX13: s_buffer_load_b256 s[24:31], s[4:7], s0 offset:0x0 ; encoding: [0x02,0x66,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[92:99], s[4:7], s0
+// GFX13: s_buffer_load_b256 s[92:99], s[4:7], s0 offset:0x0 ; encoding: [0x02,0x77,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 ; encoding: [0x04,0x65,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[96:99], s0
+// GFX13: s_buffer_load_b256 s[20:27], s[96:99], s0 offset:0x0 ; encoding: [0x30,0x65,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[4:7], s101
+// GFX13: s_buffer_load_b256 s[20:27], s[4:7], s101 offset:0x0 ; encoding: [0x02,0x65,0x01,0xf4,0x00,0x00,0x00,0xca]
+
+s_buffer_load_b256 s[20:27], s[4:7], vcc_lo
+// GFX13: s_buffer_load_b256 s[20:27], s[4:7], vcc_lo offset:0x0 ; encoding: [0x02,0x65,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b256 s[20:27], s[4:7], vcc_hi
+// GFX13: s_buffer_load_b256 s[20:27], s[4:7], vcc_hi offset:0x0 ; encoding: [0x02,0x65,0x01,0xf4,0x00,0x00,0x00,0xd6]
+
+s_buffer_load_b256 s[20:27], s[4:7], m0
+// GFX13: s_buffer_load_b256 s[20:27], s[4:7], m0 offset:0x0 ; encoding: [0x02,0x65,0x01,0xf4,0x00,0x00,0x00,0xfa]
+
+s_buffer_load_b256 s[20:27], s[4:7], 0x0
+// GFX13: s_buffer_load_b256 s[20:27], s[4:7], 0x0 ; encoding: [0x02,0x65,0x01,0xf4,0x00,0x00,0x00,0xf8]
+
+s_buffer_load_b512 s[20:35], s[4:7], s0
+// GFX13: s_buffer_load_b512 s[20:35], s[4:7], s0 offset:0x0 ; encoding: [0x02,0x85,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[24:39], s[4:7], s0
+// GFX13: s_buffer_load_b512 s[24:39], s[4:7], s0 offset:0x0 ; encoding: [0x02,0x86,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[84:99], s[4:7], s0
+// GFX13: s_buffer_load_b512 s[84:99], s[4:7], s0 offset:0x0 ; encoding: [0x02,0x95,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[8:11], s0
+// GFX13: s_buffer_load_b512 s[20:35], s[8:11], s0 offset:0x0 ; encoding: [0x04,0x85,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 ; encoding: [0x30,0x85,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[4:7], s101
+// GFX13: s_buffer_load_b512 s[20:35], s[4:7], s101 offset:0x0 ; encoding: [0x02,0x85,0x01,0xf4,0x00,0x00,0x00,0xca]
+
+s_buffer_load_b512 s[20:35], s[4:7], vcc_lo
+// GFX13: s_buffer_load_b512 s[20:35], s[4:7], vcc_lo offset:0x0 ; encoding: [0x02,0x85,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b512 s[20:35], s[4:7], vcc_hi
+// GFX13: s_buffer_load_b512 s[20:35], s[4:7], vcc_hi offset:0x0 ; encoding: [0x02,0x85,0x01,0xf4,0x00,0x00,0x00,0xd6]
+
+s_buffer_load_b512 s[20:35], s[4:7], m0
+// GFX13: s_buffer_load_b512 s[20:35], s[4:7], m0 offset:0x0 ; encoding: [0x02,0x85,0x01,0xf4,0x00,0x00,0x00,0xfa]
+
+s_buffer_load_b512 s[20:35], s[4:7], 0x0
+// GFX13: s_buffer_load_b512 s[20:35], s[4:7], 0x0 ; encoding: [0x02,0x85,0x01,0xf4,0x00,0x00,0x00,0xf8]
+
+s_dcache_inv
+// GFX13: s_dcache_inv ; encoding: [0x00,0x00,0x04,0xf4,0x00,0x00,0x00,0x00]
+
+s_atc_probe 7, s[4:5], s2
+// GFX13: s_atc_probe 7, s[4:5], s2 offset:0x0 ; encoding: [0xc2,0xc1,0x04,0xf4,0x00,0x00,0x00,0x04]
+
+s_atc_probe 7, s[4:5], 0x64
+// GFX13: s_atc_probe 7, s[4:5], 0x64 ; encoding: [0xc2,0xc1,0x04,0xf4,0x64,0x00,0x00,0xf8]
+
+s_atc_probe 7, s[4:5], s9 offset:0x64
+// GFX13: s_atc_probe 7, s[4:5], s9 offset:0x64 ; encoding: [0xc2,0xc1,0x04,0xf4,0x64,0x00,0x00,0x12]
+
+s_atc_probe_buffer 7, s[8:11], s2
+// GFX13: s_atc_probe_buffer 7, s[8:11], s2 offset:0x0 ; encoding: [0xc4,0xe1,0x04,0xf4,0x00,0x00,0x00,0x04]
+
+s_atc_probe_buffer 7, s[8:11], 0x64
+// GFX13: s_atc_probe_buffer 7, s[8:11], 0x64 ; encoding: [0xc4,0xe1,0x04,0xf4,0x64,0x00,0x00,0xf8]
+
+s_atc_probe_buffer 7, s[8:11], s9 offset:0x64
+// GFX13: s_atc_probe_buffer 7, s[8:11], s9 offset:0x64 ; encoding: [0xc4,0xe1,0x04,0xf4,0x64,0x00,0x00,0x12]
+
+s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 ; encoding: [0x42,0x01,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x42,0x01,0x80,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x42,0x01,0x00,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x42,0x01,0x80,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[4:5], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 ; encoding: [0x42,0x01,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[4:5], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x42,0x01,0x20,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[4:5], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x42,0x01,0x40,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[4:5], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x42,0x01,0x60,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x42,0x01,0x20,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x42,0x01,0xa0,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_load_b32 s5, s[4:5], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x42,0x01,0x60,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 ; encoding: [0x81,0x22,0x00,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x81,0x22,0x80,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x81,0x22,0x00,0xf5,0x00,0x00,0x00,0xfa]
+
+s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x81,0x22,0x80,0xf5,0x00,0x00,0x00,0xfa]
+
+s_load_b64 s[10:11], s[2:3], m0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 ; encoding: [0x81,0x22,0x00,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b64 s[10:11], s[2:3], m0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 scope:SCOPE_SE ; encoding: [0x81,0x22,0x20,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b64 s[10:11], s[2:3], m0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x81,0x22,0x40,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b64 s[10:11], s[2:3], m0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x81,0x22,0x60,0xf4,0x00,0x00,0x00,0xfa]
+
+s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x81,0x22,0x20,0xf5,0x00,0x00,0x00,0xfa]
+
+s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x81,0x22,0xa0,0xf5,0x00,0x00,0x00,0xfa]
+
+s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_load_b64 s[10:11], s[2:3], m0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x81,0x22,0x60,0xf5,0x00,0x00,0x00,0xfa]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_RT
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 ; encoding: [0x01,0xc5,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_NT
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_NT ; encoding: [0x01,0xc5,0x81,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT ; encoding: [0x01,0xc5,0x01,0xf5,0x00,0x00,0x00,0xd4]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_LU
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_LU ; encoding: [0x01,0xc5,0x81,0xf5,0x00,0x00,0x00,0xd4]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 scope:SCOPE_CU
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 ; encoding: [0x01,0xc5,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 scope:SCOPE_SE
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 scope:SCOPE_SE ; encoding: [0x01,0xc5,0x21,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 scope:SCOPE_DEV
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 scope:SCOPE_DEV ; encoding: [0x01,0xc5,0x41,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 scope:SCOPE_SYS
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 scope:SCOPE_SYS ; encoding: [0x01,0xc5,0x61,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x01,0xc5,0x21,0xf5,0x00,0x00,0x00,0xd4]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x01,0xc5,0xa1,0xf5,0x00,0x00,0x00,0xd4]
+
+s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_load_b96 s[20:22], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x01,0xc5,0x61,0xf5,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_RT
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 ; encoding: [0x01,0x45,0x00,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_NT
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_NT ; encoding: [0x01,0x45,0x80,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT ; encoding: [0x01,0x45,0x00,0xf5,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_LU
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_LU ; encoding: [0x01,0x45,0x80,0xf5,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 scope:SCOPE_CU
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 ; encoding: [0x01,0x45,0x00,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 scope:SCOPE_SE
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 scope:SCOPE_SE ; encoding: [0x01,0x45,0x20,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 scope:SCOPE_DEV
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 scope:SCOPE_DEV ; encoding: [0x01,0x45,0x40,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 scope:SCOPE_SYS
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 scope:SCOPE_SYS ; encoding: [0x01,0x45,0x60,0xf4,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x01,0x45,0x20,0xf5,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x01,0x45,0xa0,0xf5,0x00,0x00,0x00,0xd4]
+
+s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_load_b128 s[20:23], s[2:3], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x01,0x45,0x60,0xf5,0x00,0x00,0x00,0xd4]
+
+s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x77,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x01,0x77,0x80,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x01,0x77,0x00,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x01,0x77,0x80,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[92:99], s[2:3], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 ; encoding: [0x01,0x77,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[92:99], s[2:3], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x01,0x77,0x20,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[92:99], s[2:3], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x01,0x77,0x40,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[92:99], s[2:3], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x01,0x77,0x60,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x01,0x77,0x20,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x01,0x77,0xa0,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_load_b256 s[92:99], s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x01,0x77,0x60,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 ; encoding: [0x02,0x85,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x02,0x85,0x80,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x02,0x85,0x00,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x02,0x85,0x80,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 ; encoding: [0x02,0x85,0x00,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x02,0x85,0x20,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x02,0x85,0x40,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x02,0x85,0x60,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x02,0x85,0x20,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x02,0x85,0xa0,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_load_b512 s[20:35], s[4:5], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x02,0x85,0x60,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x01,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x41,0x01,0x86,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x41,0x01,0x06,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x41,0x01,0x86,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x01,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x41,0x01,0x26,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x41,0x01,0x46,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x41,0x01,0x66,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x41,0x01,0x26,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x41,0x01,0xa6,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_load_i8 s5, s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x41,0x01,0x66,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x39,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x41,0x39,0x86,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x41,0x39,0x06,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x41,0x39,0x86,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 ; encoding: [0x41,0x39,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x41,0x39,0x26,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x41,0x39,0x46,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x41,0x39,0x66,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x41,0x39,0x26,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x41,0x39,0xa6,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_load_u8 s101, s[2:3], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x41,0x39,0x66,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 ; encoding: [0x72,0x41,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x72,0x41,0x86,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x72,0x41,0x06,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x72,0x41,0x86,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 ; encoding: [0x72,0x41,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x72,0x41,0x26,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x72,0x41,0x46,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x72,0x41,0x66,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x72,0x41,0x26,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x72,0x41,0xa6,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_load_i16 s5, s[100:101], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x72,0x41,0x66,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 ; encoding: [0x75,0x61,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x75,0x61,0x86,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x75,0x61,0x06,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x75,0x61,0x86,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 ; encoding: [0x75,0x61,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x75,0x61,0x26,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x75,0x61,0x46,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x75,0x61,0x66,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x75,0x61,0x26,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x75,0x61,0xa6,0xf5,0x00,0x00,0x00,0x00]
+
+s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_load_u16 s5, vcc, s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x75,0x61,0x66,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 ; encoding: [0x70,0x01,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x70,0x01,0x81,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x70,0x01,0x01,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x70,0x01,0x81,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 ; encoding: [0x70,0x01,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x70,0x01,0x21,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x70,0x01,0x41,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x70,0x01,0x61,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x70,0x01,0x21,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x70,0x01,0xa1,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_buffer_load_b32 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x70,0x01,0x61,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 ; encoding: [0x82,0x22,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x82,0x22,0x81,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x82,0x22,0x01,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x82,0x22,0x81,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 ; encoding: [0x82,0x22,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x82,0x22,0x21,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x82,0x22,0x41,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x82,0x22,0x61,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x82,0x22,0x21,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x82,0x22,0xa1,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_buffer_load_b64 s[10:11], s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x82,0x22,0x61,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_RT
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 ; encoding: [0x02,0xa5,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_NT
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_NT ; encoding: [0x02,0xa5,0x81,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT ; encoding: [0x02,0xa5,0x01,0xf5,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_LU
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_LU ; encoding: [0x02,0xa5,0x81,0xf5,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 scope:SCOPE_CU
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 ; encoding: [0x02,0xa5,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 scope:SCOPE_SE
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 scope:SCOPE_SE ; encoding: [0x02,0xa5,0x21,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 scope:SCOPE_DEV
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 scope:SCOPE_DEV ; encoding: [0x02,0xa5,0x41,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 scope:SCOPE_SYS
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 scope:SCOPE_SYS ; encoding: [0x02,0xa5,0x61,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x02,0xa5,0x21,0xf5,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x02,0xa5,0xa1,0xf5,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_buffer_load_b96 s[20:22], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x02,0xa5,0x61,0xf5,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_RT
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 ; encoding: [0x02,0x45,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_NT
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_NT ; encoding: [0x02,0x45,0x81,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT ; encoding: [0x02,0x45,0x01,0xf5,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_LU
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_LU ; encoding: [0x02,0x45,0x81,0xf5,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 scope:SCOPE_CU
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 ; encoding: [0x02,0x45,0x01,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 scope:SCOPE_SE
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 scope:SCOPE_SE ; encoding: [0x02,0x45,0x21,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 scope:SCOPE_DEV
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 scope:SCOPE_DEV ; encoding: [0x02,0x45,0x41,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 scope:SCOPE_SYS
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 scope:SCOPE_SYS ; encoding: [0x02,0x45,0x61,0xf4,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x02,0x45,0x21,0xf5,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x02,0x45,0xa1,0xf5,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_buffer_load_b128 s[20:23], s[4:7], vcc_lo offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x02,0x45,0x61,0xf5,0x00,0x00,0x00,0xd4]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 ; encoding: [0x04,0x65,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x04,0x65,0x81,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x04,0x65,0x01,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x04,0x65,0x81,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 ; encoding: [0x04,0x65,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x04,0x65,0x21,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x04,0x65,0x41,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x04,0x65,0x61,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x04,0x65,0x21,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x04,0x65,0xa1,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_buffer_load_b256 s[20:27], s[8:11], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x04,0x65,0x61,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 ; encoding: [0x30,0x85,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x30,0x85,0x81,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x30,0x85,0x01,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x30,0x85,0x81,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 ; encoding: [0x30,0x85,0x01,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x30,0x85,0x21,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x30,0x85,0x41,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x30,0x85,0x61,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x30,0x85,0x21,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x30,0x85,0xa1,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_buffer_load_b512 s[20:35], s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x30,0x85,0x61,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 ; encoding: [0x82,0x9a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x82,0x9a,0x86,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x82,0x9a,0x06,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x82,0x9a,0x86,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 ; encoding: [0x82,0x9a,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x82,0x9a,0x26,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x82,0x9a,0x46,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x82,0x9a,0x66,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x82,0x9a,0x26,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x82,0x9a,0xa6,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_buffer_load_i8 vcc_lo, s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x82,0x9a,0x66,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 ; encoding: [0x44,0xa1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x44,0xa1,0x86,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x44,0xa1,0x06,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x44,0xa1,0x86,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 ; encoding: [0x44,0xa1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x44,0xa1,0x26,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x44,0xa1,0x46,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x44,0xa1,0x66,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x44,0xa1,0x26,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x44,0xa1,0xa6,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_buffer_load_u8 s5, s[8:11], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x44,0xa1,0x66,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 ; encoding: [0xc2,0xda,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0xc2,0xda,0x86,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0xc2,0xda,0x06,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0xc2,0xda,0x86,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 ; encoding: [0xc2,0xda,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0xc2,0xda,0x26,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0xc2,0xda,0x46,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0xc2,0xda,0x66,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0xc2,0xda,0x26,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0xc2,0xda,0xa6,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_buffer_load_i16 vcc_hi, s[4:7], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0xc2,0xda,0x66,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_RT
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 ; encoding: [0x70,0xe1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_NT
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_NT ; encoding: [0x70,0xe1,0x86,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT ; encoding: [0x70,0xe1,0x06,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_LU
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_LU ; encoding: [0x70,0xe1,0x86,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 scope:SCOPE_CU
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 ; encoding: [0x70,0xe1,0x06,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 scope:SCOPE_SE
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 scope:SCOPE_SE ; encoding: [0x70,0xe1,0x26,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 scope:SCOPE_DEV
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 scope:SCOPE_DEV ; encoding: [0x70,0xe1,0x46,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 scope:SCOPE_SYS
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 scope:SCOPE_SYS ; encoding: [0x70,0xe1,0x66,0xf4,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SE ; encoding: [0x70,0xe1,0x26,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_LU scope:SCOPE_SE ; encoding: [0x70,0xe1,0xa6,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS
+// GFX13: s_buffer_load_u16 s5, s[96:99], s0 offset:0x0 th:TH_LOAD_HT scope:SCOPE_SYS ; encoding: [0x70,0xe1,0x66,0xf5,0x00,0x00,0x00,0x00]
+
+s_buffer_load_i8 s5, s[4:7], s0 offset:0x0 nv
+// GFX13: s_buffer_load_i8 s5, s[4:7], s0 offset:0x0 nv ; encoding: [0x42,0x81,0x16,0xf4,0x00,0x00,0x00,0x00]
+
+s_load_b32 s4, s[2:3], 0xa nv
+// GFX13: s_load_b32 s4, s[2:3], 0xa nv ; encoding: [0x01,0x01,0x10,0xf4,0x0a,0x00,0x00,0xf8]
+
+s_load_b32 s4, s[2:3], 0xa scale_offset
+// GFX13: s_load_b32 s4, s[2:3], 0xa scale_offset ; encoding: [0x01,0x01,0x00,0xf4,0x0a,0x00,0x00,0xf9]
+
+s_load_b32 s4, s[2:3], 0xa scale_offset nv
+// GFX13: s_load_b32 s4, s[2:3], 0xa scale_offset nv ; encoding: [0x01,0x01,0x10,0xf4,0x0a,0x00,0x00,0xf9]
+
+s_load_b32 s4, s[2:3], m0 offset:0x20 scale_offset
+// GFX13: s_load_b32 s4, s[2:3], m0 offset:0x20 scale_offset ; encoding: [0x01,0x01,0x00,0xf4,0x20,0x00,0x00,0xfb]
+
+s_load_b32 s4, s[2:3], s5 offset:0x20 scale_offset
+// GFX13: s_load_b32 s4, s[2:3], s5 offset:0x20 scale_offset ; encoding: [0x01,0x01,0x00,0xf4,0x20,0x00,0x00,0x0b]
+//// NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
+// GFX13-ASM: {{.*}}
+// GFX13-DIS: {{.*}}
>From 0792fce75c41adffeb28e93e506fa5b9bd8c3532 Mon Sep 17 00:00:00 2001
From: Mariusz Sikora <mariusz.sikora at amd.com>
Date: Fri, 23 Jan 2026 07:31:10 -0500
Subject: [PATCH 2/2] Use GCNSubtarget in CodeGen
---
llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp | 10 +++++-----
llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp | 2 +-
llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp | 2 +-
llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp | 4 ++--
.../AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp | 2 +-
llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 2 +-
llvm/lib/Target/AMDGPU/SIInstrInfo.cpp | 2 +-
7 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
index 3f69ff3325123..7d2df427ddd60 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp
@@ -660,8 +660,8 @@ AMDGPUAsmPrinter::getAmdhsaKernelDescriptor(const MachineFunction &MF,
(void)PGRM_Rsrc3;
(void)EvaluatableRsrc3;
assert(STM.getGeneration() >= AMDGPUSubtarget::GFX10 ||
- STM.hasGFX90AInsts() || AMDGPU::isGFX1250Plus(STM) ||
- !EvaluatableRsrc3 || static_cast<uint64_t>(PGRM_Rsrc3) == 0);
+ STM.hasGFX90AInsts() || STM.hasGFX1250Insts() || !EvaluatableRsrc3 ||
+ static_cast<uint64_t>(PGRM_Rsrc3) == 0);
KernelDescriptor.compute_pgm_rsrc3 = CurrentProgramInfo.ComputePGMRSrc3;
KernelDescriptor.kernarg_preload = MCConstantExpr::create(
@@ -831,7 +831,7 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
" AccumOffset: " + getMCExprStr(AdjustedAccum), false);
}
- if (AMDGPU::isGFX1250Plus(STM))
+ if (STM.hasGFX1250Insts())
OutStreamer->emitRawComment(
" NamedBarCnt: " + getMCExprStr(CurrentProgramInfo.NamedBarCnt),
false);
@@ -867,7 +867,7 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
[[maybe_unused]] int64_t PGMRSrc3;
assert(STM.getGeneration() >= AMDGPUSubtarget::GFX10 ||
- STM.hasGFX90AInsts() || AMDGPU::isGFX1250Plus(STM) ||
+ STM.hasGFX90AInsts() || STM.hasGFX1250Insts() ||
(CurrentProgramInfo.ComputePGMRSrc3->evaluateAsAbsolute(PGMRSrc3) &&
static_cast<uint64_t>(PGMRSrc3) == 0));
if (STM.hasGFX90AInsts()) {
@@ -1288,7 +1288,7 @@ void AMDGPUAsmPrinter::getSIProgramInfo(SIProgramInfo &ProgInfo,
amdhsa::COMPUTE_PGM_RSRC3_GFX90A_TG_SPLIT_SHIFT);
}
- if (AMDGPU::isGFX1250Plus(STM))
+ if (STM.hasGFX1250Insts())
ProgInfo.ComputePGMRSrc3 =
SetBits(ProgInfo.ComputePGMRSrc3, ProgInfo.NamedBarCnt,
amdhsa::COMPUTE_PGM_RSRC3_GFX125_NAMED_BAR_CNT,
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp b/llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp
index 4aac5871cb1c2..7c84edf2a60bc 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUInsertDelayAlu.cpp
@@ -71,7 +71,7 @@ class AMDGPUInsertDelayAlu {
if (SIInstrInfo::isTRANS(MI))
return TRANS;
// WMMA XDL ops are treated the same as TRANS.
- if (AMDGPU::isGFX1250Plus(*ST) && SII->isXDLWMMA(MI))
+ if (ST->hasGFX1250Insts() && SII->isXDLWMMA(MI))
return TRANS;
if (SIInstrInfo::isVALU(MI))
return VALU;
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
index b1881995be118..559fb041c424d 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
@@ -6153,7 +6153,7 @@ AMDGPULegalizerInfo::splitBufferOffsets(MachineIRBuilder &B,
// On GFX1250+, voffset and immoffset are zero-extended from 32 bits before
// being added, so we can only safely match a 32-bit addition with no unsigned
// overflow.
- bool CheckNUW = AMDGPU::isGFX1250Plus(ST);
+ bool CheckNUW = ST.hasGFX1250Insts();
std::tie(BaseReg, ImmOffset) = AMDGPU::getBaseWithConstantOffset(
MRI, OrigOffset, /*KnownBits=*/nullptr, CheckNUW);
diff --git a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
index 0e3beee1b3419..d504d8618b90d 100644
--- a/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+++ b/llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
@@ -1932,7 +1932,7 @@ bool GCNHazardRecognizer::fixVALUTransUseHazard(MachineInstr *MI) {
}
bool GCNHazardRecognizer::fixVALUTransCoexecutionHazards(MachineInstr *MI) {
- if (!AMDGPU::isGFX1250Plus(ST) || // Coexecution disabled.
+ if (!ST.hasGFX1250Insts() || // Coexecution disabled.
!SIInstrInfo::isVALU(*MI) || SIInstrInfo::isTRANS(*MI))
return false;
@@ -2077,7 +2077,7 @@ static bool IsWMMAHazardInstInCategory(const MachineInstr &MI,
}
int GCNHazardRecognizer::checkWMMACoexecutionHazards(MachineInstr *MI) {
- if (!AMDGPU::isGFX1250Plus(ST))
+ if (!ST.hasGFX1250Insts())
return 0;
const SIInstrInfo *TII = ST.getInstrInfo();
diff --git a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
index 1ac7182917a12..f86b42bdc53cf 100644
--- a/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
+++ b/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUTargetStreamer.cpp
@@ -515,7 +515,7 @@ void AMDGPUTargetAsmStreamer::EmitAmdhsaKernelDescriptor(
OS << '\n';
}
- if (AMDGPU::isGFX1250Plus(STI))
+ if (isGFX1250Plus(STI))
PrintField(KD.compute_pgm_rsrc3,
amdhsa::COMPUTE_PGM_RSRC3_GFX125_NAMED_BAR_CNT_SHIFT,
amdhsa::COMPUTE_PGM_RSRC3_GFX125_NAMED_BAR_CNT,
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
index a94c29e76c088..d982a94296f54 100644
--- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -11740,7 +11740,7 @@ SITargetLowering::splitBufferOffsets(SDValue Offset, SelectionDAG &DAG) const {
// On GFX1250+, voffset and immoffset are zero-extended from 32 bits before
// being added, so we can only safely match a 32-bit addition with no
// unsigned overflow.
- bool CheckNUW = AMDGPU::isGFX1250Plus(*Subtarget);
+ bool CheckNUW = Subtarget->hasGFX1250Insts();
if (!CheckNUW || isNoUnsignedWrap(N0)) {
C1 = cast<ConstantSDNode>(N0.getOperand(1));
N0 = N0.getOperand(0);
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
index 102402bccf781..e886ed494ff79 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
@@ -11204,7 +11204,7 @@ bool SIInstrInfo::isXDLWMMA(const MachineInstr &MI) const {
if (!isWMMA(MI) && !isSWMMAC(MI))
return false;
- if (AMDGPU::isGFX1250Plus(ST))
+ if (ST.hasGFX1250Insts())
return AMDGPU::getWMMAIsXDL(MI.getOpcode());
return true;
More information about the llvm-commits
mailing list