Engenheiros da AMD começaram a enviar patches para o compilador LLVM que habilitam o alvo gfx13 no backend AMDGPU. Na prática, isso é a primeira “assinatura” pública de uma nova geração de ISA no ecossistema open source, preparando o toolchain (compilador, assembler e disassembler) para GPUs futuras, antes mesmo de qualquer anúncio comercial.
Destaques
- Nova flag FeatureGFX13 adicionada ao backend AMDGPU no LLVM.
- Conjunto de recursos inicial baseado em
gfx12egfx1250, com um “gancho” explícito para instruções adicionais viagfx13-insts. - Nova codificação de instruções SMEM para GFX13, com namespace de decode dedicado (
GFX13). - Ajustes em predicados e rotas de compatibilidade que separam melhor
gfx1250degfx13(por exemplo,isGFX1250PlusehasGFX1250Insts()).
O que mudou no LLVM e por que isso importa
O commit 3c0f504 (“[AMDGPU] Add FeatureGFX13 and SMEM encoding for gfx13”) foi assinado por Mariusz Sikora (AMD) e coassinado por Jay Foad (AMD). Ele não “liga” uma GPU específica para usuários finais hoje, mas estabelece a base para que o ecossistema consiga compilar e entender código direcionado à geração GFX13 quando ela começar a aparecer em branches de driver, Mesa e toolchains.
Na prática, esse tipo de patch costuma chegar cedo por um motivo simples: sem suporte no compilador, o resto da pilha open source fica travado, porque não há como gerar ISA de forma confiável para testes e bring-up.
AMDGPU.td: nasce a FeatureGFX13 e o “DNA” herdado de gfx12
O coração do patch está em llvm/lib/Target/AMDGPU/AMDGPU.td:
- Surge
GFX13Insts(gfx13-insts), descrita como “Additional instructions for GFX13+”. Essa peça é importante porque separa “geração” de “instruções extras” e permite evoluir o conjunto sem quebrar o que já existe. - Entra
FeatureGFX13como nova geração ("gfx13"), com uma lista longa de recursos que, por enquanto, herda muita coisa de GFX12 e adiciona a nova chaveFeatureGFX13Insts. - É criada
FeatureISAVersion13, um “pacote” de capacidades que define o perfil da ISA para GFX13, incluindo itens como literais de 64 bits, ajustes de LDS, novos recursos de atômicos e extensões diversas.
O próprio texto do commit já dá o tom: “For now list of features is based on gfx12 and gfx1250”. Isso sugere um caminho evolutivo, com GFX13 partindo de uma base muito próxima de GFX12 e incorporando blocos do que hoje aparece em gfx1250.
SMInstructions.td: nova codificação SMEM para GFX13
O segundo bloco mais relevante aparece em llvm/lib/Target/AMDGPU/SMInstructions.td. Aqui o patch cria uma família dedicada para instruções SMEM de GFX13:
- Novo
SMEM_Real_gfx13comSIEncodingFamily.GFX13,AssemblerPredicate = isGFX13PluseDecoderNamespace = "GFX13". - Definições de loads
S_LOAD_*eS_BUFFER_LOAD_*específicas (incluindo variantes como B96 e B512), além de prefetch e probe. - Ajustes no mapeamento de bits de
cpolpara campos como non-volatile, scope, throttling (apenas bits baixos) e scale offset.
Traduzindo: o toolchain passa a reconhecer e codificar instruções SMEM no formato esperado para GFX13, o que é pré-requisito para montar, desmontar e validar binários voltados a essa geração.
Parser, disassembler e “plumbing”: GFX13 vira cidadão de primeira classe
Além dos dois arquivos centrais, o patch encosta em várias peças de infraestrutura para que gfx13 funcione de ponta a ponta:
AMDGPUSubtarget.hganha a nova enumeração de geração GFX13.- O assembler parser passa a expor
isGFX13()eisGFX13Plus(), e vários checks que antes eram “sógfx1250” viram “gfx1250+”, abrindo espaço para GFX13 sem regressões. - O disassembler adiciona caminho de decode para GFX13 (com
DecoderTableGFX1364) e novos helpersisGFX13*. - Em
AMDGPUBaseInfo,isGFX12Plus()passa a incluir GFX13, eisGFX1250()é “cortado” para não colidir com GFX13; ao mesmo tempo surgeisGFX1250Plus()como distinção mais útil para regras que valem a partir degfx1250em diante. GCNProcessors.tdadicionagfx1310apontando paraFeatureISAVersion13.- Há testes novos/ajustados, como
gfx13_smem.s, além de updates em checks envolvendo-mcpu=gfx1310.
Esses detalhes são o tipo de mudança que evita um “suporte pela metade”: não basta declarar gfx13; é preciso garantir que o assembler, o disassembler, os predicados e a seleção de encoding saibam onde GFX13 se encaixa.
ANÁLISE SEMPREUPDATE: o padrão se repete. A AMD costuma empurrar a habilitação no LLVM bem antes do hardware chegar ao varejo. Isso reduz o risco de estreia “no susto” no Linux, porque o ecossistema consegue testar compilação, encoding e decodificação com antecedência, além de preparar o terreno para Mesa e demais componentes amarrarem o suporte de forma incremental.
O impacto para quem usa Linux
No curto prazo, é um patch voltado a desenvolvedores e mantenedores do toolchain. No médio prazo, ele é o tipo de alicerce que:
- facilita o bring-up de suporte em drivers e componentes de espaço de usuário,
- evita que a primeira geração de usuários dependa de branches privados por falta de ISA no compilador,
- melhora a previsibilidade do suporte no lançamento, especialmente para quem acompanha o ecossistema Mesa e stacks que integram LLVM em partes do pipeline.
Em outras palavras: quando o GFX13 começar a aparecer fora do repositório do LLVM, essa base já estará pronta para ser consumida.
