[llvm] [NVPTX] Add intrinsics for ff/f16/bf16 to ue5m3 conversions (PR #218677)
Dharuni R Acharya via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 25 23:31:00 PDT 2026
================
@@ -2602,6 +2602,41 @@ let Predicates = [hasUE5M3TypeSupport] in {
(CVT_bf16x2_ue5m3x2_scale_n2 $a, $b, CvtRN)>;
def : Pat<(int_nvvm_ue5m3x2_to_bf16x2_rn_satfinite_scale_n2_ue8m0 i16:$a, i16:$b),
(CVT_bf16x2_ue5m3x2_scale_n2 $a, $b, CvtRN_SATFINITE)>;
+
+ foreach rnd = ["rn", "rz", "rp"] in {
+ foreach satfinite = ["", "_satfinite"] in {
+ defvar intrin = !cast<Intrinsic>("int_nvvm_ff_to_ue5m3x2_" # rnd # satfinite);
+ defvar mode = !cast<PatLeaf>("Cvt" # !toupper(rnd) # !toupper(satfinite));
+ def : Pat<(intrin f32:$a, f32:$b), (CVT_ue5m3x2_f32 $a, $b, mode)>;
+ }
+ }
+ foreach rnd = ["rn", "rz"] in {
+ foreach satfinite = ["", "_satfinite"] in {
+ defvar intrin = !cast<Intrinsic>("int_nvvm_ff_to_ue5m3x2_" # rnd # satfinite # "_scale_n1_ue8m0");
+ defvar mode = !cast<PatLeaf>("Cvt" # !toupper(rnd) # !toupper(satfinite));
+ def : Pat<(intrin f32:$a, f32:$b, i16:$c),
+ (CVT_ue5m3x2_f32_scale_n1 $a, $b, $c, mode)>;
+ }
+ }
+
+ foreach type = ["f16x2", "bf16x2"] in {
+ foreach rnd = ["rn", "rz", "rp"] in {
+ foreach satfinite = ["", "_satfinite"] in {
----------------
DharuniRAcharya wrote:
Yes, the latest revision now follows a convention of not having `_` for all looped variables.
https://github.com/llvm/llvm-project/pull/218677
More information about the llvm-commits
mailing list