[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / CodeGen / AArch64 / machine-sink-zr.mir
blob583ce40ad0e9f7b38856d3122698ce61216ddaad
1 # RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass machine-sink -o - %s | FileCheck %s
2 --- |
3   define void @sinkwzr() { ret void }
4 ...
5 ---
6 name:            sinkwzr
7 tracksRegLiveness: true
8 registers:
9   - { id: 0, class: gpr32 }
10   - { id: 1, class: gpr32 }
11   - { id: 2, class: gpr32sp }
12   - { id: 3, class: gpr32 }
13   - { id: 4, class: gpr32 }
14 body:             |
15   ; Check that WZR copy is sunk into the loop preheader.
16   ; CHECK-LABEL: name: sinkwzr
17   ; CHECK-LABEL: bb.0:
18   ; CHECK-NOT: COPY $wzr
19   bb.0:
20     liveins: $w0
22     %0 = COPY $w0
23     %1 = COPY $wzr
24     CBZW %0, %bb.3
26   ; CHECK-LABEL: bb.1:
27   ; CHECK: COPY $wzr
29   bb.1:
30     B %bb.2
32   bb.2:
33     %2 = PHI %0, %bb.1, %4, %bb.2
34     $w0 = COPY %1
35     %3 = SUBSWri %2, 1, 0, implicit-def dead $nzcv
36     %4 = COPY %3
37     CBZW %3, %bb.3
38     B %bb.2
40   bb.3:
41     RET_ReallyLR
43 ...