[llvm] r355212 - [Tests] Add tests for missed optimizations of saturating and idempotent FP atomicrmws

Philip Reames via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 1 10:10:37 PST 2019


Author: reames
Date: Fri Mar  1 10:10:37 2019
New Revision: 355212

URL: http://llvm.org/viewvc/llvm-project?rev=355212&view=rev
Log:
[Tests] Add tests for missed optimizations of saturating and idempotent FP atomicrmws


Modified:
    llvm/trunk/test/Transforms/InstCombine/atomicrmw.ll

Modified: llvm/trunk/test/Transforms/InstCombine/atomicrmw.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/atomicrmw.ll?rev=355212&r1=355211&r2=355212&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/atomicrmw.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/atomicrmw.ll Fri Mar  1 10:10:37 2019
@@ -90,6 +90,13 @@ define float @atomic_fsub_canon(float* %
   %res = atomicrmw fsub float* %addr, float 0.0 release
   ret float %res
 }
+; CHECK-LABEL: atomic_fadd_canon
+; CHECK-NEXT: %res = atomicrmw fadd float* %addr, float -0.000000e+00 release
+; CHECK-NEXT: ret float %res
+define float @atomic_fadd_canon(float* %addr) {
+  %res = atomicrmw fadd float* %addr, float -0.0 release
+  ret float %res
+}
 
 ; Can't replace a volatile w/a load; this would eliminate a volatile store.
 ; CHECK-LABEL: atomic_sub_zero_volatile
@@ -206,6 +213,22 @@ define i8 @sat_max_smax_char(i8* %addr)
   ret i8 %res
 }
 
+; CHECK-LABEL: sat_fadd_nan
+; CHECK-NEXT: %res = atomicrmw fadd double* %addr, double 0x7FF00000FFFFFFFF release
+; CHECK-NEXT: ret double %res
+define double @sat_fadd_nan(double* %addr) {
+  %res = atomicrmw fadd double* %addr, double 0x7FF00000FFFFFFFF release
+  ret double %res
+}
+
+; CHECK-LABEL: sat_fsub_nan
+; CHECK-NEXT: %res = atomicrmw fsub double* %addr, double 0x7FF00000FFFFFFFF release
+; CHECK-NEXT: ret double %res
+define double @sat_fsub_nan(double* %addr) {
+  %res = atomicrmw fsub double* %addr, double 0x7FF00000FFFFFFFF release
+  ret double %res
+}
+
 ; CHECK-LABEL: xchg_unused_monotonic
 ; CHECK-NEXT: store atomic i32 0, i32* %addr monotonic, align 4
 ; CHECK-NEXT: ret void




More information about the llvm-commits mailing list