[llvm] d9f3197 - ValueTracking: Add more fpext and fptrunc tests

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 19 05:18:46 PDT 2023


Author: Matt Arsenault
Date: 2023-04-19T08:18:37-04:00
New Revision: d9f31976d1b9db9821c9aa2468a6fe97b884f125

URL: https://github.com/llvm/llvm-project/commit/d9f31976d1b9db9821c9aa2468a6fe97b884f125
DIFF: https://github.com/llvm/llvm-project/commit/d9f31976d1b9db9821c9aa2468a6fe97b884f125.diff

LOG: ValueTracking: Add more fpext and fptrunc tests

Added: 
    

Modified: 
    llvm/test/Transforms/Attributor/nofpclass-fpext.ll
    llvm/test/Transforms/Attributor/nofpclass-fptrunc.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/Transforms/Attributor/nofpclass-fpext.ll b/llvm/test/Transforms/Attributor/nofpclass-fpext.ll
index 607fbe5fe5793..9d23cf4320ae3 100644
--- a/llvm/test/Transforms/Attributor/nofpclass-fpext.ll
+++ b/llvm/test/Transforms/Attributor/nofpclass-fpext.ll
@@ -151,6 +151,66 @@ define double @ret_fpext_f32_to_f64_nonorm(float nofpclass(norm) %arg0) {
   ret double %ext
 }
 
+define double @ret_fpext_f32_to_f64_negonly_zero(float nofpclass(pinf pnorm psub pzero) %arg0) {
+; CHECK-LABEL: define double @ret_fpext_f32_to_f64_negonly_zero
+; CHECK-SAME: (float nofpclass(pinf pzero psub pnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fpext float [[ARG0]] to double
+; CHECK-NEXT:    ret double [[EXT]]
+;
+  %ext = fpext float %arg0 to double
+  ret double %ext
+}
+
+define double @ret_fpext_f32_to_f64_negonly(float nofpclass(pinf pnorm psub) %arg0) {
+; CHECK-LABEL: define double @ret_fpext_f32_to_f64_negonly
+; CHECK-SAME: (float nofpclass(pinf psub pnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fpext float [[ARG0]] to double
+; CHECK-NEXT:    ret double [[EXT]]
+;
+  %ext = fpext float %arg0 to double
+  ret double %ext
+}
+
+define double @ret_fpext_f32_to_f64_negonly_ord(float nofpclass(pinf pnorm psub pzero nan) %arg0) {
+; CHECK-LABEL: define double @ret_fpext_f32_to_f64_negonly_ord
+; CHECK-SAME: (float nofpclass(nan pinf pzero psub pnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fpext float [[ARG0]] to double
+; CHECK-NEXT:    ret double [[EXT]]
+;
+  %ext = fpext float %arg0 to double
+  ret double %ext
+}
+
+define double @ret_fpext_f32_to_f64_posonly_zero(float nofpclass(ninf nnorm nsub nzero) %arg0) {
+; CHECK-LABEL: define double @ret_fpext_f32_to_f64_posonly_zero
+; CHECK-SAME: (float nofpclass(ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fpext float [[ARG0]] to double
+; CHECK-NEXT:    ret double [[EXT]]
+;
+  %ext = fpext float %arg0 to double
+  ret double %ext
+}
+
+define double @ret_fpext_f32_to_f64_posonly(float nofpclass(ninf nnorm nsub) %arg0) {
+; CHECK-LABEL: define double @ret_fpext_f32_to_f64_posonly
+; CHECK-SAME: (float nofpclass(ninf nsub nnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fpext float [[ARG0]] to double
+; CHECK-NEXT:    ret double [[EXT]]
+;
+  %ext = fpext float %arg0 to double
+  ret double %ext
+}
+
+define double @ret_fpext_f32_to_f64_posonly_nan(float nofpclass(ninf nnorm nsub nzero nan) %arg0) {
+; CHECK-LABEL: define double @ret_fpext_f32_to_f64_posonly_nan
+; CHECK-SAME: (float nofpclass(nan ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fpext float [[ARG0]] to double
+; CHECK-NEXT:    ret double [[EXT]]
+;
+  %ext = fpext float %arg0 to double
+  ret double %ext
+}
+
 define float @ret_fpext_bf16_f32(bfloat %arg0) {
 ; CHECK-LABEL: define float @ret_fpext_bf16_f32
 ; CHECK-SAME: (bfloat [[ARG0:%.*]]) #[[ATTR0]] {

diff  --git a/llvm/test/Transforms/Attributor/nofpclass-fptrunc.ll b/llvm/test/Transforms/Attributor/nofpclass-fptrunc.ll
index 2d6424fecccbe..a5a4b004737d3 100644
--- a/llvm/test/Transforms/Attributor/nofpclass-fptrunc.ll
+++ b/llvm/test/Transforms/Attributor/nofpclass-fptrunc.ll
@@ -130,5 +130,76 @@ define float @ret_fptrunc_nonorm(double nofpclass(norm) %arg0) {
   %ext = fptrunc double %arg0 to float
   ret float %ext
 }
+
+define float @ret_fptrunc_posonly(double nofpclass(ninf nnorm nsub nzero) %arg0) {
+; CHECK-LABEL: define float @ret_fptrunc_posonly
+; CHECK-SAME: (double nofpclass(ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float
+; CHECK-NEXT:    ret float [[EXT]]
+;
+  %ext = fptrunc double %arg0 to float
+  ret float %ext
+}
+
+define float @ret_fptrunc_posonly_zero(double nofpclass(ninf nnorm nsub) %arg0) {
+; CHECK-LABEL: define float @ret_fptrunc_posonly_zero
+; CHECK-SAME: (double nofpclass(ninf nsub nnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float
+; CHECK-NEXT:    ret float [[EXT]]
+;
+  %ext = fptrunc double %arg0 to float
+  ret float %ext
+}
+
+define float @ret_fptrunc_posonly_zero_nan(double nofpclass(ninf nnorm nsub nan) %arg0) {
+; CHECK-LABEL: define nofpclass(nan) float @ret_fptrunc_posonly_zero_nan
+; CHECK-SAME: (double nofpclass(nan ninf nsub nnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float
+; CHECK-NEXT:    ret float [[EXT]]
+;
+  %ext = fptrunc double %arg0 to float
+  ret float %ext
+}
+
+define float @ret_fptrunc_posonly_nan(double nofpclass(ninf nnorm nsub nzero nan) %arg0) {
+; CHECK-LABEL: define nofpclass(nan) float @ret_fptrunc_posonly_nan
+; CHECK-SAME: (double nofpclass(nan ninf nzero nsub nnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float
+; CHECK-NEXT:    ret float [[EXT]]
+;
+  %ext = fptrunc double %arg0 to float
+  ret float %ext
+}
+
+define float @ret_fptrunc_negonly(double nofpclass(pinf pnorm psub pzero) %arg0) {
+; CHECK-LABEL: define float @ret_fptrunc_negonly
+; CHECK-SAME: (double nofpclass(pinf pzero psub pnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float
+; CHECK-NEXT:    ret float [[EXT]]
+;
+  %ext = fptrunc double %arg0 to float
+  ret float %ext
+}
+
+define float @ret_fptrunc_negonly_zero(double nofpclass(pinf pnorm psub) %arg0) {
+; CHECK-LABEL: define float @ret_fptrunc_negonly_zero
+; CHECK-SAME: (double nofpclass(pinf psub pnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float
+; CHECK-NEXT:    ret float [[EXT]]
+;
+  %ext = fptrunc double %arg0 to float
+  ret float %ext
+}
+
+define float @ret_fptrunc_negonly_zero_nan(double nofpclass(pinf pnorm psub nan) %arg0) {
+; CHECK-LABEL: define nofpclass(nan) float @ret_fptrunc_negonly_zero_nan
+; CHECK-SAME: (double nofpclass(nan pinf psub pnorm) [[ARG0:%.*]]) #[[ATTR0]] {
+; CHECK-NEXT:    [[EXT:%.*]] = fptrunc double [[ARG0]] to float
+; CHECK-NEXT:    ret float [[EXT]]
+;
+  %ext = fptrunc double %arg0 to float
+  ret float %ext
+}
+
 ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
 ; TUNIT: {{.*}}


        


More information about the llvm-commits mailing list