[llvm] [X86] Return instructions don't need side effects (PR #171641)

via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 10 09:32:36 PST 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-x86

Author: Harald van Dijk (hvdijk)

<details>
<summary>Changes</summary>

Their effects are modelled through isReturn = 1 already.

---
Full diff: https://github.com/llvm/llvm-project/pull/171641.diff


3 Files Affected:

- (modified) llvm/lib/Target/X86/X86InstrControl.td (+1-1) 
- (modified) llvm/test/tools/llvm-mca/X86/BtVer2/stmxcsr-ldmxcsr.s (+1-1) 
- (modified) llvm/test/tools/llvm-mca/X86/Haswell/stmxcsr-ldmxcsr.s (+1-1) 


``````````diff
diff --git a/llvm/lib/Target/X86/X86InstrControl.td b/llvm/lib/Target/X86/X86InstrControl.td
index e8527cd73abb5..c6ca0bccd00ee 100644
--- a/llvm/lib/Target/X86/X86InstrControl.td
+++ b/llvm/lib/Target/X86/X86InstrControl.td
@@ -18,7 +18,7 @@
 //
 // The X86retglue return instructions are variadic because we may add ST0 and
 // ST1 arguments when returning values on the x87 stack.
-let isTerminator = 1, isReturn = 1, isBarrier = 1,
+let isTerminator = 1, isReturn = 1, isBarrier = 1, hasSideEffects = 0,
     hasCtrlDep = 1, FPForm = SpecialFP, SchedRW = [WriteJumpLd] in {
   def RET32  : I   <0xC3, RawFrm, (outs), (ins variable_ops),
                     "ret{l}", []>, OpSize32, Requires<[Not64BitMode]>;
diff --git a/llvm/test/tools/llvm-mca/X86/BtVer2/stmxcsr-ldmxcsr.s b/llvm/test/tools/llvm-mca/X86/BtVer2/stmxcsr-ldmxcsr.s
index b1768957c58f4..4095a722b9238 100644
--- a/llvm/test/tools/llvm-mca/X86/BtVer2/stmxcsr-ldmxcsr.s
+++ b/llvm/test/tools/llvm-mca/X86/BtVer2/stmxcsr-ldmxcsr.s
@@ -34,7 +34,7 @@ retq
 # CHECK-NEXT:  1      4     1.00    *                   andl	-4(%rsp), %eax
 # CHECK-NEXT:  1      1     1.00           *            movl	%eax, -8(%rsp)
 # CHECK-NEXT:  1      3     1.00    *      *      U     ldmxcsr	-8(%rsp)
-# CHECK-NEXT:  1      4     1.00                  U     retq
+# CHECK-NEXT:  1      4     1.00                        retq
 
 # CHECK:      Resources:
 # CHECK-NEXT: [0]   - JALU0
diff --git a/llvm/test/tools/llvm-mca/X86/Haswell/stmxcsr-ldmxcsr.s b/llvm/test/tools/llvm-mca/X86/Haswell/stmxcsr-ldmxcsr.s
index 011dfe61017ea..338ca10a08263 100644
--- a/llvm/test/tools/llvm-mca/X86/Haswell/stmxcsr-ldmxcsr.s
+++ b/llvm/test/tools/llvm-mca/X86/Haswell/stmxcsr-ldmxcsr.s
@@ -34,7 +34,7 @@ retq
 # CHECK-NEXT:  2      6     0.50    *                   andl	-4(%rsp), %eax
 # CHECK-NEXT:  1      1     1.00           *            movl	%eax, -8(%rsp)
 # CHECK-NEXT:  3      7     1.00    *      *      U     ldmxcsr	-8(%rsp)
-# CHECK-NEXT:  3      7     1.00                  U     retq
+# CHECK-NEXT:  3      7     1.00                        retq
 
 # CHECK:      Resources:
 # CHECK-NEXT: [0]   - HWDivider

``````````

</details>


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


More information about the llvm-commits mailing list