AMD inicia suporte à arquitetura GFX13 (pós-RDNA) no LLVM

FeatureGFX13 e nova codificação SMEM chegam ao backend AMDGPU do LLVM. Entenda por que isso sinaliza suporte antecipado a GPUs futuras no Linux.

Por
Emanuel Negromonte
Emanuel Negromonte é Jornalista, Mestre em Tecnologia da Informação e atualmente cursa a segunda graduação em Engenharia de Software. Com 14 anos de experiência escrevendo sobre...
7 min

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 gfx12 e gfx1250, com um “gancho” explícito para instruções adicionais via gfx13-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 gfx1250 de gfx13 (por exemplo, isGFX1250Plus e hasGFX1250Insts()).

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 FeatureGFX13 como nova geração ("gfx13"), com uma lista longa de recursos que, por enquanto, herda muita coisa de GFX12 e adiciona a nova chave FeatureGFX13Insts.
  • É 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_gfx13 com SIEncodingFamily.GFX13, AssemblerPredicate = isGFX13Plus e DecoderNamespace = "GFX13".
  • Definições de loads S_LOAD_* e S_BUFFER_LOAD_* específicas (incluindo variantes como B96 e B512), além de prefetch e probe.
  • Ajustes no mapeamento de bits de cpol para 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.h ganha a nova enumeração de geração GFX13.
  • O assembler parser passa a expor isGFX13() e isGFX13Plus(), 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 helpers isGFX13*.
  • Em AMDGPUBaseInfo, isGFX12Plus() passa a incluir GFX13, e isGFX1250() é “cortado” para não colidir com GFX13; ao mesmo tempo surge isGFX1250Plus() como distinção mais útil para regras que valem a partir de gfx1250 em diante.
  • GCNProcessors.td adiciona gfx1310 apontando para FeatureISAVersion13.
  • 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.

FAQ

Compartilhe este artigo
Sair da versão mobile