[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-cbz.mir
blobf7b78b1e0f09474175da85cfe8db54101938f244
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
4 ---
5 name:            cbz_s32
6 legalized:       true
7 regBankSelected: true
9 body:             |
10   ; CHECK-LABEL: name: cbz_s32
11   ; CHECK: bb.0:
12   ; CHECK:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
13   ; CHECK:   [[COPY:%[0-9]+]]:gpr32 = COPY $w0
14   ; CHECK:   CBZW [[COPY]], %bb.1
15   ; CHECK:   B %bb.0
16   ; CHECK: bb.1:
17   bb.0:
18     liveins: $w0
19     successors: %bb.0, %bb.1
21     %0:gpr(s32) = COPY $w0
22     %1:gpr(s32) = G_CONSTANT i32 0
23     %2:gpr(s32) = G_ICMP intpred(eq), %0, %1
24     %3:gpr(s1) = G_TRUNC %2(s32)
25     G_BRCOND %3(s1), %bb.1
26     G_BR %bb.0
28   bb.1:
29 ...
31 ---
32 name:            cbz_s64
33 legalized:       true
34 regBankSelected: true
36 body:             |
37   ; CHECK-LABEL: name: cbz_s64
38   ; CHECK: bb.0:
39   ; CHECK:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
40   ; CHECK:   [[COPY:%[0-9]+]]:gpr64 = COPY $x0
41   ; CHECK:   CBZX [[COPY]], %bb.1
42   ; CHECK:   B %bb.0
43   ; CHECK: bb.1:
44   bb.0:
45     liveins: $x0
46     successors: %bb.0, %bb.1
48     %0:gpr(s64) = COPY $x0
49     %1:gpr(s64) = G_CONSTANT i64 0
50     %2:gpr(s32) = G_ICMP intpred(eq), %0, %1
51     %3:gpr(s1) = G_TRUNC %2(s32)
52     G_BRCOND %3(s1), %bb.1
53     G_BR %bb.0
55   bb.1:
56 ...
58 ---
59 name:            cbnz_s32
60 legalized:       true
61 regBankSelected: true
63 body:             |
64   ; CHECK-LABEL: name: cbnz_s32
65   ; CHECK: bb.0:
66   ; CHECK:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
67   ; CHECK:   [[COPY:%[0-9]+]]:gpr32 = COPY $w0
68   ; CHECK:   CBNZW [[COPY]], %bb.1
69   ; CHECK:   B %bb.0
70   ; CHECK: bb.1:
71   bb.0:
72     liveins: $w0
73     successors: %bb.0, %bb.1
75     %0:gpr(s32) = COPY $w0
76     %1:gpr(s32) = G_CONSTANT i32 0
77     %2:gpr(s32) = G_ICMP intpred(ne), %0, %1
78     %3:gpr(s1) = G_TRUNC %2(s32)
79     G_BRCOND %3(s1), %bb.1
80     G_BR %bb.0
82   bb.1:
83 ...
85 ---
86 name:            cbnz_s64
87 legalized:       true
88 regBankSelected: true
90 body:             |
91   ; CHECK-LABEL: name: cbnz_s64
92   ; CHECK: bb.0:
93   ; CHECK:   successors: %bb.0(0x40000000), %bb.1(0x40000000)
94   ; CHECK:   [[COPY:%[0-9]+]]:gpr64 = COPY $x0
95   ; CHECK:   CBNZX [[COPY]], %bb.1
96   ; CHECK:   B %bb.0
97   ; CHECK: bb.1:
98   bb.0:
99     liveins: $x0
100     successors: %bb.0, %bb.1
102     %0:gpr(s64) = COPY $x0
103     %1:gpr(s64) = G_CONSTANT i64 0
104     %2:gpr(s32) = G_ICMP intpred(ne), %0, %1
105     %3:gpr(s1) = G_TRUNC %2(s32)
106     G_BRCOND %3(s1), %bb.1
107     G_BR %bb.0
109   bb.1:
112 name:            test_rhs_inttoptr
113 alignment:       4
114 legalized:       true
115 regBankSelected: true
116 tracksRegLiveness: true
117 body:             |
118   ; CHECK-LABEL: name: test_rhs_inttoptr
119   ; CHECK: bb.0:
120   ; CHECK:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
121   ; CHECK:   liveins: $x0
122   ; CHECK:   [[COPY:%[0-9]+]]:gpr64common = COPY $x0
123   ; CHECK:   CBZX [[COPY]], %bb.2
124   ; CHECK: bb.1:
125   ; CHECK:   successors: %bb.2(0x80000000)
126   ; CHECK:   STRXui $xzr, [[COPY]], 0 :: (store (s64))
127   ; CHECK: bb.2:
128   ; CHECK:   RET_ReallyLR
129   bb.1:
130     successors: %bb.2, %bb.3
131     liveins: $x0
133     %0:gpr(p0) = COPY $x0
134     %2:gpr(s64) = G_CONSTANT i64 0
135     %1:gpr(p0) = G_INTTOPTR %2(s64)
136     %4:gpr(s32) = G_ICMP intpred(eq), %0(p0), %1
137     %3:gpr(s1) = G_TRUNC %4(s32)
138     G_BRCOND %3(s1), %bb.3
140   bb.2:
141     %5:gpr(s64) = G_CONSTANT i64 0
142     G_STORE %5(s64), %0(p0) :: (store (s64))
144   bb.3:
145     RET_ReallyLR
149 name:            test_rhs_unknown
150 alignment:       4
151 legalized:       true
152 regBankSelected: true
153 tracksRegLiveness: true
154 body:             |
155   ; CHECK-LABEL: name: test_rhs_unknown
156   ; CHECK: bb.0:
157   ; CHECK:   successors: %bb.1(0x40000000), %bb.2(0x40000000)
158   ; CHECK:   liveins: $x0
159   ; CHECK:   [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
160   ; CHECK:   [[LDRXui:%[0-9]+]]:gpr64common = LDRXui [[COPY]], 0 :: (load (s64))
161   ; CHECK:   [[SUBSXri:%[0-9]+]]:gpr64 = SUBSXri [[LDRXui]], 42, 0, implicit-def $nzcv
162   ; CHECK:   Bcc 0, %bb.2, implicit $nzcv
163   ; CHECK: bb.1:
164   ; CHECK:   successors: %bb.2(0x80000000)
165   ; CHECK:   STRXui $xzr, [[COPY]], 0 :: (store (s64))
166   ; CHECK: bb.2:
167   ; CHECK:   RET_ReallyLR
168   bb.1:
169     successors: %bb.2, %bb.3
170     liveins: $x0
172     %0:gpr(p0) = COPY $x0
173     %2:gpr(s64) = G_CONSTANT i64 42
174     %4:gpr(s64) = G_CONSTANT i64 0
175     %1:gpr(s64) = G_LOAD %0(p0) :: (load (s64))
176     %5:gpr(s32) = G_ICMP intpred(eq), %1(s64), %2
177     %3:gpr(s1) = G_TRUNC %5(s32)
178     G_BRCOND %3(s1), %bb.3
180   bb.2:
181     %6:gpr(s64) = G_CONSTANT i64 0
182     G_STORE %6(s64), %0(p0) :: (store (s64))
184   bb.3:
185     RET_ReallyLR