[ARM] Adjust how NEON shifts are lowered
[llvm-core.git] / test / CodeGen / X86 / GlobalISel / legalize-cmp.mir
blob055ff77f1dac3df77cfc73c5c917a24fea8fe574
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s
4 --- |
5   define i32 @test_cmp_i8(i8 %a, i8 %b) {
6     %r = icmp ult i8 %a, %b
7     %res = zext i1 %r to i32
8     ret i32 %res
9   }
11   define i32 @test_cmp_i16(i16 %a, i16 %b) {
12     %r = icmp ult i16 %a, %b
13     %res = zext i1 %r to i32
14     ret i32 %res
15   }
17   define i32 @test_cmp_i32(i32 %a, i32 %b) {
18     %r = icmp ult i32 %a, %b
19     %res = zext i1 %r to i32
20     ret i32 %res
21   }
23   define i32 @test_cmp_i64(i64 %a, i64 %b) {
24     %r = icmp ult i64 %a, %b
25     %res = zext i1 %r to i32
26     ret i32 %res
27   }
29   define i32 @test_cmp_p0(i32* %a, i32* %b) {
30     %r = icmp ult i32* %a, %b
31     %res = zext i1 %r to i32
32     ret i32 %res
33   }
35 ...
36 ---
37 name:            test_cmp_i8
38 alignment:       4
39 legalized:       false
40 regBankSelected: false
41 registers:
42   - { id: 0, class: _ }
43   - { id: 1, class: _ }
44   - { id: 2, class: _ }
45   - { id: 3, class: _ }
46 body:             |
47   bb.1 (%ir-block.0):
48     liveins: $edi, $esi
50     ; CHECK-LABEL: name: test_cmp_i8
51     ; CHECK: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
52     ; CHECK: [[COPY1:%[0-9]+]]:_(s8) = COPY $sil
53     ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ult), [[COPY]](s8), [[COPY1]]
54     ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[ICMP]](s1)
55     ; CHECK: $eax = COPY [[ZEXT]](s32)
56     ; CHECK: RET 0, implicit $eax
57     %0(s8) = COPY $dil
58     %1(s8) = COPY $sil
59     %2(s1) = G_ICMP intpred(ult), %0(s8), %1
60     %3(s32) = G_ZEXT %2(s1)
61     $eax = COPY %3(s32)
62     RET 0, implicit $eax
64 ...
65 ---
66 name:            test_cmp_i16
67 alignment:       4
68 legalized:       false
69 regBankSelected: false
70 registers:
71   - { id: 0, class: _ }
72   - { id: 1, class: _ }
73   - { id: 2, class: _ }
74   - { id: 3, class: _ }
75 body:             |
76   bb.1 (%ir-block.0):
77     liveins: $edi, $esi
79     ; CHECK-LABEL: name: test_cmp_i16
80     ; CHECK: [[COPY:%[0-9]+]]:_(s16) = COPY $di
81     ; CHECK: [[COPY1:%[0-9]+]]:_(s16) = COPY $si
82     ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ult), [[COPY]](s16), [[COPY1]]
83     ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[ICMP]](s1)
84     ; CHECK: $eax = COPY [[ZEXT]](s32)
85     ; CHECK: RET 0, implicit $eax
86     %0(s16) = COPY $di
87     %1(s16) = COPY $si
88     %2(s1) = G_ICMP intpred(ult), %0(s16), %1
89     %3(s32) = G_ZEXT %2(s1)
90     $eax = COPY %3(s32)
91     RET 0, implicit $eax
93 ...
94 ---
95 name:            test_cmp_i32
96 alignment:       4
97 legalized:       false
98 regBankSelected: false
99 registers:
100   - { id: 0, class: _ }
101   - { id: 1, class: _ }
102   - { id: 2, class: _ }
103   - { id: 3, class: _ }
104 body:             |
105   bb.1 (%ir-block.0):
106     liveins: $edi, $esi
108     ; CHECK-LABEL: name: test_cmp_i32
109     ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
110     ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $esi
111     ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ult), [[COPY]](s32), [[COPY1]]
112     ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[ICMP]](s1)
113     ; CHECK: $eax = COPY [[ZEXT]](s32)
114     ; CHECK: RET 0, implicit $eax
115     %0(s32) = COPY $edi
116     %1(s32) = COPY $esi
117     %2(s1) = G_ICMP intpred(ult), %0(s32), %1
118     %3(s32) = G_ZEXT %2(s1)
119     $eax = COPY %3(s32)
120     RET 0, implicit $eax
124 name:            test_cmp_i64
125 alignment:       4
126 legalized:       false
127 regBankSelected: false
128 registers:
129   - { id: 0, class: _ }
130   - { id: 1, class: _ }
131   - { id: 2, class: _ }
132   - { id: 3, class: _ }
133 body:             |
134   bb.1 (%ir-block.0):
135     liveins: $rdi, $rsi
137     ; CHECK-LABEL: name: test_cmp_i64
138     ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $rdi
139     ; CHECK: [[COPY1:%[0-9]+]]:_(s64) = COPY $rsi
140     ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ult), [[COPY]](s64), [[COPY1]]
141     ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[ICMP]](s1)
142     ; CHECK: $eax = COPY [[ZEXT]](s32)
143     ; CHECK: RET 0, implicit $eax
144     %0(s64) = COPY $rdi
145     %1(s64) = COPY $rsi
146     %2(s1) = G_ICMP intpred(ult), %0(s64), %1
147     %3(s32) = G_ZEXT %2(s1)
148     $eax = COPY %3(s32)
149     RET 0, implicit $eax
153 name:            test_cmp_p0
154 alignment:       4
155 legalized:       false
156 regBankSelected: false
157 registers:
158   - { id: 0, class: _ }
159   - { id: 1, class: _ }
160   - { id: 2, class: _ }
161   - { id: 3, class: _ }
162 body:             |
163   bb.1 (%ir-block.0):
164     liveins: $rdi, $rsi
166     ; CHECK-LABEL: name: test_cmp_p0
167     ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $rdi
168     ; CHECK: [[COPY1:%[0-9]+]]:_(p0) = COPY $rsi
169     ; CHECK: [[ICMP:%[0-9]+]]:_(s1) = G_ICMP intpred(ult), [[COPY]](p0), [[COPY1]]
170     ; CHECK: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[ICMP]](s1)
171     ; CHECK: $eax = COPY [[ZEXT]](s32)
172     ; CHECK: RET 0, implicit $eax
173     %0(p0) = COPY $rdi
174     %1(p0) = COPY $rsi
175     %2(s1) = G_ICMP intpred(ult), %0(p0), %1
176     %3(s32) = G_ZEXT %2(s1)
177     $eax = COPY %3(s32)
178     RET 0, implicit $eax