[Mlir-commits] [mlir] [MLIR][GPU] Support bf16 and i1 gpu::shuffles to LLVMSPIRV conversion (PR #119675)
Victor Perez
llvmlistbot at llvm.org
Wed Jan 8 03:06:48 PST 2025
================
@@ -286,33 +287,70 @@ struct GPUShuffleConversion final : ConvertOpToLLVMPattern<gpu::ShuffleOp> {
val == getSubgroupSize(op);
}
+ static Value bitcastOrExtBeforeShuffle(Value oldVal, Location loc,
+ ConversionPatternRewriter &rewriter) {
+ return TypeSwitch<Type, Value>(oldVal.getType())
+ .Case([&](BFloat16Type) {
+ return rewriter.create<LLVM::BitcastOp>(
+ loc, rewriter.getIntegerType(16), oldVal);
+ })
+ .Case([&](IntegerType intTy) -> Value {
+ if (intTy.getWidth() == 1)
+ return rewriter.create<LLVM::ZExtOp>(
+ loc, rewriter.getIntegerType(8), oldVal);
+ return oldVal;
+ })
+ .Default([&](auto) { return oldVal; });
----------------
victor-eds wrote:
```suggestion
return TypeSwitch<Type, Value>(oldVal.getType())
.Case([&](BFloat16Type) {
return rewriter.create<LLVM::BitcastOp>(
loc, rewriter.getI16Type(), oldVal);
})
.Case([&](IntegerType intTy) -> Value {
if (intTy.getWidth() == 1)
return rewriter.create<LLVM::ZExtOp>(
loc, rewriter.getI8Type(), oldVal);
return oldVal;
})
.Default(oldVal);
```
NITs. Not sure `.Default(oldVal);` works, but I think it should.
https://github.com/llvm/llvm-project/pull/119675
More information about the Mlir-commits
mailing list