[llvm] [ARM] Stop gluing ALU nodes to branches / selects (PR #116970)

Sergei Barannikov via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 20 05:57:28 PST 2024


================
@@ -645,12 +645,13 @@ define i64 @opaque_constant1(i1 %cond, i64 %x) {
 ; THUMB2-NEXT:    push {r7, lr}
 ; THUMB2-NEXT:    ands r12, r0, #1
 ; THUMB2-NEXT:    mov.w lr, #1
-; THUMB2-NEXT:    itt ne
-; THUMB2-NEXT:    movne.w lr, #65536
+; THUMB2-NEXT:    it ne
 ; THUMB2-NEXT:    movne.w r12, #1
+; THUMB2-NEXT:    it ne
+; THUMB2-NEXT:    movne.w lr, #65536
----------------
s-barannikov wrote:

This is not optimized to a single IT block because the optimization pass does not hoist `mov.w lr, #1` appearing between conditional moves. It only hoists register copies.

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


More information about the llvm-commits mailing list