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, descontinuar ou renomear um recurso. Depois que o RFC for aprovado, as etapas a seguir precisarão ser concluídas:

1. Aumentar o número da versão em Version.h e atualizar o registro de versão

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

Todos os novos recursos do VHLO adicionados usariam essa versão atualizada. Por exemplo, depois de atualizar 0.10.0 --> 0.11.0, uma nova operação em VhloOps.td usaria:

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

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

O código exato necessário para integrar um novo recurso varia, mas na maior parte, o seguinte precisa mudar:

3. Adicionar / atualizar testes de unidade

O colaborador de uma mudança incompatível é responsável pelos testes de unidade positivos e negativos do recurso, bem como pelos testes de unidade de compatibilidade.

O teste de unidade de compatibilidade envolve a atualização de stablehlo_legalize_to_vhlo.mlir para garantir que o StableHLO faça viagens de ida e volta com a versão mais recente do VHLO, bem como qualquer outro teste de compatibilidade futura ou revertida necessário. Por exemplo, se você adicionar 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 tem suporte antes da versão X. Se você estiver adicionando uma nova versão de uma operação, adicione um arquivo de teste como vhlo_to_version_downgrade.0_Y_0.mlir, que mostra que a operação pode ser rebaixada com sucesso.

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

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

Depois de adicionar testes a stablehlo_legalize_to_vhlo.mlir, copie o arquivo de teste com controle de versão com a maior versão em um novo arquivo na nova versão e adicione os novos testes a esse arquivo também. Você também vai precisar criar um arquivo de bytecode associado 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