Files
clang-p2996/llvm/test/CodeGen/AArch64/mlicm-stack-write-check.mir
Gaëtan Bossu a0c318938a [CodeGen][NFC] Properly split MachineLICM and EarlyMachineLICM (#113573)
Both are based on MachineLICMBase, and the functionality there is
"switched" based on a PreRegAlloc flag. This commit is simply about
trusting the original value of that flag, defined by the `MachineLICM`
and `EarlyMachineLICM` classes.

The `PreRegAlloc` flag used to be overwritten it based on MRI.isSSA(),
which is un-reliable due to how it is inferred by the MIRParser. I see
that we can now define isSSA in MIR (thanks @gargaroff ), meaning the
fix isn’t really needed anymore, but redefining that flag still feels
wrong.

Note that I'm looking into upstreaming more changes to MachineLICM, see
[the discourse
thread](https://discourse.llvm.org/t/extending-post-regalloc-machinelicm/82725).
2024-10-25 11:19:22 -07:00

60 lines
1.4 KiB
YAML

# RUN: llc -mtriple=aarch64 -run-pass machinelicm -verify-machineinstrs -o - %s | FileCheck %s
# RUN: llc -mtriple=aarch64 -passes machinelicm -o - %s | FileCheck %s
---
name: test
tracksRegLiveness: true
stack:
- { id: 0, size: 8, type: spill-slot }
body: |
bb.0:
; CHECK-LABEL: name: test
; CHECK-LABEL: bb.0:
; CHECK: $x2 = LDRXui %stack.0, 0
liveins: $x0, $x1, $x2
B %bb.1
bb.1:
; CHECK-LABEL: bb.1:
; CHECK-NOT: $x2 = LDRXui %stack.0, 0
; CHECK: $x0 = ADDXrr $x0, $x2
liveins: $x0
DBG_VALUE %stack.0, 0
$x2 = LDRXui %stack.0, 0 :: (load (s64) from %stack.0)
$x0 = ADDXrr $x0, killed $x2
$xzr = SUBSXri killed $x0, 1, 0, implicit-def $nzcv
Bcc 11, %bb.1, implicit $nzcv
B %bb.2
bb.2:
liveins: $x0
...
---
name: test2
tracksRegLiveness: true
stack:
- { id: 0, size: 8, type: spill-slot }
body: |
bb.0:
; CHECK-LABEL: name: test2
; CHECK-LABEL: bb.0:
; CHECK: $x2 = LDRXui %stack.0, 0
liveins: $x0, $x1, $x2
B %bb.1
bb.1:
; CHECK-LABEL: bb.1:
; CHECK-NOT: $x2 = LDRXui %stack.0, 0
; CHECK: $w0 = ADDWrr $w0, $w2
liveins: $x0
DBG_VALUE %stack.0, 0
$x2 = LDRXui %stack.0, 0 :: (load (s64) from %stack.0)
$w0 = ADDWrr $w0, killed $w2
$wzr = SUBSWri killed $w0, 1, 0, implicit-def $nzcv
Bcc 11, %bb.1, implicit $nzcv
B %bb.2
bb.2:
liveins: $x0
...