[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / legalize-intrinsic-min-max.mir
bloba9968b6e8bea016b7f777bbde8f0bd177d267b60
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN:llc %s -verify-machineinstrs -mtriple=aarch64-unknown-unknown -run-pass=legalizer -global-isel-abort=1 -o - | FileCheck %s
4 ---
5 name:            smin_s32
6 alignment:       4
7 tracksRegLiveness: true
8 liveins:
9   - { reg: '$w0' }
10   - { reg: '$w1' }
11 body:             |
12   bb.1:
13     liveins: $w0, $w1
15     ; CHECK-LABEL: name: smin_s32
16     ; CHECK: liveins: $w0, $w1
17     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
18     ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
19     ; CHECK: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[COPY]](s32), [[COPY1]]
20     ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ICMP]](s32)
21     ; CHECK: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[COPY]], [[COPY1]]
22     ; CHECK: $w0 = COPY [[SELECT]](s32)
23     ; CHECK: RET_ReallyLR implicit $w0
24     %0:_(s32) = COPY $w0
25     %1:_(s32) = COPY $w1
26     %2:_(s32) = G_SMIN %0, %1
27     $w0 = COPY %2(s32)
28     RET_ReallyLR implicit $w0
30 ...
31 ---
32 name:            smin_s64
33 alignment:       4
34 tracksRegLiveness: true
35 liveins:
36   - { reg: '$x0' }
37   - { reg: '$x1' }
38 body:             |
39   bb.1:
40     liveins: $x0, $x1
42     ; CHECK-LABEL: name: smin_s64
43     ; CHECK: liveins: $x0, $x1
44     ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
45     ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
46     ; CHECK: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[COPY]](s64), [[COPY1]]
47     ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ICMP]](s32)
48     ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[TRUNC]](s1), [[COPY]], [[COPY1]]
49     ; CHECK: $x0 = COPY [[SELECT]](s64)
50     ; CHECK: RET_ReallyLR implicit $x0
51     %0:_(s64) = COPY $x0
52     %1:_(s64) = COPY $x1
53     %2:_(s64) = G_SMIN %0, %1
54     $x0 = COPY %2(s64)
55     RET_ReallyLR implicit $x0
57 ...
58 ---
59 name:            smax_s32
60 alignment:       4
61 tracksRegLiveness: true
62 liveins:
63   - { reg: '$w0' }
64   - { reg: '$w1' }
65 body:             |
66   bb.1:
67     liveins: $w0, $w1
69     ; CHECK-LABEL: name: smax_s32
70     ; CHECK: liveins: $w0, $w1
71     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
72     ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
73     ; CHECK: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(sgt), [[COPY]](s32), [[COPY1]]
74     ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ICMP]](s32)
75     ; CHECK: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[COPY]], [[COPY1]]
76     ; CHECK: $w0 = COPY [[SELECT]](s32)
77     ; CHECK: RET_ReallyLR implicit $w0
78     %0:_(s32) = COPY $w0
79     %1:_(s32) = COPY $w1
80     %2:_(s32) = G_SMAX %0, %1
81     $w0 = COPY %2(s32)
82     RET_ReallyLR implicit $w0
84 ...
85 ---
86 name:            smax_s64
87 alignment:       4
88 tracksRegLiveness: true
89 liveins:
90   - { reg: '$x0' }
91   - { reg: '$x1' }
92 body:             |
93   bb.1:
94     liveins: $x0, $x1
96     ; CHECK-LABEL: name: smax_s64
97     ; CHECK: liveins: $x0, $x1
98     ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
99     ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
100     ; CHECK: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(sgt), [[COPY]](s64), [[COPY1]]
101     ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ICMP]](s32)
102     ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[TRUNC]](s1), [[COPY]], [[COPY1]]
103     ; CHECK: $x0 = COPY [[SELECT]](s64)
104     ; CHECK: RET_ReallyLR implicit $x0
105     %0:_(s64) = COPY $x0
106     %1:_(s64) = COPY $x1
107     %2:_(s64) = G_SMAX %0, %1
108     $x0 = COPY %2(s64)
109     RET_ReallyLR implicit $x0
115 name:            umin_s32
116 alignment:       4
117 tracksRegLiveness: true
118 liveins:
119   - { reg: '$w0' }
120   - { reg: '$w1' }
121 body:             |
122   bb.1:
123     liveins: $w0, $w1
125     ; CHECK-LABEL: name: umin_s32
126     ; CHECK: liveins: $w0, $w1
127     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
128     ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
129     ; CHECK: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s32), [[COPY1]]
130     ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ICMP]](s32)
131     ; CHECK: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[COPY]], [[COPY1]]
132     ; CHECK: $w0 = COPY [[SELECT]](s32)
133     ; CHECK: RET_ReallyLR implicit $w0
134     %0:_(s32) = COPY $w0
135     %1:_(s32) = COPY $w1
136     %2:_(s32) = G_UMIN %0, %1
137     $w0 = COPY %2(s32)
138     RET_ReallyLR implicit $w0
142 name:            umin_s64
143 alignment:       4
144 tracksRegLiveness: true
145 liveins:
146   - { reg: '$x0' }
147   - { reg: '$x1' }
148 body:             |
149   bb.1:
150     liveins: $x0, $x1
152     ; CHECK-LABEL: name: umin_s64
153     ; CHECK: liveins: $x0, $x1
154     ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
155     ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
156     ; CHECK: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s64), [[COPY1]]
157     ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ICMP]](s32)
158     ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[TRUNC]](s1), [[COPY]], [[COPY1]]
159     ; CHECK: $x0 = COPY [[SELECT]](s64)
160     ; CHECK: RET_ReallyLR implicit $x0
161     %0:_(s64) = COPY $x0
162     %1:_(s64) = COPY $x1
163     %2:_(s64) = G_UMIN %0, %1
164     $x0 = COPY %2(s64)
165     RET_ReallyLR implicit $x0
169 name:            umax_s32
170 alignment:       4
171 tracksRegLiveness: true
172 liveins:
173   - { reg: '$w0' }
174   - { reg: '$w1' }
175 body:             |
176   bb.1:
177     liveins: $w0, $w1
179     ; CHECK-LABEL: name: umax_s32
180     ; CHECK: liveins: $w0, $w1
181     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w0
182     ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1
183     ; CHECK: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY]](s32), [[COPY1]]
184     ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ICMP]](s32)
185     ; CHECK: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[COPY]], [[COPY1]]
186     ; CHECK: $w0 = COPY [[SELECT]](s32)
187     ; CHECK: RET_ReallyLR implicit $w0
188     %0:_(s32) = COPY $w0
189     %1:_(s32) = COPY $w1
190     %2:_(s32) = G_UMAX %0, %1
191     $w0 = COPY %2(s32)
192     RET_ReallyLR implicit $w0
196 name:            umax_s64
197 alignment:       4
198 tracksRegLiveness: true
199 liveins:
200   - { reg: '$x0' }
201   - { reg: '$x1' }
202 body:             |
203   bb.1:
204     liveins: $x0, $x1
206     ; CHECK-LABEL: name: umax_s64
207     ; CHECK: liveins: $x0, $x1
208     ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
209     ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1
210     ; CHECK: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY]](s64), [[COPY1]]
211     ; CHECK: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[ICMP]](s32)
212     ; CHECK: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[TRUNC]](s1), [[COPY]], [[COPY1]]
213     ; CHECK: $x0 = COPY [[SELECT]](s64)
214     ; CHECK: RET_ReallyLR implicit $x0
215     %0:_(s64) = COPY $x0
216     %1:_(s64) = COPY $x1
217     %2:_(s64) = G_UMAX %0, %1
218     $x0 = COPY %2(s64)
219     RET_ReallyLR implicit $x0