[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