Lista de verificação da VHLO

Consulte vhlo.md para mais informações sobre o VHLO.

Contribuição de alterações incompatíveis

Todas as alterações com implicações de compatibilidade devem passar pelo processo de RFC. Isso inclui adicionar, suspender o uso ou renomear um recurso. Assim que o RFC é aprovado, as seguintes etapas precisam ser concluídas:

1. Fazer bump no número da versão no Version.h e atualizar o registro da versão

Antes de atualizar operações, atributos, tipos ou conversões VHLO, incremente o o número da versão secundária em Version.h, e atualize o registro de versão em VhloDialect.td

Os novos recursos de VHLO adicionados usarão essa versão otimizada, por exemplo, após subindo 0.10.0 --> 0.11.0, uma nova operação em VhloOps.td usaria:

VHLO_Op<"abs_v2", "0.11.0", "current">

2. Adição de conversões e implementação de VHLO obrigatórias

O código exato necessário para integrar um novo recurso varia. No entanto, para parte a seguir precisará ser alterada:

3. Adicionar / atualizar testes de unidade

O contribuidor de uma mudança incompatível é responsável por impactos positivos testes de unidade negativos do recurso, bem como testes de unidade de compatibilidade.

O teste de unidade de compatibilidade envolve a atualização de stablehlo_legalize_to_vhlo.mlir. para garantir que as viagens de ida e volta do StableHLO com a versão mais recente do VHLO, quaisquer testes adicionais de compatibilidade com versões anteriores ou posteriores necessárias. Por exemplo: se estiver adicionando uma nova operação na versão X com Y = X - 1, adicione um arquivo de teste como vhlo_to_version_downgrade_invalid.0_Y_0.mlir que mostra que a operação não é compatível antes da versão X. Se estiver adicionando uma nova versão de uma op, adicione um arquivo de teste como vhlo_to_version_downgrade.0_Y_0.mlir que mostra que é possível fazer downgrade da operação. com sucesso.

Se a operação tiver atributos padrão, inclua testes que mostrem que os padrões são serializadas e desserializadas corretamente.

4. Adicionar teste de serialização versão

Depois de adicionar testes ao stablehlo_legalize_to_vhlo.mlir, copie o teste com controle de versão com a maior versão em um novo arquivo na nova versão e adicione o novos testes para esse arquivo também. Você também precisará criar um arquivo de bytecode usando stablehlo-translate:

export TARGET_VERSION=1.X.0
export TARGET_FILENAME=${TARGET_VERSION//./_}
stablehlo-translate --serialize --target=$TARGET_VERSION --strip-debuginfo stablehlo/tests/vhlo/stablehlo_legalize_to_vhlo.$TARGET_FILENAME.mlir > stablehlo/tests/vhlo/stablehlo_legalize_to_vhlo.$TARGET_FILENAME.mlir.bc