xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx512-calling-conv.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mcpu=knl | FileCheck %s --check-prefix=ALL_X64 --check-prefix=KNL
3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mcpu=skx | FileCheck %s --check-prefix=ALL_X64 --check-prefix=SKX
4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=i686-apple-darwin9 -mcpu=knl | FileCheck %s --check-prefix=KNL_X32
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine <16 x i1> @test1() {
7*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test1:
8*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
9*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vxorps %xmm0, %xmm0, %xmm0
10*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
11*9880d681SAndroid Build Coastguard Worker;
12*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test1:
13*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
14*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpxord %xmm0, %xmm0, %xmm0
15*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
16*9880d681SAndroid Build Coastguard Worker;
17*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test1:
18*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
19*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vxorps %xmm0, %xmm0, %xmm0
20*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
21*9880d681SAndroid Build Coastguard Worker  ret <16 x i1> zeroinitializer
22*9880d681SAndroid Build Coastguard Worker}
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerdefine <16 x i1> @test2(<16 x i1>%a, <16 x i1>%b) {
25*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test2:
26*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
27*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm1, %zmm1
28*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm1, %zmm1
29*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxbd %xmm0, %zmm0
30*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
31*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm0, %zmm0, %k1
32*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmd %zmm1, %zmm1, %k1 {%k1}
33*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
34*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
35*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm0, %xmm0
36*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
37*9880d681SAndroid Build Coastguard Worker;
38*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test2:
39*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
40*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $7, %xmm1, %xmm1
41*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovb2m %xmm1, %k0
42*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $7, %xmm0, %xmm0
43*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovb2m %xmm0, %k1
44*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kandw %k0, %k1, %k0
45*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2b %k0, %xmm0
46*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
47*9880d681SAndroid Build Coastguard Worker;
48*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test2:
49*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
50*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovsxbd %xmm1, %zmm1
51*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpslld $31, %zmm1, %zmm1
52*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovsxbd %xmm0, %zmm0
53*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpslld $31, %zmm0, %zmm0
54*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vptestmd %zmm0, %zmm0, %k1
55*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vptestmd %zmm1, %zmm1, %k1 {%k1}
56*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
57*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
58*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovdb %zmm0, %xmm0
59*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
60*9880d681SAndroid Build Coastguard Worker  %c = and <16 x i1>%a, %b
61*9880d681SAndroid Build Coastguard Worker  ret <16 x i1> %c
62*9880d681SAndroid Build Coastguard Worker}
63*9880d681SAndroid Build Coastguard Worker
64*9880d681SAndroid Build Coastguard Workerdefine <8 x i1> @test3(<8 x i1>%a, <8 x i1>%b) {
65*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test3:
66*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
67*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwq %xmm1, %zmm1
68*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $63, %zmm1, %zmm1
69*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwq %xmm0, %zmm0
70*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $63, %zmm0, %zmm0
71*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmq %zmm0, %zmm0, %k1
72*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmq %zmm1, %zmm1, %k1 {%k1}
73*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
74*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
75*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovqw %zmm0, %xmm0
76*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
77*9880d681SAndroid Build Coastguard Worker;
78*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test3:
79*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
80*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $15, %xmm1, %xmm1
81*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovw2m %xmm1, %k0
82*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $15, %xmm0, %xmm0
83*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovw2m %xmm0, %k1
84*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kandb %k0, %k1, %k0
85*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2w %k0, %xmm0
86*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
87*9880d681SAndroid Build Coastguard Worker;
88*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test3:
89*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
90*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovsxwq %xmm1, %zmm1
91*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vmovdqa64 {{.*#+}} zmm2 = [63,0,63,0,63,0,63,0,63,0,63,0,63,0,63,0]
92*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpsllvq %zmm2, %zmm1, %zmm1
93*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovsxwq %xmm0, %zmm0
94*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpsllvq %zmm2, %zmm0, %zmm0
95*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vptestmq %zmm0, %zmm0, %k1
96*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vptestmq %zmm1, %zmm1, %k1 {%k1}
97*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
98*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
99*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovqw %zmm0, %xmm0
100*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
101*9880d681SAndroid Build Coastguard Worker  %c = and <8 x i1>%a, %b
102*9880d681SAndroid Build Coastguard Worker  ret <8 x i1> %c
103*9880d681SAndroid Build Coastguard Worker}
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Workerdefine <4 x i1> @test4(<4 x i1>%a, <4 x i1>%b) {
106*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test4:
107*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
108*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vandps %xmm1, %xmm0, %xmm0
109*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
110*9880d681SAndroid Build Coastguard Worker;
111*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test4:
112*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
113*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpslld $31, %xmm1, %xmm1
114*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpslld $31, %xmm0, %xmm0
115*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vptestmd %xmm0, %xmm0, %k1
116*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vptestmd %xmm1, %xmm1, %k0 {%k1}
117*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2d %k0, %xmm0
118*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
119*9880d681SAndroid Build Coastguard Worker;
120*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test4:
121*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
122*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vandps %xmm1, %xmm0, %xmm0
123*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
124*9880d681SAndroid Build Coastguard Worker  %c = and <4 x i1>%a, %b
125*9880d681SAndroid Build Coastguard Worker  ret <4 x i1> %c
126*9880d681SAndroid Build Coastguard Worker}
127*9880d681SAndroid Build Coastguard Worker
128*9880d681SAndroid Build Coastguard Workerdeclare <8 x i1> @func8xi1(<8 x i1> %a)
129*9880d681SAndroid Build Coastguard Worker
130*9880d681SAndroid Build Coastguard Workerdefine <8 x i32> @test5(<8 x i32>%a, <8 x i32>%b) {
131*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test5:
132*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
133*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %rax
134*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp0:
135*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 16
136*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
137*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdw %zmm0, %ymm0
138*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
139*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    callq _func8xi1
140*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
141*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %ymm0, %ymm0
142*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrad $31, %ymm0, %ymm0
143*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %rax
144*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
145*9880d681SAndroid Build Coastguard Worker;
146*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test5:
147*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
148*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    pushq %rax
149*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  Ltmp0:
150*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    .cfi_def_cfa_offset 16
151*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtd %ymm1, %ymm0, %k0
152*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2w %k0, %xmm0
153*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    callq _func8xi1
154*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
155*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpslld $31, %ymm0, %ymm0
156*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsrad $31, %ymm0, %ymm0
157*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    popq %rax
158*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
159*9880d681SAndroid Build Coastguard Worker;
160*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test5:
161*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
162*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    subl $12, %esp
163*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  Ltmp0:
164*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
165*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
166*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovdw %zmm0, %ymm0
167*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
168*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    calll _func8xi1
169*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
170*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpslld $31, %ymm0, %ymm0
171*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpsrad $31, %ymm0, %ymm0
172*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    addl $12, %esp
173*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
174*9880d681SAndroid Build Coastguard Worker  %cmpRes = icmp sgt <8 x i32>%a, %b
175*9880d681SAndroid Build Coastguard Worker  %resi = call <8 x i1> @func8xi1(<8 x i1> %cmpRes)
176*9880d681SAndroid Build Coastguard Worker  %res = sext <8 x i1>%resi to <8 x i32>
177*9880d681SAndroid Build Coastguard Worker  ret <8 x i32> %res
178*9880d681SAndroid Build Coastguard Worker}
179*9880d681SAndroid Build Coastguard Worker
180*9880d681SAndroid Build Coastguard Workerdeclare <16 x i1> @func16xi1(<16 x i1> %a)
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Workerdefine <16 x i32> @test6(<16 x i32>%a, <16 x i32>%b) {
183*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test6:
184*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
185*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %rax
186*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp1:
187*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 16
188*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtd %zmm1, %zmm0, %k1
189*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
190*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
191*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdb %zmm0, %xmm0
192*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    callq _func16xi1
193*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero
194*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %zmm0, %zmm0
195*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrad $31, %zmm0, %zmm0
196*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %rax
197*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
198*9880d681SAndroid Build Coastguard Worker;
199*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test6:
200*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
201*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    pushq %rax
202*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  Ltmp1:
203*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    .cfi_def_cfa_offset 16
204*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtd %zmm1, %zmm0, %k0
205*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2b %k0, %xmm0
206*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    callq _func16xi1
207*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero
208*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpslld $31, %zmm0, %zmm0
209*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsrad $31, %zmm0, %zmm0
210*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    popq %rax
211*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
212*9880d681SAndroid Build Coastguard Worker;
213*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test6:
214*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
215*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    subl $12, %esp
216*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  Ltmp1:
217*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
218*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpcmpgtd %zmm1, %zmm0, %k1
219*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
220*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vmovdqa32 %zmm0, %zmm0 {%k1} {z}
221*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovdb %zmm0, %xmm0
222*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    calll _func16xi1
223*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero,xmm0[4],zero,zero,zero,xmm0[5],zero,zero,zero,xmm0[6],zero,zero,zero,xmm0[7],zero,zero,zero,xmm0[8],zero,zero,zero,xmm0[9],zero,zero,zero,xmm0[10],zero,zero,zero,xmm0[11],zero,zero,zero,xmm0[12],zero,zero,zero,xmm0[13],zero,zero,zero,xmm0[14],zero,zero,zero,xmm0[15],zero,zero,zero
224*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpslld $31, %zmm0, %zmm0
225*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpsrad $31, %zmm0, %zmm0
226*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    addl $12, %esp
227*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
228*9880d681SAndroid Build Coastguard Worker  %cmpRes = icmp sgt <16 x i32>%a, %b
229*9880d681SAndroid Build Coastguard Worker  %resi = call <16 x i1> @func16xi1(<16 x i1> %cmpRes)
230*9880d681SAndroid Build Coastguard Worker  %res = sext <16 x i1>%resi to <16 x i32>
231*9880d681SAndroid Build Coastguard Worker  ret <16 x i32> %res
232*9880d681SAndroid Build Coastguard Worker}
233*9880d681SAndroid Build Coastguard Worker
234*9880d681SAndroid Build Coastguard Workerdeclare <4 x i1> @func4xi1(<4 x i1> %a)
235*9880d681SAndroid Build Coastguard Worker
236*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test7(<4 x i32>%a, <4 x i32>%b) {
237*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test7:
238*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
239*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %rax
240*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp2:
241*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 16
242*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0
243*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    callq _func4xi1
244*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpslld $31, %xmm0, %xmm0
245*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsrad $31, %xmm0, %xmm0
246*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %rax
247*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
248*9880d681SAndroid Build Coastguard Worker;
249*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test7:
250*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
251*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    pushq %rax
252*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  Ltmp2:
253*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    .cfi_def_cfa_offset 16
254*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtd %xmm1, %xmm0, %k0
255*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2d %k0, %xmm0
256*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    callq _func4xi1
257*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpslld $31, %xmm0, %xmm0
258*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsrad $31, %xmm0, %xmm0
259*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    popq %rax
260*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
261*9880d681SAndroid Build Coastguard Worker;
262*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test7:
263*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
264*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    subl $12, %esp
265*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  Ltmp2:
266*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
267*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpcmpgtd %xmm1, %xmm0, %xmm0
268*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    calll _func4xi1
269*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpslld $31, %xmm0, %xmm0
270*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpsrad $31, %xmm0, %xmm0
271*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    addl $12, %esp
272*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
273*9880d681SAndroid Build Coastguard Worker  %cmpRes = icmp sgt <4 x i32>%a, %b
274*9880d681SAndroid Build Coastguard Worker  %resi = call <4 x i1> @func4xi1(<4 x i1> %cmpRes)
275*9880d681SAndroid Build Coastguard Worker  %res = sext <4 x i1>%resi to <4 x i32>
276*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
277*9880d681SAndroid Build Coastguard Worker}
278*9880d681SAndroid Build Coastguard Worker
279*9880d681SAndroid Build Coastguard Workerdefine <8 x i1> @test7a(<8 x i32>%a, <8 x i32>%b) {
280*9880d681SAndroid Build Coastguard Worker; KNL-LABEL: test7a:
281*9880d681SAndroid Build Coastguard Worker; KNL:       ## BB#0:
282*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    pushq %rax
283*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:  Ltmp3:
284*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    .cfi_def_cfa_offset 16
285*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
286*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovdw %zmm0, %ymm0
287*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
288*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    callq _func8xi1
289*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovsxwq %xmm0, %zmm0
290*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpsllq $63, %zmm0, %zmm0
291*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    movb $85, %al
292*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    kmovw %eax, %k1
293*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vptestmq %zmm0, %zmm0, %k1 {%k1}
294*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
295*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
296*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    vpmovqw %zmm0, %xmm0
297*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    popq %rax
298*9880d681SAndroid Build Coastguard Worker; KNL-NEXT:    retq
299*9880d681SAndroid Build Coastguard Worker;
300*9880d681SAndroid Build Coastguard Worker; SKX-LABEL: test7a:
301*9880d681SAndroid Build Coastguard Worker; SKX:       ## BB#0:
302*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    pushq %rax
303*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:  Ltmp3:
304*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    .cfi_def_cfa_offset 16
305*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpcmpgtd %ymm1, %ymm0, %k0
306*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2w %k0, %xmm0
307*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    callq _func8xi1
308*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpsllw $15, %xmm0, %xmm0
309*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovw2m %xmm0, %k0
310*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    movb $85, %al
311*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kmovb %eax, %k1
312*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    kandb %k1, %k0, %k0
313*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    vpmovm2w %k0, %xmm0
314*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    popq %rax
315*9880d681SAndroid Build Coastguard Worker; SKX-NEXT:    retq
316*9880d681SAndroid Build Coastguard Worker;
317*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test7a:
318*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
319*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    subl $12, %esp
320*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  Ltmp3:
321*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
322*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpcmpgtd %ymm1, %ymm0, %ymm0
323*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovdw %zmm0, %ymm0
324*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    ## kill: %XMM0<def> %XMM0<kill> %YMM0<kill>
325*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    calll _func8xi1
326*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovsxwq %xmm0, %zmm0
327*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpsllvq LCPI7_0, %zmm0, %zmm0
328*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movb $85, %al
329*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    kmovw %eax, %k1
330*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vptestmq %zmm0, %zmm0, %k1 {%k1}
331*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
332*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vmovdqa64 %zmm0, %zmm0 {%k1} {z}
333*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vpmovqw %zmm0, %xmm0
334*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    addl $12, %esp
335*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
336*9880d681SAndroid Build Coastguard Worker  %cmpRes = icmp sgt <8 x i32>%a, %b
337*9880d681SAndroid Build Coastguard Worker  %resi = call <8 x i1> @func8xi1(<8 x i1> %cmpRes)
338*9880d681SAndroid Build Coastguard Worker  %res = and <8 x i1>%resi,  <i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false>
339*9880d681SAndroid Build Coastguard Worker  ret <8 x i1> %res
340*9880d681SAndroid Build Coastguard Worker}
341*9880d681SAndroid Build Coastguard Worker
342*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test8(<16 x i8> %a1, <16 x i8> %a2, i1 %cond) {
343*9880d681SAndroid Build Coastguard Worker; ALL_X64-LABEL: test8:
344*9880d681SAndroid Build Coastguard Worker; ALL_X64:       ## BB#0:
345*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    testb $1, %dil
346*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    jne LBB8_2
347*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:  ## BB#1:
348*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    vmovaps %zmm1, %zmm0
349*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:  LBB8_2:
350*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    retq
351*9880d681SAndroid Build Coastguard Worker;
352*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test8:
353*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
354*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    testb $1, {{[0-9]+}}(%esp)
355*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    jne LBB8_2
356*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  ## BB#1:
357*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vmovaps %zmm1, %zmm0
358*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  LBB8_2:
359*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
360*9880d681SAndroid Build Coastguard Worker  %res = select i1 %cond, <16 x i8> %a1, <16 x i8> %a2
361*9880d681SAndroid Build Coastguard Worker  ret <16 x i8> %res
362*9880d681SAndroid Build Coastguard Worker}
363*9880d681SAndroid Build Coastguard Worker
364*9880d681SAndroid Build Coastguard Workerdefine i1 @test9(double %a, double %b) {
365*9880d681SAndroid Build Coastguard Worker; ALL_X64-LABEL: test9:
366*9880d681SAndroid Build Coastguard Worker; ALL_X64:       ## BB#0:
367*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    vucomisd %xmm0, %xmm1
368*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    setb %al
369*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    retq
370*9880d681SAndroid Build Coastguard Worker;
371*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test9:
372*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
373*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vmovsd {{.*#+}} xmm0 = mem[0],zero
374*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    vucomisd {{[0-9]+}}(%esp), %xmm0
375*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    setb %al
376*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
377*9880d681SAndroid Build Coastguard Worker  %c = fcmp ugt double %a, %b
378*9880d681SAndroid Build Coastguard Worker  ret i1 %c
379*9880d681SAndroid Build Coastguard Worker}
380*9880d681SAndroid Build Coastguard Worker
381*9880d681SAndroid Build Coastguard Workerdefine i32 @test10(i32 %a, i32 %b, i1 %cond) {
382*9880d681SAndroid Build Coastguard Worker; ALL_X64-LABEL: test10:
383*9880d681SAndroid Build Coastguard Worker; ALL_X64:       ## BB#0:
384*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    testb $1, %dl
385*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    cmovel %esi, %edi
386*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    movl %edi, %eax
387*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    retq
388*9880d681SAndroid Build Coastguard Worker;
389*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test10:
390*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
391*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    testb $1, {{[0-9]+}}(%esp)
392*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    leal {{[0-9]+}}(%esp), %eax
393*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    leal {{[0-9]+}}(%esp), %ecx
394*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    cmovnel %eax, %ecx
395*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movl (%ecx), %eax
396*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
397*9880d681SAndroid Build Coastguard Worker  %c = select i1 %cond, i32 %a, i32 %b
398*9880d681SAndroid Build Coastguard Worker  ret i32 %c
399*9880d681SAndroid Build Coastguard Worker}
400*9880d681SAndroid Build Coastguard Worker
401*9880d681SAndroid Build Coastguard Workerdefine i1 @test11(i32 %a, i32 %b) {
402*9880d681SAndroid Build Coastguard Worker; ALL_X64-LABEL: test11:
403*9880d681SAndroid Build Coastguard Worker; ALL_X64:       ## BB#0:
404*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    cmpl %esi, %edi
405*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    setg %al
406*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    retq
407*9880d681SAndroid Build Coastguard Worker;
408*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test11:
409*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
410*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
411*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
412*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    setg %al
413*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
414*9880d681SAndroid Build Coastguard Worker  %c = icmp sgt i32 %a, %b
415*9880d681SAndroid Build Coastguard Worker  ret i1 %c
416*9880d681SAndroid Build Coastguard Worker}
417*9880d681SAndroid Build Coastguard Worker
418*9880d681SAndroid Build Coastguard Workerdefine i32 @test12(i32 %a1, i32 %a2, i32 %b1) {
419*9880d681SAndroid Build Coastguard Worker; ALL_X64-LABEL: test12:
420*9880d681SAndroid Build Coastguard Worker; ALL_X64:       ## BB#0:
421*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    pushq %rbp
422*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:  Ltmp4:
423*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    .cfi_def_cfa_offset 16
424*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    pushq %r14
425*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:  Ltmp5:
426*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    .cfi_def_cfa_offset 24
427*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    pushq %rbx
428*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:  Ltmp6:
429*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    .cfi_def_cfa_offset 32
430*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:  Ltmp7:
431*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    .cfi_offset %rbx, -32
432*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:  Ltmp8:
433*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    .cfi_offset %r14, -24
434*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:  Ltmp9:
435*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    .cfi_offset %rbp, -16
436*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    movl %esi, %r14d
437*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    movl %edi, %ebp
438*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    movl %edx, %esi
439*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    callq _test11
440*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    movzbl %al, %ebx
441*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    movl %ebp, %edi
442*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    movl %r14d, %esi
443*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    movl %ebx, %edx
444*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    callq _test10
445*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    xorl %ecx, %ecx
446*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    testb $1, %bl
447*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    cmovel %ecx, %eax
448*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    popq %rbx
449*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    popq %r14
450*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    popq %rbp
451*9880d681SAndroid Build Coastguard Worker; ALL_X64-NEXT:    retq
452*9880d681SAndroid Build Coastguard Worker;
453*9880d681SAndroid Build Coastguard Worker; KNL_X32-LABEL: test12:
454*9880d681SAndroid Build Coastguard Worker; KNL_X32:       ## BB#0:
455*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    pushl %ebx
456*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  Ltmp4:
457*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    .cfi_def_cfa_offset 8
458*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    pushl %edi
459*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  Ltmp5:
460*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    .cfi_def_cfa_offset 12
461*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    pushl %esi
462*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  Ltmp6:
463*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    .cfi_def_cfa_offset 16
464*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    subl $16, %esp
465*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  Ltmp7:
466*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    .cfi_def_cfa_offset 32
467*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  Ltmp8:
468*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    .cfi_offset %esi, -16
469*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  Ltmp9:
470*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    .cfi_offset %edi, -12
471*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:  Ltmp10:
472*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    .cfi_offset %ebx, -8
473*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %esi
474*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %edi
475*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
476*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
477*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movl %edi, (%esp)
478*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    calll _test11
479*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movl %eax, %ebx
480*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movzbl %bl, %eax
481*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movl %eax, {{[0-9]+}}(%esp)
482*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movl %esi, {{[0-9]+}}(%esp)
483*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    movl %edi, (%esp)
484*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    calll _test10
485*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    xorl %ecx, %ecx
486*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    testb $1, %bl
487*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    cmovel %ecx, %eax
488*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    addl $16, %esp
489*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    popl %esi
490*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    popl %edi
491*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    popl %ebx
492*9880d681SAndroid Build Coastguard Worker; KNL_X32-NEXT:    retl
493*9880d681SAndroid Build Coastguard Worker  %cond = call i1 @test11(i32 %a1, i32 %b1)
494*9880d681SAndroid Build Coastguard Worker  %res = call i32 @test10(i32 %a1, i32 %a2, i1 %cond)
495*9880d681SAndroid Build Coastguard Worker  %res1 = select i1 %cond, i32 %res, i32 0
496*9880d681SAndroid Build Coastguard Worker  ret i32 %res1
497*9880d681SAndroid Build Coastguard Worker}
498