[llvm] [KnownFPClass] Combine fpext and fptrunc into a shared routine (PR #225188)
Eric Ross via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 21 13:47:23 PDT 2026
================
@@ -520,5 +520,86 @@ define double @ret_fpext_bf16_f64_nonorm_sub(bfloat nofpclass(norm sub) %arg0) {
%ext = fpext bfloat %arg0 to double
ret double %ext
}
+
+define float @ret_fpext_bf16_f32__sub(bfloat nofpclass(nan inf zero norm) %arg0) {
+; CHECK-LABEL: define nofpclass(nan inf) float @ret_fpext_bf16_f32__sub
+; CHECK-SAME: (bfloat nofpclass(nan inf zero norm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float
+; CHECK-NEXT: ret float [[EXT]]
+;
+ %ext = fpext bfloat %arg0 to float
+ ret float %ext
+}
+
+define float @ret_fpext_bf16_f32__psub(bfloat nofpclass(nan inf zero nsub norm) %arg0) {
+; CHECK-LABEL: define nofpclass(nan inf nzero nsub nnorm) float @ret_fpext_bf16_f32__psub
+; CHECK-SAME: (bfloat nofpclass(nan inf zero nsub norm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float
+; CHECK-NEXT: ret float [[EXT]]
+;
+ %ext = fpext bfloat %arg0 to float
+ ret float %ext
+}
+
+define float @ret_fpext_bf16_f32__nsub(bfloat nofpclass(nan inf zero psub norm) %arg0) {
+; CHECK-LABEL: define nofpclass(nan inf pzero psub pnorm) float @ret_fpext_bf16_f32__nsub
+; CHECK-SAME: (bfloat nofpclass(nan inf zero psub norm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float
+; CHECK-NEXT: ret float [[EXT]]
+;
+ %ext = fpext bfloat %arg0 to float
+ ret float %ext
+}
+
+define float @ret_fpext_bf16_f32__norm(bfloat nofpclass(nan inf zero sub) %arg0) {
+; CHECK-LABEL: define nofpclass(nan) float @ret_fpext_bf16_f32__norm
+; CHECK-SAME: (bfloat nofpclass(nan inf zero sub) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT: [[EXT:%.*]] = fpext bfloat [[ARG0]] to float
+; CHECK-NEXT: ret float [[EXT]]
+;
+ %ext = fpext bfloat %arg0 to float
+ ret float %ext
+}
+
+define fp128 @ret_fpext_f80_f128__sub(x86_fp80 nofpclass(nan inf zero norm) %arg0) {
----------------
ZERICO2005 wrote:
The test cases for `f32 = fpext(bf16)` and `f128 = fpext(f80)` should be fairly similar overall.
https://github.com/llvm/llvm-project/pull/225188
More information about the llvm-commits
mailing list