Following the previous revision D81100, I decided to implement a templated class that would provide conversion patterns for “straightforward” SPIR-V ops into LLVM dialect. Templating allows to abstract away from concrete implementation for each specific op. Those are mainly binary operations. Currently supported and tested ops are:
- Arithmetic ops: IAdd, ISub, IMul, FAdd, FSub, FMul, FDiv, FNegate, SDiv, SRem and UDiv
- Bitwise ops: BitwiseAnd, BitwiseOr, BitwiseXor
The implementation relies on SPIRVToLLVMConversion class that makes use of OpConversionPattern.