@@ -1620,6 +1620,10 @@ class AMDGPUAsmParser : public MCTargetAsmParser {
16201620 return getFeatureBits ()[AMDGPU::FeaturePartialNSAEncoding];
16211621 }
16221622
1623+ bool hasGloballyAddressableScratch () const {
1624+ return getFeatureBits ()[AMDGPU::FeatureGloballyAddressableScratch];
1625+ }
1626+
16231627 unsigned getNSAMaxSize (bool HasSampler = false ) const {
16241628 return AMDGPU::getNSAMaxSize (getSTI (), HasSampler);
16251629 }
@@ -2759,46 +2763,48 @@ static int getRegClass(RegisterKind Is, unsigned RegWidth) {
27592763
27602764static MCRegister getSpecialRegForName (StringRef RegName) {
27612765 return StringSwitch<unsigned >(RegName)
2762- .Case (" exec" , AMDGPU::EXEC)
2763- .Case (" vcc" , AMDGPU::VCC)
2764- .Case (" flat_scratch" , AMDGPU::FLAT_SCR)
2765- .Case (" xnack_mask" , AMDGPU::XNACK_MASK)
2766- .Case (" shared_base" , AMDGPU::SRC_SHARED_BASE)
2767- .Case (" src_shared_base" , AMDGPU::SRC_SHARED_BASE)
2768- .Case (" shared_limit" , AMDGPU::SRC_SHARED_LIMIT)
2769- .Case (" src_shared_limit" , AMDGPU::SRC_SHARED_LIMIT)
2770- .Case (" private_base" , AMDGPU::SRC_PRIVATE_BASE)
2771- .Case (" src_private_base" , AMDGPU::SRC_PRIVATE_BASE)
2772- .Case (" private_limit" , AMDGPU::SRC_PRIVATE_LIMIT)
2773- .Case (" src_private_limit" , AMDGPU::SRC_PRIVATE_LIMIT)
2774- .Case (" pops_exiting_wave_id" , AMDGPU::SRC_POPS_EXITING_WAVE_ID)
2775- .Case (" src_pops_exiting_wave_id" , AMDGPU::SRC_POPS_EXITING_WAVE_ID)
2776- .Case (" lds_direct" , AMDGPU::LDS_DIRECT)
2777- .Case (" src_lds_direct" , AMDGPU::LDS_DIRECT)
2778- .Case (" m0" , AMDGPU::M0)
2779- .Case (" vccz" , AMDGPU::SRC_VCCZ)
2780- .Case (" src_vccz" , AMDGPU::SRC_VCCZ)
2781- .Case (" execz" , AMDGPU::SRC_EXECZ)
2782- .Case (" src_execz" , AMDGPU::SRC_EXECZ)
2783- .Case (" scc" , AMDGPU::SRC_SCC)
2784- .Case (" src_scc" , AMDGPU::SRC_SCC)
2785- .Case (" tba" , AMDGPU::TBA)
2786- .Case (" tma" , AMDGPU::TMA)
2787- .Case (" flat_scratch_lo" , AMDGPU::FLAT_SCR_LO)
2788- .Case (" flat_scratch_hi" , AMDGPU::FLAT_SCR_HI)
2789- .Case (" xnack_mask_lo" , AMDGPU::XNACK_MASK_LO)
2790- .Case (" xnack_mask_hi" , AMDGPU::XNACK_MASK_HI)
2791- .Case (" vcc_lo" , AMDGPU::VCC_LO)
2792- .Case (" vcc_hi" , AMDGPU::VCC_HI)
2793- .Case (" exec_lo" , AMDGPU::EXEC_LO)
2794- .Case (" exec_hi" , AMDGPU::EXEC_HI)
2795- .Case (" tma_lo" , AMDGPU::TMA_LO)
2796- .Case (" tma_hi" , AMDGPU::TMA_HI)
2797- .Case (" tba_lo" , AMDGPU::TBA_LO)
2798- .Case (" tba_hi" , AMDGPU::TBA_HI)
2799- .Case (" pc" , AMDGPU::PC_REG)
2800- .Case (" null" , AMDGPU::SGPR_NULL)
2801- .Default (AMDGPU::NoRegister);
2766+ .Case (" exec" , AMDGPU::EXEC)
2767+ .Case (" vcc" , AMDGPU::VCC)
2768+ .Case (" flat_scratch" , AMDGPU::FLAT_SCR)
2769+ .Case (" xnack_mask" , AMDGPU::XNACK_MASK)
2770+ .Case (" shared_base" , AMDGPU::SRC_SHARED_BASE)
2771+ .Case (" src_shared_base" , AMDGPU::SRC_SHARED_BASE)
2772+ .Case (" shared_limit" , AMDGPU::SRC_SHARED_LIMIT)
2773+ .Case (" src_shared_limit" , AMDGPU::SRC_SHARED_LIMIT)
2774+ .Case (" private_base" , AMDGPU::SRC_PRIVATE_BASE)
2775+ .Case (" src_private_base" , AMDGPU::SRC_PRIVATE_BASE)
2776+ .Case (" private_limit" , AMDGPU::SRC_PRIVATE_LIMIT)
2777+ .Case (" src_private_limit" , AMDGPU::SRC_PRIVATE_LIMIT)
2778+ .Case (" src_flat_scratch_base_lo" , AMDGPU::SRC_FLAT_SCRATCH_BASE_LO)
2779+ .Case (" src_flat_scratch_base_hi" , AMDGPU::SRC_FLAT_SCRATCH_BASE_HI)
2780+ .Case (" pops_exiting_wave_id" , AMDGPU::SRC_POPS_EXITING_WAVE_ID)
2781+ .Case (" src_pops_exiting_wave_id" , AMDGPU::SRC_POPS_EXITING_WAVE_ID)
2782+ .Case (" lds_direct" , AMDGPU::LDS_DIRECT)
2783+ .Case (" src_lds_direct" , AMDGPU::LDS_DIRECT)
2784+ .Case (" m0" , AMDGPU::M0)
2785+ .Case (" vccz" , AMDGPU::SRC_VCCZ)
2786+ .Case (" src_vccz" , AMDGPU::SRC_VCCZ)
2787+ .Case (" execz" , AMDGPU::SRC_EXECZ)
2788+ .Case (" src_execz" , AMDGPU::SRC_EXECZ)
2789+ .Case (" scc" , AMDGPU::SRC_SCC)
2790+ .Case (" src_scc" , AMDGPU::SRC_SCC)
2791+ .Case (" tba" , AMDGPU::TBA)
2792+ .Case (" tma" , AMDGPU::TMA)
2793+ .Case (" flat_scratch_lo" , AMDGPU::FLAT_SCR_LO)
2794+ .Case (" flat_scratch_hi" , AMDGPU::FLAT_SCR_HI)
2795+ .Case (" xnack_mask_lo" , AMDGPU::XNACK_MASK_LO)
2796+ .Case (" xnack_mask_hi" , AMDGPU::XNACK_MASK_HI)
2797+ .Case (" vcc_lo" , AMDGPU::VCC_LO)
2798+ .Case (" vcc_hi" , AMDGPU::VCC_HI)
2799+ .Case (" exec_lo" , AMDGPU::EXEC_LO)
2800+ .Case (" exec_hi" , AMDGPU::EXEC_HI)
2801+ .Case (" tma_lo" , AMDGPU::TMA_LO)
2802+ .Case (" tma_hi" , AMDGPU::TMA_HI)
2803+ .Case (" tba_lo" , AMDGPU::TBA_LO)
2804+ .Case (" tba_hi" , AMDGPU::TBA_HI)
2805+ .Case (" pc" , AMDGPU::PC_REG)
2806+ .Case (" null" , AMDGPU::SGPR_NULL)
2807+ .Default (AMDGPU::NoRegister);
28022808}
28032809
28042810bool AMDGPUAsmParser::ParseRegister (MCRegister &RegNo, SMLoc &StartLoc,
@@ -6744,6 +6750,9 @@ bool AMDGPUAsmParser::subtargetHasRegister(const MCRegisterInfo &MRI,
67446750 case SRC_PRIVATE_LIMIT_LO:
67456751 case SRC_PRIVATE_LIMIT:
67466752 return isGFX9Plus ();
6753+ case SRC_FLAT_SCRATCH_BASE_LO:
6754+ case SRC_FLAT_SCRATCH_BASE_HI:
6755+ return hasGloballyAddressableScratch ();
67476756 case SRC_POPS_EXITING_WAVE_ID:
67486757 return isGFX9Plus () && !isGFX11Plus ();
67496758 case TBA:
0 commit comments