[Mlir-commits] [mlir] [MLIR][NVGPU] Add convert.fpext and convert.fptrunc Ops (PR #199700)
Guray Ozen
llvmlistbot at llvm.org
Tue May 26 10:56:13 PDT 2026
================
@@ -101,6 +101,20 @@ def TensorMapInterleaveKind : I32EnumAttr<"TensorMapInterleaveKind",
let cppNamespace = "::mlir::nvgpu";
}
+def SubBytesPackedCompact : I32EnumAttrCase<"COMPACT", 0, "compact">;
+def SubBytesPackedU6UnpackU8E3M2 : I32EnumAttrCase<"U6_UNPACK_U8_E3M2", 1, "u6_unpack_u8_e3m2">;
+def SubBytesPackedU6UnpackU8E2M3 : I32EnumAttrCase<"U6_UNPACK_U8_E2M3", 2, "u6_unpack_u8_e2m3">;
----------------
grypp wrote:
It looks like this enum is there to generate `vector<i8>` because llvm prefers that. But we are in high-level dialect here, so can we generate correct data type? User-of llvm dialect can do the final lowering to i8 translation later
PR does:
```
%out = nvgpu.convert.fptrunc %in {packed_kind = #nvgpu.subbytes_packedkind<u6_unpack_u8_e2m3>}: vector<8xf32> to vector<8xi8>
```
Can we do this?
```
%out = nvgpu.convert.fptrunc %in : vector<8xf32> to vector<4x2xf6> # no enum
user of llvm dialect() does
%out_i8 = vector.cast %out vector<4x2xf6> to vector<8xi8>
```
https://github.com/llvm/llvm-project/pull/199700
More information about the Mlir-commits
mailing list