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