================
@@ -2838,39 +2838,42 @@ def : Pat<(int_nvvm_ull2d_rp i64:$a), (CVT_f64_u64 $a,
CvtRP)>;
def : Pat<(int_nvvm_f2h_rn_ftz f32:$a), (CVT_f16_f32 $a, CvtRN_FTZ)>;
def : Pat<(int_nvvm_f2h_rn f32:$a), (CVT_f16_f32 $a, CvtRN)>;
-let Predicates = [hasFP8ConversionSupport] in {
- def : Pat<(int_nvvm_ff_to_e4m3x2_rn f32:$a, f32:$b),
- (CVT_e4m3x2_f32 $a, $b, CvtRN)>;
- def : Pat<(int_nvvm_ff_to_e4m3x2_rn_relu f32:$a, f32:$b),
- (CVT_e4m3x2_f32 $a, $b, CvtRN_RELU)>;
- def : Pat<(int_nvvm_ff_to_e5m2x2_rn f32:$a, f32:$b),
- (CVT_e5m2x2_f32 $a, $b, CvtRN)>;
- def : Pat<(int_nvvm_ff_to_e5m2x2_rn_relu f32:$a, f32:$b),
- (CVT_e5m2x2_f32 $a, $b, CvtRN_RELU)>;
-}
-
-let Predicates = [hasFP16X2ToNarrowFPConversionSupport] in {
- foreach dst_type = ["e4m3x2", "e5m2x2"] in {
- foreach relu = ["", "_relu"] in {
- defvar intrin = !cast<Intrinsic>("int_nvvm_bf16x2_to_" # dst_type #
"_rn" # relu # "_satfinite");
- defvar cvt_inst = !cast<NVPTXInst>("CVT_"# dst_type #"_bf16x2");
- defvar cvt_mode = !cast<PatLeaf>("CvtRN" # !toupper(relu));
- def : Pat<(intrin v2bf16:$a),
- (cvt_inst $a, cvt_mode)>;
+foreach dst = ["e4m3x2", "e5m2x2"] in {
+ foreach relu = ["", "_relu"] in {
+ foreach rnd = ["rn", "rz"] in {
+ defvar BaseMode = !cast<PatLeaf>("Cvt" # !toupper(rnd # relu));
+ defvar Suffix = dst # "_" # rnd # relu;
+ defvar FF = !cast<Intrinsic>("int_nvvm_ff_to_" # Suffix);
----------------
DharuniRAcharya wrote:
Sure, updated in the latest revision!
https://github.com/llvm/llvm-project/pull/222511
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits