[TableGen] Fix validateOperandClass for non Phyical Reg (#118146)
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-truncstore-atomic.mir
blobb207c851c8ba4bd2c54607e71de9e5dcea7bf691
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=1 %s -o - | FileCheck %s
4 ---
5 name:            truncstore_atomic_32
6 alignment:       4
7 legalized:       true
8 regBankSelected: true
9 tracksRegLiveness: true
10 liveins:
11   - { reg: '$x0' }
12   - { reg: '$w1' }
13 body:             |
14   ; CHECK-LABEL: name: truncstore_atomic_32
15   ; CHECK: bb.0:
16   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
17   ; CHECK-NEXT:   liveins: $w1, $x0
18   ; CHECK-NEXT: {{  $}}
19   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
20   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
21   ; CHECK-NEXT:   TBNZW [[COPY1]], 0, %bb.2
22   ; CHECK-NEXT:   B %bb.1
23   ; CHECK-NEXT: {{  $}}
24   ; CHECK-NEXT: bb.1:
25   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
26   ; CHECK-NEXT: {{  $}}
27   ; CHECK-NEXT:   [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 4
28   ; CHECK-NEXT:   [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[MOVi32imm]], %subreg.sub_32
29   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gpr32 = COPY [[SUBREG_TO_REG]].sub_32
30   ; CHECK-NEXT:   STLRW [[COPY2]], [[COPY]] :: (store release (s32))
31   ; CHECK-NEXT: {{  $}}
32   ; CHECK-NEXT: bb.2:
33   ; CHECK-NEXT:   RET_ReallyLR
34   bb.1:
35     liveins: $w1, $x0
37     %0:gpr(p0) = COPY $x0
38     %3:gpr(s32) = COPY $w1
39     G_BRCOND %3, %bb.3
40     G_BR %bb.2
42   bb.2:
43     %8:gpr(s64) = G_CONSTANT i64 4
44     G_STORE %8(s64), %0(p0) :: (store release (s32))
46   bb.3:
47     RET_ReallyLR
49 ...
50 ---
51 name:            truncstore_atomic_16
52 alignment:       4
53 legalized:       true
54 regBankSelected: true
55 tracksRegLiveness: true
56 liveins:
57   - { reg: '$x0' }
58   - { reg: '$w1' }
59 body:             |
60   ; CHECK-LABEL: name: truncstore_atomic_16
61   ; CHECK: bb.0:
62   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
63   ; CHECK-NEXT:   liveins: $w1, $x0
64   ; CHECK-NEXT: {{  $}}
65   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
66   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
67   ; CHECK-NEXT:   TBNZW [[COPY1]], 0, %bb.2
68   ; CHECK-NEXT:   B %bb.1
69   ; CHECK-NEXT: {{  $}}
70   ; CHECK-NEXT: bb.1:
71   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
72   ; CHECK-NEXT: {{  $}}
73   ; CHECK-NEXT:   [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 4
74   ; CHECK-NEXT:   [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[MOVi32imm]], %subreg.sub_32
75   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gpr32 = COPY [[SUBREG_TO_REG]].sub_32
76   ; CHECK-NEXT:   STLRH [[COPY2]], [[COPY]] :: (store release (s16))
77   ; CHECK-NEXT: {{  $}}
78   ; CHECK-NEXT: bb.2:
79   ; CHECK-NEXT:   RET_ReallyLR
80   bb.1:
81     liveins: $w1, $x0
83     %0:gpr(p0) = COPY $x0
84     %3:gpr(s32) = COPY $w1
85     G_BRCOND %3, %bb.3
86     G_BR %bb.2
88   bb.2:
89     %8:gpr(s64) = G_CONSTANT i64 4
90     G_STORE %8(s64), %0(p0) :: (store release (s16))
92   bb.3:
93     RET_ReallyLR
95 ...
96 ---
97 name:            truncstore_atomic_8
98 alignment:       4
99 legalized:       true
100 regBankSelected: true
101 tracksRegLiveness: true
102 liveins:
103   - { reg: '$x0' }
104   - { reg: '$w1' }
105 body:             |
106   ; CHECK-LABEL: name: truncstore_atomic_8
107   ; CHECK: bb.0:
108   ; CHECK-NEXT:   successors: %bb.2(0x40000000), %bb.1(0x40000000)
109   ; CHECK-NEXT:   liveins: $w1, $x0
110   ; CHECK-NEXT: {{  $}}
111   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
112   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gpr32 = COPY $w1
113   ; CHECK-NEXT:   TBNZW [[COPY1]], 0, %bb.2
114   ; CHECK-NEXT:   B %bb.1
115   ; CHECK-NEXT: {{  $}}
116   ; CHECK-NEXT: bb.1:
117   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
118   ; CHECK-NEXT: {{  $}}
119   ; CHECK-NEXT:   [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 4
120   ; CHECK-NEXT:   [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[MOVi32imm]], %subreg.sub_32
121   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gpr32 = COPY [[SUBREG_TO_REG]].sub_32
122   ; CHECK-NEXT:   STLRB [[COPY2]], [[COPY]] :: (store release (s8))
123   ; CHECK-NEXT: {{  $}}
124   ; CHECK-NEXT: bb.2:
125   ; CHECK-NEXT:   RET_ReallyLR
126   bb.1:
127     liveins: $w1, $x0
129     %0:gpr(p0) = COPY $x0
130     %3:gpr(s32) = COPY $w1
131     G_BRCOND %3, %bb.3
132     G_BR %bb.2
134   bb.2:
135     %8:gpr(s64) = G_CONSTANT i64 4
136     G_STORE %8(s64), %0(p0) :: (store release (s8))
138   bb.3:
139     RET_ReallyLR