[llvm] [SystemZ] Don't lower float/double ATOMIC_[LOAD|STORE] to [LOAD|STORE] (PR #75879)

Ulrich Weigand via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 19 04:46:21 PST 2023


================
@@ -1,12 +1,11 @@
-; Test float atomic loads.
+; Test float atomic stores.
 ;
 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
 
 define void @f1(ptr %src, float %val) {
 ; CHECK-LABEL: f1:
-; CHECK: lgdr [[R:%r[0-9]+]], %f0
-; CHECK: srlg [[R]], [[R]], 32
-; CHECK: st [[R]], 0(%r2)
+; CHECK: ste %f0, 0(%r2)
+; CHECK: bcr 15, %r0
----------------
uweigand wrote:

Was the brc 15 missing before, or was just the check missing?  I see the check is also missing in the double version of this test.  These test should probably best be fully auto-generated.

Also, why do the long double versions of the tests use library calls?  Shouldn't they use lpq/stpq plus GPR/FPR moves?   In addition, for the long double (and also the i128) versions, we really should test both z10 and z13.


https://github.com/llvm/llvm-project/pull/75879


More information about the llvm-commits mailing list