[llvm] [GlobalISel][AArch64] Implement `llvm.{get,set}.rounding` lowering (PR #210665)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 3 06:16:26 PDT 2026


=?utf-8?q?Ömer_Sinan_Ağacan?= <omeragacan at gmail.com>,
=?utf-8?q?Ömer_Sinan_Ağacan?= <omeragacan at gmail.com>,
=?utf-8?q?Ömer_Sinan_Ağacan?= <omer at osa1.net>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/210665 at github.com>


================
@@ -121,17 +120,30 @@ if.end:
 ; (the llvm.set.rounding is irrelevant, but both could trap).
 
 define float @set_rounding(float %x, float %y) {
-; CHECK-LABEL: set_rounding:
-; CHECK:       // %bb.0: // %entry
-; CHECK-NEXT:    mrs x8, FPCR
-; CHECK-NEXT:    fadd s0, s0, s1
-; CHECK-NEXT:    orr x8, x8, #0xc00000
-; CHECK-NEXT:    msr FPCR, x8
-; CHECK-NEXT:    mrs x8, FPCR
-; CHECK-NEXT:    and x8, x8, #0xffffffffff3fffff
-; CHECK-NEXT:    msr FPCR, x8
-; CHECK-NEXT:    fsub s0, s0, s0
-; CHECK-NEXT:    ret
+; CHECK-SD-LABEL: set_rounding:
+; CHECK-SD:       // %bb.0: // %entry
+; CHECK-SD-NEXT:    mrs x8, FPCR
+; CHECK-SD-NEXT:    fadd s0, s0, s1
+; CHECK-SD-NEXT:    orr x8, x8, #0xc00000
+; CHECK-SD-NEXT:    msr FPCR, x8
+; CHECK-SD-NEXT:    mrs x8, FPCR
+; CHECK-SD-NEXT:    and x8, x8, #0xffffffffff3fffff
+; CHECK-SD-NEXT:    msr FPCR, x8
+; CHECK-SD-NEXT:    fsub s0, s0, s0
+; CHECK-SD-NEXT:    ret
+;
+; CHECK-GI-LABEL: set_rounding:
+; CHECK-GI:       // %bb.0: // %entry
+; CHECK-GI-NEXT:    mrs x8, FPCR
+; CHECK-GI-NEXT:    fadd s0, s0, s1
+; CHECK-GI-NEXT:    and x8, x8, #0xffffffffff3fffff
+; CHECK-GI-NEXT:    orr x8, x8, #0xc00000
+; CHECK-GI-NEXT:    msr FPCR, x8
+; CHECK-GI-NEXT:    mrs x8, FPCR
+; CHECK-GI-NEXT:    and x8, x8, #0xffffffffff3fffff
+; CHECK-GI-NEXT:    msr FPCR, x8
+; CHECK-GI-NEXT:    fsub s0, s0, s0
+; CHECK-GI-NEXT:    ret
 entry:
   %add1 = fadd float %x, %y
----------------
arsenm wrote:

I'm surprised this doesn't fail the verifier as-is, we maybe should stick strictfp on these intrinsic definition 

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


More information about the llvm-commits mailing list