Lista de verificação para especificação do StableHLO

Neste documento, resumimos as diretrizes para analisar as mudanças na especificação. No momento, essas mudanças normalmente envolvem a verificação de vários itens em várias fontes. Portanto, este documento resume todos eles para simplificar as análises:

  1. Confira se a coluna "Specification" em status.md mostra a mensagem "yes".
  2. Verifique se o título da seção corresponde ao mnemônico da operação no ODS.
  3. Verifique se a seção "Semântica" corresponde à Semântica de operação do XLA.
  4. Verifique se as seções "Entradas" e "Saídas":
    1. Liste os mesmos itens da ODS.
    2. Liste os mesmos itens como HloInstruction::CreateFromProto.
    3. São ordenados exatamente como ODS.
    4. Se houver inconsistências, verifique se há tíquetes correspondentes.
  5. Verifique se a seção "Restrições":
    1. Corresponde a shape_inference.cc do XLA.
    2. Corresponde a hlo_verifier.cc do XLA.
    3. Corresponde ao ODS.
    4. Corresponde a StablehloOps.cpp.
    5. Se houver inconsistências, verifique se há tíquetes correspondentes. Vincule todos os ingressos na especificação em locais que sejam o mais específicos possível. Por exemplo, se um ingresso for sobre uma restrição que não foi implementada, vincule o ingresso diretamente nessa restrição.
    6. Se as partes correspondentes do ODS e do StablehloOps.cpp corresponderem à especificação, confira se as colunas "Verificação" e "Inferência de tipo" em status.md mostram "sim".
  6. Verifique se a seção "Exemplos":
    1. Tem apenas um exemplo. No futuro, vamos incluir links para mais exemplos do pacote de testes de intérprete do StableHLO.
    2. Usa uma sintaxe MLIR válida executando stablehlo-opt nos exemplos de código.
    3. Usa uma sintaxe MLIR genérica, que pode ser conseguida executando stablehlo-opt -mlir-print-op-generic. Mantemos a sintaxe genérica na especificação para evitar ter que mudar a especificação em mudanças no Beautyprinter.
  7. Verifique se o description no ODS da operação:
    1. Inclui a primeira frase da especificação.
    2. Em seguida, leva à seção correspondente da especificação.
    3. Em seguida, usa o mesmo exemplo da especificação, mas usando uma sintaxe bonita que pode ser recebida executando stablehlo-opt.
  8. Confira se os arquivos relacionados à implementação da verificação e das restrições de inferência de tipo seguem as diretrizes mencionadas abaixo:
    1. Siga a diretriz 1 para StablehloOps.td.
    2. Siga a diretriz 2 para TypeInference.cpp e StablehloOps.cpp.
    3. Siga a diretriz no 5 para ops_stablehlo.mlir.
    4. Siga a diretriz no 6 para infer_stablehlo.mlir.