4164 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mcpu=knl | FileCheck %s --check-prefix=ALL_X64 --check-prefix=KNL3; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mcpu=skx | FileCheck %s --check-prefix=ALL_X64 --check-prefix=SKX4; RUN: llc < %s -mtriple=i686-apple-darwin9 -mcpu=knl | FileCheck %s --check-prefix=KNL_X325; RUN: llc < %s -mtriple=x86_64-apple-darwin9 -mcpu=skx -fast-isel | FileCheck %s --check-prefix=FASTISEL6 7define <16 x i1> @test1() {8; ALL_X64-LABEL: test1:9; ALL_X64: ## %bb.0:10; ALL_X64-NEXT: vxorps %xmm0, %xmm0, %xmm011; ALL_X64-NEXT: retq12;13; KNL_X32-LABEL: test1:14; KNL_X32: ## %bb.0:15; KNL_X32-NEXT: vxorps %xmm0, %xmm0, %xmm016; KNL_X32-NEXT: retl17;18; FASTISEL-LABEL: test1:19; FASTISEL: ## %bb.0:20; FASTISEL-NEXT: vxorps %xmm0, %xmm0, %xmm021; FASTISEL-NEXT: retq22 ret <16 x i1> zeroinitializer23}24 25define <16 x i1> @test2(<16 x i1>%a, <16 x i1>%b) {26; ALL_X64-LABEL: test2:27; ALL_X64: ## %bb.0:28; ALL_X64-NEXT: vandps %xmm1, %xmm0, %xmm029; ALL_X64-NEXT: retq30;31; KNL_X32-LABEL: test2:32; KNL_X32: ## %bb.0:33; KNL_X32-NEXT: vandps %xmm1, %xmm0, %xmm034; KNL_X32-NEXT: retl35;36; FASTISEL-LABEL: test2:37; FASTISEL: ## %bb.0:38; FASTISEL-NEXT: vpsllw $7, %xmm1, %xmm139; FASTISEL-NEXT: vpmovb2m %xmm1, %k040; FASTISEL-NEXT: vpsllw $7, %xmm0, %xmm041; FASTISEL-NEXT: vpmovb2m %xmm0, %k142; FASTISEL-NEXT: kandw %k0, %k1, %k043; FASTISEL-NEXT: vpmovm2b %k0, %xmm044; FASTISEL-NEXT: retq45 %c = and <16 x i1>%a, %b46 ret <16 x i1> %c47}48 49define <8 x i1> @test3(<8 x i1>%a, <8 x i1>%b) {50; ALL_X64-LABEL: test3:51; ALL_X64: ## %bb.0:52; ALL_X64-NEXT: vandps %xmm1, %xmm0, %xmm053; ALL_X64-NEXT: retq54;55; KNL_X32-LABEL: test3:56; KNL_X32: ## %bb.0:57; KNL_X32-NEXT: vandps %xmm1, %xmm0, %xmm058; KNL_X32-NEXT: retl59;60; FASTISEL-LABEL: test3:61; FASTISEL: ## %bb.0:62; FASTISEL-NEXT: vpsllw $15, %xmm1, %xmm163; FASTISEL-NEXT: vpmovw2m %xmm1, %k064; FASTISEL-NEXT: vpsllw $15, %xmm0, %xmm065; FASTISEL-NEXT: vpmovw2m %xmm0, %k166; FASTISEL-NEXT: kandb %k0, %k1, %k067; FASTISEL-NEXT: vpmovm2w %k0, %xmm068; FASTISEL-NEXT: retq69 %c = and <8 x i1>%a, %b70 ret <8 x i1> %c71}72 73define <4 x i1> @test4(<4 x i1>%a, <4 x i1>%b) {74; ALL_X64-LABEL: test4:75; ALL_X64: ## %bb.0:76; ALL_X64-NEXT: vandps %xmm1, %xmm0, %xmm077; ALL_X64-NEXT: retq78;79; KNL_X32-LABEL: test4:80; KNL_X32: ## %bb.0:81; KNL_X32-NEXT: vandps %xmm1, %xmm0, %xmm082; KNL_X32-NEXT: retl83;84; FASTISEL-LABEL: test4:85; FASTISEL: ## %bb.0:86; FASTISEL-NEXT: vpslld $31, %xmm1, %xmm187; FASTISEL-NEXT: vpmovd2m %xmm1, %k088; FASTISEL-NEXT: vpslld $31, %xmm0, %xmm089; FASTISEL-NEXT: vpmovd2m %xmm0, %k190; FASTISEL-NEXT: kandw %k0, %k1, %k091; FASTISEL-NEXT: vpmovm2d %k0, %xmm092; FASTISEL-NEXT: retq93 %c = and <4 x i1>%a, %b94 ret <4 x i1> %c95}96 97declare <8 x i1> @func8xi1(<8 x i1> %a)98 99define <8 x i32> @test5(<8 x i32>%a, <8 x i32>%b) {100; KNL-LABEL: test5:101; KNL: ## %bb.0:102; KNL-NEXT: pushq %rax103; KNL-NEXT: .cfi_def_cfa_offset 16104; KNL-NEXT: vpcmpgtd %ymm1, %ymm0, %ymm0105; KNL-NEXT: vpmovdw %zmm0, %ymm0106; KNL-NEXT: ## kill: def $xmm0 killed $xmm0 killed $ymm0107; KNL-NEXT: callq _func8xi1108; 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],zero109; KNL-NEXT: vpslld $31, %ymm0, %ymm0110; KNL-NEXT: vpsrad $31, %ymm0, %ymm0111; KNL-NEXT: popq %rax112; KNL-NEXT: retq113;114; SKX-LABEL: test5:115; SKX: ## %bb.0:116; SKX-NEXT: pushq %rax117; SKX-NEXT: .cfi_def_cfa_offset 16118; SKX-NEXT: vpcmpgtd %ymm1, %ymm0, %k0119; SKX-NEXT: vpmovm2w %k0, %xmm0120; SKX-NEXT: vzeroupper121; SKX-NEXT: callq _func8xi1122; 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],zero123; SKX-NEXT: vpslld $31, %ymm0, %ymm0124; SKX-NEXT: vpsrad $31, %ymm0, %ymm0125; SKX-NEXT: popq %rax126; SKX-NEXT: retq127;128; KNL_X32-LABEL: test5:129; KNL_X32: ## %bb.0:130; KNL_X32-NEXT: subl $12, %esp131; KNL_X32-NEXT: .cfi_def_cfa_offset 16132; KNL_X32-NEXT: vpcmpgtd %ymm1, %ymm0, %ymm0133; KNL_X32-NEXT: vpmovdw %zmm0, %ymm0134; KNL_X32-NEXT: ## kill: def $xmm0 killed $xmm0 killed $ymm0135; KNL_X32-NEXT: calll _func8xi1136; 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],zero137; KNL_X32-NEXT: vpslld $31, %ymm0, %ymm0138; KNL_X32-NEXT: vpsrad $31, %ymm0, %ymm0139; KNL_X32-NEXT: addl $12, %esp140; KNL_X32-NEXT: retl141;142; FASTISEL-LABEL: test5:143; FASTISEL: ## %bb.0:144; FASTISEL-NEXT: pushq %rax145; FASTISEL-NEXT: .cfi_def_cfa_offset 16146; FASTISEL-NEXT: vpcmpgtd %ymm1, %ymm0, %k0147; FASTISEL-NEXT: vpmovm2w %k0, %xmm0148; FASTISEL-NEXT: vzeroupper149; FASTISEL-NEXT: callq _func8xi1150; FASTISEL-NEXT: vpsllw $15, %xmm0, %xmm0151; FASTISEL-NEXT: vpmovw2m %xmm0, %k0152; FASTISEL-NEXT: vpmovm2d %k0, %ymm0153; FASTISEL-NEXT: popq %rax154; FASTISEL-NEXT: retq155 %cmpRes = icmp sgt <8 x i32>%a, %b156 %resi = call <8 x i1> @func8xi1(<8 x i1> %cmpRes)157 %res = sext <8 x i1>%resi to <8 x i32>158 ret <8 x i32> %res159}160 161declare <16 x i1> @func16xi1(<16 x i1> %a)162 163define <16 x i32> @test6(<16 x i32>%a, <16 x i32>%b) {164; KNL-LABEL: test6:165; KNL: ## %bb.0:166; KNL-NEXT: pushq %rax167; KNL-NEXT: .cfi_def_cfa_offset 16168; KNL-NEXT: vpcmpgtd %zmm1, %zmm0, %k1169; KNL-NEXT: vpternlogd {{.*#+}} zmm0 {%k1} {z} = -1170; KNL-NEXT: vpmovdb %zmm0, %xmm0171; KNL-NEXT: callq _func16xi1172; 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,zero173; KNL-NEXT: vpslld $31, %zmm0, %zmm0174; KNL-NEXT: vpsrad $31, %zmm0, %zmm0175; KNL-NEXT: popq %rax176; KNL-NEXT: retq177;178; SKX-LABEL: test6:179; SKX: ## %bb.0:180; SKX-NEXT: pushq %rax181; SKX-NEXT: .cfi_def_cfa_offset 16182; SKX-NEXT: vpcmpgtd %zmm1, %zmm0, %k0183; SKX-NEXT: vpmovm2b %k0, %xmm0184; SKX-NEXT: vzeroupper185; SKX-NEXT: callq _func16xi1186; 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,zero187; SKX-NEXT: vpslld $31, %zmm0, %zmm0188; SKX-NEXT: vpsrad $31, %zmm0, %zmm0189; SKX-NEXT: popq %rax190; SKX-NEXT: retq191;192; KNL_X32-LABEL: test6:193; KNL_X32: ## %bb.0:194; KNL_X32-NEXT: subl $12, %esp195; KNL_X32-NEXT: .cfi_def_cfa_offset 16196; KNL_X32-NEXT: vpcmpgtd %zmm1, %zmm0, %k1197; KNL_X32-NEXT: vpternlogd {{.*#+}} zmm0 {%k1} {z} = -1198; KNL_X32-NEXT: vpmovdb %zmm0, %xmm0199; KNL_X32-NEXT: calll _func16xi1200; 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,zero201; KNL_X32-NEXT: vpslld $31, %zmm0, %zmm0202; KNL_X32-NEXT: vpsrad $31, %zmm0, %zmm0203; KNL_X32-NEXT: addl $12, %esp204; KNL_X32-NEXT: retl205;206; FASTISEL-LABEL: test6:207; FASTISEL: ## %bb.0:208; FASTISEL-NEXT: pushq %rax209; FASTISEL-NEXT: .cfi_def_cfa_offset 16210; FASTISEL-NEXT: vpcmpgtd %zmm1, %zmm0, %k0211; FASTISEL-NEXT: vpmovm2b %k0, %xmm0212; FASTISEL-NEXT: vzeroupper213; FASTISEL-NEXT: callq _func16xi1214; FASTISEL-NEXT: vpsllw $7, %xmm0, %xmm0215; FASTISEL-NEXT: vpmovb2m %xmm0, %k0216; FASTISEL-NEXT: vpmovm2d %k0, %zmm0217; FASTISEL-NEXT: popq %rax218; FASTISEL-NEXT: retq219 %cmpRes = icmp sgt <16 x i32>%a, %b220 %resi = call <16 x i1> @func16xi1(<16 x i1> %cmpRes)221 %res = sext <16 x i1>%resi to <16 x i32>222 ret <16 x i32> %res223}224 225declare <4 x i1> @func4xi1(<4 x i1> %a)226 227define <4 x i32> @test7(<4 x i32>%a, <4 x i32>%b) {228; ALL_X64-LABEL: test7:229; ALL_X64: ## %bb.0:230; ALL_X64-NEXT: pushq %rax231; ALL_X64-NEXT: .cfi_def_cfa_offset 16232; ALL_X64-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0233; ALL_X64-NEXT: callq _func4xi1234; ALL_X64-NEXT: vpslld $31, %xmm0, %xmm0235; ALL_X64-NEXT: vpsrad $31, %xmm0, %xmm0236; ALL_X64-NEXT: popq %rax237; ALL_X64-NEXT: retq238;239; KNL_X32-LABEL: test7:240; KNL_X32: ## %bb.0:241; KNL_X32-NEXT: subl $12, %esp242; KNL_X32-NEXT: .cfi_def_cfa_offset 16243; KNL_X32-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0244; KNL_X32-NEXT: calll _func4xi1245; KNL_X32-NEXT: vpslld $31, %xmm0, %xmm0246; KNL_X32-NEXT: vpsrad $31, %xmm0, %xmm0247; KNL_X32-NEXT: addl $12, %esp248; KNL_X32-NEXT: retl249;250; FASTISEL-LABEL: test7:251; FASTISEL: ## %bb.0:252; FASTISEL-NEXT: pushq %rax253; FASTISEL-NEXT: .cfi_def_cfa_offset 16254; FASTISEL-NEXT: vpcmpgtd %xmm1, %xmm0, %k0255; FASTISEL-NEXT: vpmovm2d %k0, %xmm0256; FASTISEL-NEXT: callq _func4xi1257; FASTISEL-NEXT: vpslld $31, %xmm0, %xmm0258; FASTISEL-NEXT: vpmovd2m %xmm0, %k0259; FASTISEL-NEXT: vpmovm2d %k0, %xmm0260; FASTISEL-NEXT: popq %rax261; FASTISEL-NEXT: retq262 %cmpRes = icmp sgt <4 x i32>%a, %b263 %resi = call <4 x i1> @func4xi1(<4 x i1> %cmpRes)264 %res = sext <4 x i1>%resi to <4 x i32>265 ret <4 x i32> %res266}267 268define <8 x i1> @test7a(<8 x i32>%a, <8 x i32>%b) {269; KNL-LABEL: test7a:270; KNL: ## %bb.0:271; KNL-NEXT: pushq %rax272; KNL-NEXT: .cfi_def_cfa_offset 16273; KNL-NEXT: vpcmpgtd %ymm1, %ymm0, %ymm0274; KNL-NEXT: vpmovdw %zmm0, %ymm0275; KNL-NEXT: ## kill: def $xmm0 killed $xmm0 killed $ymm0276; KNL-NEXT: callq _func8xi1277; KNL-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0278; KNL-NEXT: popq %rax279; KNL-NEXT: retq280;281; SKX-LABEL: test7a:282; SKX: ## %bb.0:283; SKX-NEXT: pushq %rax284; SKX-NEXT: .cfi_def_cfa_offset 16285; SKX-NEXT: vpcmpgtd %ymm1, %ymm0, %k0286; SKX-NEXT: vpmovm2w %k0, %xmm0287; SKX-NEXT: vzeroupper288; SKX-NEXT: callq _func8xi1289; SKX-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0290; SKX-NEXT: popq %rax291; SKX-NEXT: retq292;293; KNL_X32-LABEL: test7a:294; KNL_X32: ## %bb.0:295; KNL_X32-NEXT: subl $12, %esp296; KNL_X32-NEXT: .cfi_def_cfa_offset 16297; KNL_X32-NEXT: vpcmpgtd %ymm1, %ymm0, %ymm0298; KNL_X32-NEXT: vpmovdw %zmm0, %ymm0299; KNL_X32-NEXT: ## kill: def $xmm0 killed $xmm0 killed $ymm0300; KNL_X32-NEXT: calll _func8xi1301; KNL_X32-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0302; KNL_X32-NEXT: addl $12, %esp303; KNL_X32-NEXT: retl304;305; FASTISEL-LABEL: test7a:306; FASTISEL: ## %bb.0:307; FASTISEL-NEXT: pushq %rax308; FASTISEL-NEXT: .cfi_def_cfa_offset 16309; FASTISEL-NEXT: vpcmpgtd %ymm1, %ymm0, %k0310; FASTISEL-NEXT: vpmovm2w %k0, %xmm0311; FASTISEL-NEXT: vzeroupper312; FASTISEL-NEXT: callq _func8xi1313; FASTISEL-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0314; FASTISEL-NEXT: popq %rax315; FASTISEL-NEXT: retq316 %cmpRes = icmp sgt <8 x i32>%a, %b317 %resi = call <8 x i1> @func8xi1(<8 x i1> %cmpRes)318 %res = and <8 x i1>%resi, <i1 true, i1 false, i1 true, i1 false, i1 true, i1 false, i1 true, i1 false>319 ret <8 x i1> %res320}321 322define <16 x i8> @test8(<16 x i8> %a1, <16 x i8> %a2, i1 %cond) {323; ALL_X64-LABEL: test8:324; ALL_X64: ## %bb.0:325; ALL_X64-NEXT: testb $1, %dil326; ALL_X64-NEXT: jne LBB8_2327; ALL_X64-NEXT: ## %bb.1:328; ALL_X64-NEXT: vmovaps %xmm1, %xmm0329; ALL_X64-NEXT: LBB8_2:330; ALL_X64-NEXT: retq331;332; KNL_X32-LABEL: test8:333; KNL_X32: ## %bb.0:334; KNL_X32-NEXT: testb $1, {{[0-9]+}}(%esp)335; KNL_X32-NEXT: jne LBB8_2336; KNL_X32-NEXT: ## %bb.1:337; KNL_X32-NEXT: vmovaps %xmm1, %xmm0338; KNL_X32-NEXT: LBB8_2:339; KNL_X32-NEXT: retl340;341; FASTISEL-LABEL: test8:342; FASTISEL: ## %bb.0:343; FASTISEL-NEXT: testb $1, %dil344; FASTISEL-NEXT: jne LBB8_2345; FASTISEL-NEXT: ## %bb.1:346; FASTISEL-NEXT: vmovaps %xmm1, %xmm0347; FASTISEL-NEXT: LBB8_2:348; FASTISEL-NEXT: retq349 %res = select i1 %cond, <16 x i8> %a1, <16 x i8> %a2350 ret <16 x i8> %res351}352 353define i1 @test9(double %a, double %b) {354; ALL_X64-LABEL: test9:355; ALL_X64: ## %bb.0:356; ALL_X64-NEXT: vucomisd %xmm0, %xmm1357; ALL_X64-NEXT: setb %al358; ALL_X64-NEXT: retq359;360; KNL_X32-LABEL: test9:361; KNL_X32: ## %bb.0:362; KNL_X32-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero363; KNL_X32-NEXT: vucomisd {{[0-9]+}}(%esp), %xmm0364; KNL_X32-NEXT: setb %al365; KNL_X32-NEXT: retl366;367; FASTISEL-LABEL: test9:368; FASTISEL: ## %bb.0:369; FASTISEL-NEXT: vucomisd %xmm0, %xmm1370; FASTISEL-NEXT: setb %al371; FASTISEL-NEXT: retq372 %c = fcmp ugt double %a, %b373 ret i1 %c374}375 376define i32 @test10(i32 %a, i32 %b, i1 %cond) {377; ALL_X64-LABEL: test10:378; ALL_X64: ## %bb.0:379; ALL_X64-NEXT: movl %edi, %eax380; ALL_X64-NEXT: testb $1, %dl381; ALL_X64-NEXT: cmovel %esi, %eax382; ALL_X64-NEXT: retq383;384; KNL_X32-LABEL: test10:385; KNL_X32: ## %bb.0:386; KNL_X32-NEXT: testb $1, {{[0-9]+}}(%esp)387; KNL_X32-NEXT: leal {{[0-9]+}}(%esp), %eax388; KNL_X32-NEXT: leal {{[0-9]+}}(%esp), %ecx389; KNL_X32-NEXT: cmovnel %eax, %ecx390; KNL_X32-NEXT: movl (%ecx), %eax391; KNL_X32-NEXT: retl392;393; FASTISEL-LABEL: test10:394; FASTISEL: ## %bb.0:395; FASTISEL-NEXT: movl %edi, %eax396; FASTISEL-NEXT: testb $1, %dl397; FASTISEL-NEXT: cmovel %esi, %eax398; FASTISEL-NEXT: retq399 %c = select i1 %cond, i32 %a, i32 %b400 ret i32 %c401}402 403define i1 @test11(i32 %a, i32 %b) {404; ALL_X64-LABEL: test11:405; ALL_X64: ## %bb.0:406; ALL_X64-NEXT: cmpl %esi, %edi407; ALL_X64-NEXT: setg %al408; ALL_X64-NEXT: retq409;410; KNL_X32-LABEL: test11:411; KNL_X32: ## %bb.0:412; KNL_X32-NEXT: movl {{[0-9]+}}(%esp), %eax413; KNL_X32-NEXT: cmpl {{[0-9]+}}(%esp), %eax414; KNL_X32-NEXT: setg %al415; KNL_X32-NEXT: retl416;417; FASTISEL-LABEL: test11:418; FASTISEL: ## %bb.0:419; FASTISEL-NEXT: cmpl %esi, %edi420; FASTISEL-NEXT: setg %al421; FASTISEL-NEXT: retq422 %c = icmp sgt i32 %a, %b423 ret i1 %c424}425 426define i32 @test12(i32 %a1, i32 %a2, i32 %b1) {427; ALL_X64-LABEL: test12:428; ALL_X64: ## %bb.0:429; ALL_X64-NEXT: pushq %rbp430; ALL_X64-NEXT: .cfi_def_cfa_offset 16431; ALL_X64-NEXT: pushq %r14432; ALL_X64-NEXT: .cfi_def_cfa_offset 24433; ALL_X64-NEXT: pushq %rbx434; ALL_X64-NEXT: .cfi_def_cfa_offset 32435; ALL_X64-NEXT: .cfi_offset %rbx, -32436; ALL_X64-NEXT: .cfi_offset %r14, -24437; ALL_X64-NEXT: .cfi_offset %rbp, -16438; ALL_X64-NEXT: movl %esi, %ebx439; ALL_X64-NEXT: movl %edi, %ebp440; ALL_X64-NEXT: movl %edx, %esi441; ALL_X64-NEXT: callq _test11442; ALL_X64-NEXT: movzbl %al, %r14d443; ALL_X64-NEXT: movl %ebp, %edi444; ALL_X64-NEXT: movl %ebx, %esi445; ALL_X64-NEXT: movl %r14d, %edx446; ALL_X64-NEXT: callq _test10447; ALL_X64-NEXT: xorl %ecx, %ecx448; ALL_X64-NEXT: testb $1, %r14b449; ALL_X64-NEXT: cmovel %ecx, %eax450; ALL_X64-NEXT: popq %rbx451; ALL_X64-NEXT: popq %r14452; ALL_X64-NEXT: popq %rbp453; ALL_X64-NEXT: retq454;455; KNL_X32-LABEL: test12:456; KNL_X32: ## %bb.0:457; KNL_X32-NEXT: pushl %ebx458; KNL_X32-NEXT: .cfi_def_cfa_offset 8459; KNL_X32-NEXT: pushl %edi460; KNL_X32-NEXT: .cfi_def_cfa_offset 12461; KNL_X32-NEXT: pushl %esi462; KNL_X32-NEXT: .cfi_def_cfa_offset 16463; KNL_X32-NEXT: subl $16, %esp464; KNL_X32-NEXT: .cfi_def_cfa_offset 32465; KNL_X32-NEXT: .cfi_offset %esi, -16466; KNL_X32-NEXT: .cfi_offset %edi, -12467; KNL_X32-NEXT: .cfi_offset %ebx, -8468; KNL_X32-NEXT: movl {{[0-9]+}}(%esp), %esi469; KNL_X32-NEXT: movl {{[0-9]+}}(%esp), %edi470; KNL_X32-NEXT: movl {{[0-9]+}}(%esp), %eax471; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)472; KNL_X32-NEXT: movl %edi, (%esp)473; KNL_X32-NEXT: calll _test11474; KNL_X32-NEXT: movl %eax, %ebx475; KNL_X32-NEXT: movzbl %al, %eax476; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)477; KNL_X32-NEXT: movl %esi, {{[0-9]+}}(%esp)478; KNL_X32-NEXT: movl %edi, (%esp)479; KNL_X32-NEXT: calll _test10480; KNL_X32-NEXT: xorl %ecx, %ecx481; KNL_X32-NEXT: testb $1, %bl482; KNL_X32-NEXT: cmovel %ecx, %eax483; KNL_X32-NEXT: addl $16, %esp484; KNL_X32-NEXT: popl %esi485; KNL_X32-NEXT: popl %edi486; KNL_X32-NEXT: popl %ebx487; KNL_X32-NEXT: retl488;489; FASTISEL-LABEL: test12:490; FASTISEL: ## %bb.0:491; FASTISEL-NEXT: pushq %rbp492; FASTISEL-NEXT: .cfi_def_cfa_offset 16493; FASTISEL-NEXT: pushq %r14494; FASTISEL-NEXT: .cfi_def_cfa_offset 24495; FASTISEL-NEXT: pushq %rbx496; FASTISEL-NEXT: .cfi_def_cfa_offset 32497; FASTISEL-NEXT: .cfi_offset %rbx, -32498; FASTISEL-NEXT: .cfi_offset %r14, -24499; FASTISEL-NEXT: .cfi_offset %rbp, -16500; FASTISEL-NEXT: movl %esi, %ebx501; FASTISEL-NEXT: movl %edi, %ebp502; FASTISEL-NEXT: movl %edx, %esi503; FASTISEL-NEXT: callq _test11504; FASTISEL-NEXT: movzbl %al, %r14d505; FASTISEL-NEXT: movl %ebp, %edi506; FASTISEL-NEXT: movl %ebx, %esi507; FASTISEL-NEXT: movl %r14d, %edx508; FASTISEL-NEXT: callq _test10509; FASTISEL-NEXT: xorl %ecx, %ecx510; FASTISEL-NEXT: testb $1, %r14b511; FASTISEL-NEXT: cmovel %ecx, %eax512; FASTISEL-NEXT: popq %rbx513; FASTISEL-NEXT: popq %r14514; FASTISEL-NEXT: popq %rbp515; FASTISEL-NEXT: retq516 %cond = call i1 @test11(i32 %a1, i32 %b1)517 %res = call i32 @test10(i32 %a1, i32 %a2, i1 %cond)518 %res1 = select i1 %cond, i32 %res, i32 0519 ret i32 %res1520}521 522define <1 x i1> @test13(ptr %foo) {523; KNL-LABEL: test13:524; KNL: ## %bb.0:525; KNL-NEXT: movzbl (%rdi), %eax526; KNL-NEXT: ## kill: def $al killed $al killed $eax527; KNL-NEXT: retq528;529; SKX-LABEL: test13:530; SKX: ## %bb.0:531; SKX-NEXT: kmovb (%rdi), %k0532; SKX-NEXT: kmovd %k0, %eax533; SKX-NEXT: ## kill: def $al killed $al killed $eax534; SKX-NEXT: retq535;536; KNL_X32-LABEL: test13:537; KNL_X32: ## %bb.0:538; KNL_X32-NEXT: movl {{[0-9]+}}(%esp), %eax539; KNL_X32-NEXT: movzbl (%eax), %eax540; KNL_X32-NEXT: ## kill: def $al killed $al killed $eax541; KNL_X32-NEXT: retl542;543; FASTISEL-LABEL: test13:544; FASTISEL: ## %bb.0:545; FASTISEL-NEXT: kmovb (%rdi), %k0546; FASTISEL-NEXT: kmovd %k0, %eax547; FASTISEL-NEXT: ## kill: def $al killed $al killed $eax548; FASTISEL-NEXT: retq549 %bar = load <1 x i1>, ptr %foo550 ret <1 x i1> %bar551}552 553define void @test14(ptr %x) {554; KNL-LABEL: test14:555; KNL: ## %bb.0:556; KNL-NEXT: pushq %rbx557; KNL-NEXT: .cfi_def_cfa_offset 16558; KNL-NEXT: .cfi_offset %rbx, -16559; KNL-NEXT: movq %rdi, %rbx560; KNL-NEXT: vmovaps (%rdi), %zmm0561; KNL-NEXT: callq _test14_callee562; KNL-NEXT: vmovaps %zmm0, (%rbx)563; KNL-NEXT: popq %rbx564; KNL-NEXT: retq565;566; SKX-LABEL: test14:567; SKX: ## %bb.0:568; SKX-NEXT: pushq %rbx569; SKX-NEXT: .cfi_def_cfa_offset 16570; SKX-NEXT: .cfi_offset %rbx, -16571; SKX-NEXT: movq %rdi, %rbx572; SKX-NEXT: vmovaps (%rdi), %zmm0573; SKX-NEXT: callq _test14_callee574; SKX-NEXT: vmovaps %zmm0, (%rbx)575; SKX-NEXT: popq %rbx576; SKX-NEXT: vzeroupper577; SKX-NEXT: retq578;579; KNL_X32-LABEL: test14:580; KNL_X32: ## %bb.0:581; KNL_X32-NEXT: pushl %esi582; KNL_X32-NEXT: .cfi_def_cfa_offset 8583; KNL_X32-NEXT: subl $8, %esp584; KNL_X32-NEXT: .cfi_def_cfa_offset 16585; KNL_X32-NEXT: .cfi_offset %esi, -8586; KNL_X32-NEXT: movl {{[0-9]+}}(%esp), %esi587; KNL_X32-NEXT: vmovaps (%esi), %zmm0588; KNL_X32-NEXT: calll _test14_callee589; KNL_X32-NEXT: vmovaps %zmm0, (%esi)590; KNL_X32-NEXT: addl $8, %esp591; KNL_X32-NEXT: popl %esi592; KNL_X32-NEXT: retl593;594; FASTISEL-LABEL: test14:595; FASTISEL: ## %bb.0:596; FASTISEL-NEXT: pushq %rbx597; FASTISEL-NEXT: .cfi_def_cfa_offset 16598; FASTISEL-NEXT: .cfi_offset %rbx, -16599; FASTISEL-NEXT: movq %rdi, %rbx600; FASTISEL-NEXT: vmovaps (%rdi), %zmm0601; FASTISEL-NEXT: callq _test14_callee602; FASTISEL-NEXT: vmovaps %zmm0, (%rbx)603; FASTISEL-NEXT: popq %rbx604; FASTISEL-NEXT: vzeroupper605; FASTISEL-NEXT: retq606 %a = load <32 x i16>, ptr %x607 %b = call <32 x i16> @test14_callee(<32 x i16> %a)608 store <32 x i16> %b, ptr %x609 ret void610}611declare <32 x i16> @test14_callee(<32 x i16>)612 613define void @test15(ptr %x) {614; KNL-LABEL: test15:615; KNL: ## %bb.0:616; KNL-NEXT: pushq %rbx617; KNL-NEXT: .cfi_def_cfa_offset 16618; KNL-NEXT: .cfi_offset %rbx, -16619; KNL-NEXT: movq %rdi, %rbx620; KNL-NEXT: vmovaps (%rdi), %zmm0621; KNL-NEXT: callq _test15_callee622; KNL-NEXT: vmovaps %zmm0, (%rbx)623; KNL-NEXT: popq %rbx624; KNL-NEXT: retq625;626; SKX-LABEL: test15:627; SKX: ## %bb.0:628; SKX-NEXT: pushq %rbx629; SKX-NEXT: .cfi_def_cfa_offset 16630; SKX-NEXT: .cfi_offset %rbx, -16631; SKX-NEXT: movq %rdi, %rbx632; SKX-NEXT: vmovaps (%rdi), %zmm0633; SKX-NEXT: callq _test15_callee634; SKX-NEXT: vmovaps %zmm0, (%rbx)635; SKX-NEXT: popq %rbx636; SKX-NEXT: vzeroupper637; SKX-NEXT: retq638;639; KNL_X32-LABEL: test15:640; KNL_X32: ## %bb.0:641; KNL_X32-NEXT: pushl %esi642; KNL_X32-NEXT: .cfi_def_cfa_offset 8643; KNL_X32-NEXT: subl $8, %esp644; KNL_X32-NEXT: .cfi_def_cfa_offset 16645; KNL_X32-NEXT: .cfi_offset %esi, -8646; KNL_X32-NEXT: movl {{[0-9]+}}(%esp), %esi647; KNL_X32-NEXT: vmovaps (%esi), %zmm0648; KNL_X32-NEXT: calll _test15_callee649; KNL_X32-NEXT: vmovaps %zmm0, (%esi)650; KNL_X32-NEXT: addl $8, %esp651; KNL_X32-NEXT: popl %esi652; KNL_X32-NEXT: retl653;654; FASTISEL-LABEL: test15:655; FASTISEL: ## %bb.0:656; FASTISEL-NEXT: pushq %rbx657; FASTISEL-NEXT: .cfi_def_cfa_offset 16658; FASTISEL-NEXT: .cfi_offset %rbx, -16659; FASTISEL-NEXT: movq %rdi, %rbx660; FASTISEL-NEXT: vmovaps (%rdi), %zmm0661; FASTISEL-NEXT: callq _test15_callee662; FASTISEL-NEXT: vmovaps %zmm0, (%rbx)663; FASTISEL-NEXT: popq %rbx664; FASTISEL-NEXT: vzeroupper665; FASTISEL-NEXT: retq666 %a = load <64 x i8>, ptr %x667 %b = call <64 x i8> @test15_callee(<64 x i8> %a)668 store <64 x i8> %b, ptr %x669 ret void670}671declare <64 x i8> @test15_callee(<64 x i8>)672 673define <17 x i1> @test16(<17 x i1> %a, <17 x i1> %b) nounwind {674; KNL-LABEL: test16:675; KNL: ## %bb.0:676; KNL-NEXT: pushq %rbp677; KNL-NEXT: pushq %r15678; KNL-NEXT: pushq %r14679; KNL-NEXT: pushq %r13680; KNL-NEXT: pushq %r12681; KNL-NEXT: pushq %rbx682; KNL-NEXT: movq %rdi, %rax683; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi684; KNL-NEXT: andl $1, %edi685; KNL-NEXT: kmovw %edi, %k0686; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi687; KNL-NEXT: kmovw %edi, %k1688; KNL-NEXT: kshiftlw $15, %k1, %k1689; KNL-NEXT: kshiftrw $14, %k1, %k1690; KNL-NEXT: korw %k1, %k0, %k0691; KNL-NEXT: movw $-5, %di692; KNL-NEXT: kmovw %edi, %k1693; KNL-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill694; KNL-NEXT: kandw %k1, %k0, %k0695; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi696; KNL-NEXT: kmovw %edi, %k1697; KNL-NEXT: kshiftlw $15, %k1, %k1698; KNL-NEXT: kshiftrw $13, %k1, %k1699; KNL-NEXT: korw %k1, %k0, %k0700; KNL-NEXT: movw $-9, %di701; KNL-NEXT: kmovw %edi, %k1702; KNL-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill703; KNL-NEXT: kandw %k1, %k0, %k0704; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi705; KNL-NEXT: kmovw %edi, %k1706; KNL-NEXT: kshiftlw $15, %k1, %k1707; KNL-NEXT: kshiftrw $12, %k1, %k1708; KNL-NEXT: korw %k1, %k0, %k0709; KNL-NEXT: movw $-17, %di710; KNL-NEXT: kmovw %edi, %k1711; KNL-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill712; KNL-NEXT: kandw %k1, %k0, %k0713; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi714; KNL-NEXT: kmovw %edi, %k1715; KNL-NEXT: kshiftlw $15, %k1, %k1716; KNL-NEXT: kshiftrw $11, %k1, %k1717; KNL-NEXT: korw %k1, %k0, %k0718; KNL-NEXT: movw $-33, %di719; KNL-NEXT: kmovw %edi, %k1720; KNL-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill721; KNL-NEXT: kandw %k1, %k0, %k0722; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi723; KNL-NEXT: kmovw %edi, %k1724; KNL-NEXT: kshiftlw $15, %k1, %k1725; KNL-NEXT: kshiftrw $10, %k1, %k1726; KNL-NEXT: korw %k1, %k0, %k0727; KNL-NEXT: movw $-65, %di728; KNL-NEXT: kmovw %edi, %k1729; KNL-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill730; KNL-NEXT: kandw %k1, %k0, %k0731; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi732; KNL-NEXT: kmovw %edi, %k1733; KNL-NEXT: kshiftlw $15, %k1, %k1734; KNL-NEXT: kshiftrw $9, %k1, %k1735; KNL-NEXT: korw %k1, %k0, %k0736; KNL-NEXT: movw $-129, %di737; KNL-NEXT: kmovw %edi, %k1738; KNL-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill739; KNL-NEXT: kandw %k1, %k0, %k0740; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi741; KNL-NEXT: kmovw %edi, %k1742; KNL-NEXT: kshiftlw $15, %k1, %k1743; KNL-NEXT: kshiftrw $8, %k1, %k1744; KNL-NEXT: korw %k1, %k0, %k0745; KNL-NEXT: movw $-257, %di ## imm = 0xFEFF746; KNL-NEXT: kmovw %edi, %k1747; KNL-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill748; KNL-NEXT: kandw %k1, %k0, %k0749; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi750; KNL-NEXT: kmovw %edi, %k1751; KNL-NEXT: kshiftlw $15, %k1, %k1752; KNL-NEXT: kshiftrw $7, %k1, %k1753; KNL-NEXT: korw %k1, %k0, %k0754; KNL-NEXT: movw $-513, %di ## imm = 0xFDFF755; KNL-NEXT: kmovw %edi, %k7756; KNL-NEXT: kandw %k7, %k0, %k0757; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi758; KNL-NEXT: kmovw %edi, %k1759; KNL-NEXT: kshiftlw $15, %k1, %k1760; KNL-NEXT: kshiftrw $6, %k1, %k1761; KNL-NEXT: korw %k1, %k0, %k0762; KNL-NEXT: movw $-1025, %di ## imm = 0xFBFF763; KNL-NEXT: kmovw %edi, %k4764; KNL-NEXT: kandw %k4, %k0, %k0765; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi766; KNL-NEXT: kmovw %edi, %k1767; KNL-NEXT: kshiftlw $15, %k1, %k1768; KNL-NEXT: kshiftrw $5, %k1, %k1769; KNL-NEXT: korw %k1, %k0, %k0770; KNL-NEXT: movw $-2049, %di ## imm = 0xF7FF771; KNL-NEXT: kmovw %edi, %k3772; KNL-NEXT: kandw %k3, %k0, %k0773; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi774; KNL-NEXT: kmovw %edi, %k1775; KNL-NEXT: kshiftlw $15, %k1, %k1776; KNL-NEXT: kshiftrw $4, %k1, %k1777; KNL-NEXT: korw %k1, %k0, %k0778; KNL-NEXT: movw $-4097, %di ## imm = 0xEFFF779; KNL-NEXT: kmovw %edi, %k2780; KNL-NEXT: kandw %k2, %k0, %k0781; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi782; KNL-NEXT: kmovw %edi, %k1783; KNL-NEXT: kshiftlw $15, %k1, %k1784; KNL-NEXT: kshiftrw $3, %k1, %k1785; KNL-NEXT: korw %k1, %k0, %k0786; KNL-NEXT: movw $-8193, %di ## imm = 0xDFFF787; KNL-NEXT: kmovw %edi, %k1788; KNL-NEXT: kandw %k1, %k0, %k0789; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi790; KNL-NEXT: kmovw %edi, %k5791; KNL-NEXT: kshiftlw $15, %k5, %k5792; KNL-NEXT: kshiftrw $2, %k5, %k5793; KNL-NEXT: korw %k5, %k0, %k5794; KNL-NEXT: movw $-16385, %di ## imm = 0xBFFF795; KNL-NEXT: kmovw %edi, %k0796; KNL-NEXT: kandw %k0, %k5, %k5797; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi798; KNL-NEXT: kmovw %edi, %k6799; KNL-NEXT: kshiftlw $14, %k6, %k6800; KNL-NEXT: korw %k6, %k5, %k5801; KNL-NEXT: kshiftlw $1, %k5, %k5802; KNL-NEXT: kshiftrw $1, %k5, %k5803; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi804; KNL-NEXT: kmovw %edi, %k6805; KNL-NEXT: kshiftlw $15, %k6, %k6806; KNL-NEXT: korw %k6, %k5, %k5807; KNL-NEXT: kmovw %k5, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill808; KNL-NEXT: andl $1, %esi809; KNL-NEXT: kmovw %edx, %k5810; KNL-NEXT: kshiftlw $15, %k5, %k5811; KNL-NEXT: kshiftrw $14, %k5, %k5812; KNL-NEXT: kmovw %esi, %k6813; KNL-NEXT: korw %k5, %k6, %k5814; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload815; KNL-NEXT: kandw %k6, %k5, %k5816; KNL-NEXT: kmovw %ecx, %k6817; KNL-NEXT: kshiftlw $15, %k6, %k6818; KNL-NEXT: kshiftrw $13, %k6, %k6819; KNL-NEXT: korw %k6, %k5, %k5820; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload821; KNL-NEXT: kandw %k6, %k5, %k5822; KNL-NEXT: kmovw %r8d, %k6823; KNL-NEXT: kshiftlw $15, %k6, %k6824; KNL-NEXT: kshiftrw $12, %k6, %k6825; KNL-NEXT: korw %k6, %k5, %k5826; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload827; KNL-NEXT: kandw %k6, %k5, %k5828; KNL-NEXT: kmovw %r9d, %k6829; KNL-NEXT: kshiftlw $15, %k6, %k6830; KNL-NEXT: kshiftrw $11, %k6, %k6831; KNL-NEXT: korw %k6, %k5, %k5832; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload833; KNL-NEXT: kandw %k6, %k5, %k5834; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx835; KNL-NEXT: kmovw %ecx, %k6836; KNL-NEXT: kshiftlw $15, %k6, %k6837; KNL-NEXT: kshiftrw $10, %k6, %k6838; KNL-NEXT: korw %k6, %k5, %k5839; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload840; KNL-NEXT: kandw %k6, %k5, %k5841; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx842; KNL-NEXT: kmovw %ecx, %k6843; KNL-NEXT: kshiftlw $15, %k6, %k6844; KNL-NEXT: kshiftrw $9, %k6, %k6845; KNL-NEXT: korw %k6, %k5, %k5846; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload847; KNL-NEXT: kandw %k6, %k5, %k5848; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx849; KNL-NEXT: kmovw %ecx, %k6850; KNL-NEXT: kshiftlw $15, %k6, %k6851; KNL-NEXT: kshiftrw $8, %k6, %k6852; KNL-NEXT: korw %k6, %k5, %k5853; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload854; KNL-NEXT: kandw %k6, %k5, %k5855; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx856; KNL-NEXT: kmovw %ecx, %k6857; KNL-NEXT: kshiftlw $15, %k6, %k6858; KNL-NEXT: kshiftrw $7, %k6, %k6859; KNL-NEXT: korw %k6, %k5, %k5860; KNL-NEXT: kandw %k7, %k5, %k5861; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx862; KNL-NEXT: kmovw %ecx, %k6863; KNL-NEXT: kshiftlw $15, %k6, %k6864; KNL-NEXT: kshiftrw $6, %k6, %k6865; KNL-NEXT: korw %k6, %k5, %k5866; KNL-NEXT: kandw %k4, %k5, %k4867; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx868; KNL-NEXT: kmovw %ecx, %k5869; KNL-NEXT: kshiftlw $15, %k5, %k5870; KNL-NEXT: kshiftrw $5, %k5, %k5871; KNL-NEXT: korw %k5, %k4, %k4872; KNL-NEXT: kandw %k3, %k4, %k3873; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx874; KNL-NEXT: kmovw %ecx, %k4875; KNL-NEXT: kshiftlw $15, %k4, %k4876; KNL-NEXT: kshiftrw $4, %k4, %k4877; KNL-NEXT: korw %k4, %k3, %k3878; KNL-NEXT: kandw %k2, %k3, %k2879; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx880; KNL-NEXT: kmovw %ecx, %k3881; KNL-NEXT: kshiftlw $15, %k3, %k3882; KNL-NEXT: kshiftrw $3, %k3, %k3883; KNL-NEXT: korw %k3, %k2, %k2884; KNL-NEXT: kandw %k1, %k2, %k1885; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx886; KNL-NEXT: kmovw %ecx, %k2887; KNL-NEXT: kshiftlw $15, %k2, %k2888; KNL-NEXT: kshiftrw $2, %k2, %k2889; KNL-NEXT: korw %k2, %k1, %k1890; KNL-NEXT: kandw %k0, %k1, %k0891; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx892; KNL-NEXT: kmovw %ecx, %k1893; KNL-NEXT: kshiftlw $14, %k1, %k1894; KNL-NEXT: korw %k1, %k0, %k0895; KNL-NEXT: kshiftlw $1, %k0, %k0896; KNL-NEXT: kshiftrw $1, %k0, %k0897; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx898; KNL-NEXT: kmovw %ecx, %k1899; KNL-NEXT: kshiftlw $15, %k1, %k1900; KNL-NEXT: korw %k1, %k0, %k0901; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload902; KNL-NEXT: kandw %k1, %k0, %k0903; KNL-NEXT: kmovw {{[0-9]+}}(%rsp), %k1904; KNL-NEXT: kmovw {{[0-9]+}}(%rsp), %k2905; KNL-NEXT: kandw %k1, %k2, %k1906; KNL-NEXT: kmovw %k1, %edx907; KNL-NEXT: kshiftrw $1, %k0, %k1908; KNL-NEXT: kmovw %k1, %r9d909; KNL-NEXT: kshiftrw $2, %k0, %k1910; KNL-NEXT: kmovw %k1, %r8d911; KNL-NEXT: kshiftrw $3, %k0, %k1912; KNL-NEXT: kmovw %k1, %esi913; KNL-NEXT: kshiftrw $4, %k0, %k1914; KNL-NEXT: kmovw %k1, %edi915; KNL-NEXT: kshiftrw $5, %k0, %k1916; KNL-NEXT: kmovw %k1, %ecx917; KNL-NEXT: kshiftrw $6, %k0, %k1918; KNL-NEXT: kmovw %k1, %r10d919; KNL-NEXT: kshiftrw $7, %k0, %k1920; KNL-NEXT: kmovw %k1, %ebx921; KNL-NEXT: kshiftrw $8, %k0, %k1922; KNL-NEXT: kmovw %k1, %ebp923; KNL-NEXT: kshiftrw $9, %k0, %k1924; KNL-NEXT: kmovw %k1, %r14d925; KNL-NEXT: kshiftrw $10, %k0, %k1926; KNL-NEXT: kmovw %k1, %r11d927; KNL-NEXT: kshiftrw $11, %k0, %k1928; KNL-NEXT: kmovw %k1, %r15d929; KNL-NEXT: kshiftrw $12, %k0, %k1930; KNL-NEXT: kmovw %k1, %r12d931; KNL-NEXT: kshiftrw $13, %k0, %k1932; KNL-NEXT: kmovw %k1, %r13d933; KNL-NEXT: kshiftrw $14, %k0, %k1934; KNL-NEXT: andl $1, %edx935; KNL-NEXT: movb %dl, 2(%rax)936; KNL-NEXT: kmovw %k0, %edx937; KNL-NEXT: andl $1, %edx938; KNL-NEXT: andl $1, %r9d939; KNL-NEXT: leal (%rdx,%r9,2), %r9d940; KNL-NEXT: kmovw %k1, %edx941; KNL-NEXT: kshiftrw $15, %k0, %k0942; KNL-NEXT: andl $1, %r8d943; KNL-NEXT: leal (%r9,%r8,4), %r9d944; KNL-NEXT: kmovw %k0, %r8d945; KNL-NEXT: andl $1, %esi946; KNL-NEXT: leal (%r9,%rsi,8), %esi947; KNL-NEXT: andl $1, %edi948; KNL-NEXT: shll $4, %edi949; KNL-NEXT: orl %esi, %edi950; KNL-NEXT: andl $1, %ecx951; KNL-NEXT: shll $5, %ecx952; KNL-NEXT: orl %edi, %ecx953; KNL-NEXT: andl $1, %r10d954; KNL-NEXT: shll $6, %r10d955; KNL-NEXT: andl $1, %ebx956; KNL-NEXT: shll $7, %ebx957; KNL-NEXT: orl %r10d, %ebx958; KNL-NEXT: andl $1, %ebp959; KNL-NEXT: shll $8, %ebp960; KNL-NEXT: orl %ebx, %ebp961; KNL-NEXT: andl $1, %r14d962; KNL-NEXT: shll $9, %r14d963; KNL-NEXT: orl %ebp, %r14d964; KNL-NEXT: andl $1, %r11d965; KNL-NEXT: shll $10, %r11d966; KNL-NEXT: orl %r14d, %r11d967; KNL-NEXT: orl %ecx, %r11d968; KNL-NEXT: andl $1, %r15d969; KNL-NEXT: shll $11, %r15d970; KNL-NEXT: andl $1, %r12d971; KNL-NEXT: shll $12, %r12d972; KNL-NEXT: orl %r15d, %r12d973; KNL-NEXT: andl $1, %r13d974; KNL-NEXT: shll $13, %r13d975; KNL-NEXT: orl %r12d, %r13d976; KNL-NEXT: andl $1, %edx977; KNL-NEXT: shll $14, %edx978; KNL-NEXT: orl %r13d, %edx979; KNL-NEXT: andl $1, %r8d980; KNL-NEXT: shll $15, %r8d981; KNL-NEXT: orl %edx, %r8d982; KNL-NEXT: orl %r11d, %r8d983; KNL-NEXT: movw %r8w, (%rax)984; KNL-NEXT: popq %rbx985; KNL-NEXT: popq %r12986; KNL-NEXT: popq %r13987; KNL-NEXT: popq %r14988; KNL-NEXT: popq %r15989; KNL-NEXT: popq %rbp990; KNL-NEXT: retq991;992; SKX-LABEL: test16:993; SKX: ## %bb.0:994; SKX-NEXT: pushq %rbp995; SKX-NEXT: pushq %r15996; SKX-NEXT: pushq %r14997; SKX-NEXT: pushq %r13998; SKX-NEXT: pushq %r12999; SKX-NEXT: pushq %rbx1000; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k01001; SKX-NEXT: movq %rdi, %rax1002; SKX-NEXT: kshiftld $31, %k0, %k01003; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11004; SKX-NEXT: kshiftrd $30, %k0, %k01005; SKX-NEXT: kshiftld $31, %k1, %k11006; SKX-NEXT: kshiftrd $31, %k1, %k11007; SKX-NEXT: kord %k0, %k1, %k01008; SKX-NEXT: movl $-5, %edi1009; SKX-NEXT: kmovd %edi, %k11010; SKX-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1011; SKX-NEXT: kandd %k1, %k0, %k01012; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11013; SKX-NEXT: kshiftld $31, %k1, %k11014; SKX-NEXT: kshiftrd $29, %k1, %k11015; SKX-NEXT: kord %k1, %k0, %k01016; SKX-NEXT: movl $-9, %edi1017; SKX-NEXT: kmovd %edi, %k11018; SKX-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1019; SKX-NEXT: kandd %k1, %k0, %k01020; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11021; SKX-NEXT: kshiftld $31, %k1, %k11022; SKX-NEXT: kshiftrd $28, %k1, %k11023; SKX-NEXT: kord %k1, %k0, %k01024; SKX-NEXT: movl $-17, %edi1025; SKX-NEXT: kmovd %edi, %k21026; SKX-NEXT: kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1027; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11028; SKX-NEXT: kandd %k2, %k0, %k01029; SKX-NEXT: kshiftld $31, %k1, %k11030; SKX-NEXT: kshiftrd $27, %k1, %k11031; SKX-NEXT: kord %k1, %k0, %k01032; SKX-NEXT: movl $-33, %edi1033; SKX-NEXT: kmovd %edi, %k11034; SKX-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1035; SKX-NEXT: kandd %k1, %k0, %k01036; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11037; SKX-NEXT: kshiftld $31, %k1, %k11038; SKX-NEXT: kshiftrd $26, %k1, %k11039; SKX-NEXT: kord %k1, %k0, %k01040; SKX-NEXT: movl $-65, %edi1041; SKX-NEXT: kmovd %edi, %k11042; SKX-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1043; SKX-NEXT: kandd %k1, %k0, %k01044; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11045; SKX-NEXT: kshiftld $31, %k1, %k11046; SKX-NEXT: kshiftrd $25, %k1, %k11047; SKX-NEXT: kord %k1, %k0, %k01048; SKX-NEXT: movl $-129, %edi1049; SKX-NEXT: kmovd %edi, %k21050; SKX-NEXT: kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1051; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11052; SKX-NEXT: kandd %k2, %k0, %k01053; SKX-NEXT: kshiftld $31, %k1, %k11054; SKX-NEXT: kshiftrd $24, %k1, %k11055; SKX-NEXT: kord %k1, %k0, %k01056; SKX-NEXT: movl $-257, %edi ## imm = 0xFEFF1057; SKX-NEXT: kmovd %edi, %k11058; SKX-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1059; SKX-NEXT: kandd %k1, %k0, %k01060; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11061; SKX-NEXT: kshiftld $31, %k1, %k11062; SKX-NEXT: kshiftrd $23, %k1, %k11063; SKX-NEXT: kord %k1, %k0, %k01064; SKX-NEXT: movl $-513, %edi ## imm = 0xFDFF1065; SKX-NEXT: kmovd %edi, %k11066; SKX-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1067; SKX-NEXT: kandd %k1, %k0, %k01068; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11069; SKX-NEXT: kshiftld $31, %k1, %k11070; SKX-NEXT: kshiftrd $22, %k1, %k11071; SKX-NEXT: kord %k1, %k0, %k01072; SKX-NEXT: movl $-1025, %edi ## imm = 0xFBFF1073; SKX-NEXT: kmovd %edi, %k21074; SKX-NEXT: kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1075; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11076; SKX-NEXT: kandd %k2, %k0, %k01077; SKX-NEXT: kshiftld $31, %k1, %k11078; SKX-NEXT: kshiftrd $21, %k1, %k11079; SKX-NEXT: kord %k1, %k0, %k01080; SKX-NEXT: movl $-2049, %edi ## imm = 0xF7FF1081; SKX-NEXT: kmovd %edi, %k61082; SKX-NEXT: kandd %k6, %k0, %k01083; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11084; SKX-NEXT: kshiftld $31, %k1, %k11085; SKX-NEXT: kshiftrd $20, %k1, %k11086; SKX-NEXT: kord %k1, %k0, %k01087; SKX-NEXT: movl $-4097, %edi ## imm = 0xEFFF1088; SKX-NEXT: kmovd %edi, %k11089; SKX-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1090; SKX-NEXT: kandd %k1, %k0, %k01091; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11092; SKX-NEXT: kshiftld $31, %k1, %k11093; SKX-NEXT: kshiftrd $19, %k1, %k11094; SKX-NEXT: kord %k1, %k0, %k01095; SKX-NEXT: movl $-8193, %edi ## imm = 0xDFFF1096; SKX-NEXT: kmovd %edi, %k51097; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11098; SKX-NEXT: kandd %k5, %k0, %k01099; SKX-NEXT: kshiftld $31, %k1, %k11100; SKX-NEXT: kshiftrd $18, %k1, %k11101; SKX-NEXT: kord %k1, %k0, %k01102; SKX-NEXT: movl $-16385, %edi ## imm = 0xBFFF1103; SKX-NEXT: kmovd %edi, %k41104; SKX-NEXT: kandd %k4, %k0, %k01105; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11106; SKX-NEXT: kshiftld $31, %k1, %k11107; SKX-NEXT: kshiftrd $17, %k1, %k11108; SKX-NEXT: kord %k1, %k0, %k01109; SKX-NEXT: movl $-32769, %edi ## imm = 0xFFFF7FFF1110; SKX-NEXT: kmovd %edi, %k31111; SKX-NEXT: kandd %k3, %k0, %k01112; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k71113; SKX-NEXT: kshiftld $31, %k7, %k71114; SKX-NEXT: kshiftrd $16, %k7, %k71115; SKX-NEXT: kord %k7, %k0, %k71116; SKX-NEXT: movl $-65537, %edi ## imm = 0xFFFEFFFF1117; SKX-NEXT: kmovd %edi, %k21118; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k01119; SKX-NEXT: kandd %k2, %k7, %k71120; SKX-NEXT: kshiftld $31, %k0, %k01121; SKX-NEXT: kshiftrd $15, %k0, %k01122; SKX-NEXT: kord %k0, %k7, %k01123; SKX-NEXT: kmovd %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1124; SKX-NEXT: kmovd %edx, %k01125; SKX-NEXT: kshiftld $31, %k0, %k01126; SKX-NEXT: kshiftrd $30, %k0, %k01127; SKX-NEXT: kmovd %esi, %k71128; SKX-NEXT: kshiftld $31, %k7, %k71129; SKX-NEXT: kshiftrd $31, %k7, %k71130; SKX-NEXT: kord %k0, %k7, %k01131; SKX-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1132; SKX-NEXT: kandd %k1, %k0, %k01133; SKX-NEXT: kmovd %ecx, %k71134; SKX-NEXT: kshiftld $31, %k7, %k71135; SKX-NEXT: kshiftrd $29, %k7, %k71136; SKX-NEXT: kord %k7, %k0, %k01137; SKX-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1138; SKX-NEXT: kandd %k1, %k0, %k01139; SKX-NEXT: kmovd %r8d, %k71140; SKX-NEXT: kshiftld $31, %k7, %k71141; SKX-NEXT: kshiftrd $28, %k7, %k71142; SKX-NEXT: kord %k7, %k0, %k01143; SKX-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1144; SKX-NEXT: kandd %k1, %k0, %k01145; SKX-NEXT: kmovd %r9d, %k71146; SKX-NEXT: kshiftld $31, %k7, %k71147; SKX-NEXT: kshiftrd $27, %k7, %k71148; SKX-NEXT: kord %k7, %k0, %k01149; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k71150; SKX-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1151; SKX-NEXT: kandd %k1, %k0, %k11152; SKX-NEXT: kshiftld $31, %k7, %k71153; SKX-NEXT: kshiftrd $26, %k7, %k71154; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k01155; SKX-NEXT: kord %k7, %k1, %k11156; SKX-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k7 ## 4-byte Reload1157; SKX-NEXT: kandd %k7, %k1, %k11158; SKX-NEXT: kshiftld $31, %k0, %k01159; SKX-NEXT: kshiftrd $25, %k0, %k01160; SKX-NEXT: kord %k0, %k1, %k01161; SKX-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1162; SKX-NEXT: kandd %k1, %k0, %k01163; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11164; SKX-NEXT: kshiftld $31, %k1, %k11165; SKX-NEXT: kshiftrd $24, %k1, %k11166; SKX-NEXT: kord %k1, %k0, %k01167; SKX-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1168; SKX-NEXT: kandd %k1, %k0, %k01169; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11170; SKX-NEXT: kshiftld $31, %k1, %k11171; SKX-NEXT: kshiftrd $23, %k1, %k11172; SKX-NEXT: kord %k1, %k0, %k01173; SKX-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1174; SKX-NEXT: kandd %k1, %k0, %k01175; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11176; SKX-NEXT: kshiftld $31, %k1, %k11177; SKX-NEXT: kshiftrd $22, %k1, %k11178; SKX-NEXT: kord %k1, %k0, %k01179; SKX-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1180; SKX-NEXT: kandd %k1, %k0, %k01181; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11182; SKX-NEXT: kshiftld $31, %k1, %k11183; SKX-NEXT: kshiftrd $21, %k1, %k11184; SKX-NEXT: kord %k1, %k0, %k01185; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11186; SKX-NEXT: kandd %k6, %k0, %k01187; SKX-NEXT: kshiftld $31, %k1, %k11188; SKX-NEXT: kshiftrd $20, %k1, %k11189; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k61190; SKX-NEXT: kord %k1, %k0, %k01191; SKX-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1192; SKX-NEXT: kandd %k1, %k0, %k01193; SKX-NEXT: kshiftld $31, %k6, %k11194; SKX-NEXT: kshiftrd $19, %k1, %k11195; SKX-NEXT: kord %k1, %k0, %k01196; SKX-NEXT: kandd %k5, %k0, %k01197; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11198; SKX-NEXT: kshiftld $31, %k1, %k11199; SKX-NEXT: kshiftrd $18, %k1, %k11200; SKX-NEXT: kord %k1, %k0, %k01201; SKX-NEXT: kandd %k4, %k0, %k01202; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11203; SKX-NEXT: kshiftld $31, %k1, %k11204; SKX-NEXT: kshiftrd $17, %k1, %k11205; SKX-NEXT: kord %k1, %k0, %k01206; SKX-NEXT: kandd %k3, %k0, %k01207; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11208; SKX-NEXT: kshiftld $31, %k1, %k11209; SKX-NEXT: kshiftrd $16, %k1, %k11210; SKX-NEXT: kord %k1, %k0, %k01211; SKX-NEXT: kandd %k2, %k0, %k01212; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k11213; SKX-NEXT: kshiftld $31, %k1, %k11214; SKX-NEXT: kshiftrd $15, %k1, %k11215; SKX-NEXT: kord %k1, %k0, %k01216; SKX-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1217; SKX-NEXT: kandd %k1, %k0, %k01218; SKX-NEXT: kshiftrd $16, %k0, %k11219; SKX-NEXT: kmovd %k1, %edx1220; SKX-NEXT: kshiftrd $1, %k0, %k11221; SKX-NEXT: kmovd %k1, %r9d1222; SKX-NEXT: kshiftrd $2, %k0, %k11223; SKX-NEXT: kmovd %k1, %r8d1224; SKX-NEXT: kshiftrd $3, %k0, %k11225; SKX-NEXT: kmovd %k1, %esi1226; SKX-NEXT: kshiftrd $4, %k0, %k11227; SKX-NEXT: kmovd %k1, %edi1228; SKX-NEXT: kshiftrd $5, %k0, %k11229; SKX-NEXT: kmovd %k1, %ecx1230; SKX-NEXT: kshiftrd $6, %k0, %k11231; SKX-NEXT: kmovd %k1, %r10d1232; SKX-NEXT: kshiftrd $7, %k0, %k11233; SKX-NEXT: kmovd %k1, %ebx1234; SKX-NEXT: kshiftrd $8, %k0, %k11235; SKX-NEXT: kmovd %k1, %ebp1236; SKX-NEXT: kshiftrd $9, %k0, %k11237; SKX-NEXT: kmovd %k1, %r14d1238; SKX-NEXT: kshiftrd $10, %k0, %k11239; SKX-NEXT: kmovd %k1, %r11d1240; SKX-NEXT: kshiftrd $11, %k0, %k11241; SKX-NEXT: kmovd %k1, %r15d1242; SKX-NEXT: kshiftrd $12, %k0, %k11243; SKX-NEXT: kmovd %k1, %r12d1244; SKX-NEXT: kshiftrd $13, %k0, %k11245; SKX-NEXT: kmovd %k1, %r13d1246; SKX-NEXT: kshiftrd $14, %k0, %k11247; SKX-NEXT: andl $1, %edx1248; SKX-NEXT: movb %dl, 2(%rax)1249; SKX-NEXT: kmovd %k0, %edx1250; SKX-NEXT: andl $1, %edx1251; SKX-NEXT: andl $1, %r9d1252; SKX-NEXT: leal (%rdx,%r9,2), %r9d1253; SKX-NEXT: kmovd %k1, %edx1254; SKX-NEXT: kshiftrd $15, %k0, %k01255; SKX-NEXT: andl $1, %r8d1256; SKX-NEXT: leal (%r9,%r8,4), %r9d1257; SKX-NEXT: kmovd %k0, %r8d1258; SKX-NEXT: andl $1, %esi1259; SKX-NEXT: leal (%r9,%rsi,8), %esi1260; SKX-NEXT: andl $1, %edi1261; SKX-NEXT: shll $4, %edi1262; SKX-NEXT: orl %esi, %edi1263; SKX-NEXT: andl $1, %ecx1264; SKX-NEXT: shll $5, %ecx1265; SKX-NEXT: orl %edi, %ecx1266; SKX-NEXT: andl $1, %r10d1267; SKX-NEXT: shll $6, %r10d1268; SKX-NEXT: andl $1, %ebx1269; SKX-NEXT: shll $7, %ebx1270; SKX-NEXT: orl %r10d, %ebx1271; SKX-NEXT: andl $1, %ebp1272; SKX-NEXT: shll $8, %ebp1273; SKX-NEXT: orl %ebx, %ebp1274; SKX-NEXT: andl $1, %r14d1275; SKX-NEXT: shll $9, %r14d1276; SKX-NEXT: orl %ebp, %r14d1277; SKX-NEXT: andl $1, %r11d1278; SKX-NEXT: shll $10, %r11d1279; SKX-NEXT: orl %r14d, %r11d1280; SKX-NEXT: orl %ecx, %r11d1281; SKX-NEXT: andl $1, %r15d1282; SKX-NEXT: shll $11, %r15d1283; SKX-NEXT: andl $1, %r12d1284; SKX-NEXT: shll $12, %r12d1285; SKX-NEXT: orl %r15d, %r12d1286; SKX-NEXT: andl $1, %r13d1287; SKX-NEXT: shll $13, %r13d1288; SKX-NEXT: orl %r12d, %r13d1289; SKX-NEXT: andl $1, %edx1290; SKX-NEXT: shll $14, %edx1291; SKX-NEXT: orl %r13d, %edx1292; SKX-NEXT: andl $1, %r8d1293; SKX-NEXT: shll $15, %r8d1294; SKX-NEXT: orl %edx, %r8d1295; SKX-NEXT: orl %r11d, %r8d1296; SKX-NEXT: movw %r8w, (%rax)1297; SKX-NEXT: popq %rbx1298; SKX-NEXT: popq %r121299; SKX-NEXT: popq %r131300; SKX-NEXT: popq %r141301; SKX-NEXT: popq %r151302; SKX-NEXT: popq %rbp1303; SKX-NEXT: retq1304;1305; KNL_X32-LABEL: test16:1306; KNL_X32: ## %bb.0:1307; KNL_X32-NEXT: pushl %ebp1308; KNL_X32-NEXT: pushl %ebx1309; KNL_X32-NEXT: pushl %edi1310; KNL_X32-NEXT: pushl %esi1311; KNL_X32-NEXT: subl $16, %esp1312; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1313; KNL_X32-NEXT: andl $1, %eax1314; KNL_X32-NEXT: kmovw %eax, %k01315; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1316; KNL_X32-NEXT: kmovw %eax, %k11317; KNL_X32-NEXT: kshiftlw $15, %k1, %k11318; KNL_X32-NEXT: kshiftrw $14, %k1, %k11319; KNL_X32-NEXT: korw %k1, %k0, %k01320; KNL_X32-NEXT: movw $-5, %ax1321; KNL_X32-NEXT: kmovw %eax, %k11322; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill1323; KNL_X32-NEXT: kandw %k1, %k0, %k01324; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1325; KNL_X32-NEXT: kmovw %eax, %k11326; KNL_X32-NEXT: kshiftlw $15, %k1, %k11327; KNL_X32-NEXT: kshiftrw $13, %k1, %k11328; KNL_X32-NEXT: korw %k1, %k0, %k01329; KNL_X32-NEXT: movw $-9, %ax1330; KNL_X32-NEXT: kmovw %eax, %k11331; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill1332; KNL_X32-NEXT: kandw %k1, %k0, %k01333; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1334; KNL_X32-NEXT: kmovw %eax, %k11335; KNL_X32-NEXT: kshiftlw $15, %k1, %k11336; KNL_X32-NEXT: kshiftrw $12, %k1, %k11337; KNL_X32-NEXT: korw %k1, %k0, %k01338; KNL_X32-NEXT: movw $-17, %ax1339; KNL_X32-NEXT: kmovw %eax, %k11340; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill1341; KNL_X32-NEXT: kandw %k1, %k0, %k01342; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1343; KNL_X32-NEXT: kmovw %eax, %k11344; KNL_X32-NEXT: kshiftlw $15, %k1, %k11345; KNL_X32-NEXT: kshiftrw $11, %k1, %k11346; KNL_X32-NEXT: korw %k1, %k0, %k01347; KNL_X32-NEXT: movw $-33, %ax1348; KNL_X32-NEXT: kmovw %eax, %k11349; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill1350; KNL_X32-NEXT: kandw %k1, %k0, %k01351; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1352; KNL_X32-NEXT: kmovw %eax, %k11353; KNL_X32-NEXT: kshiftlw $15, %k1, %k11354; KNL_X32-NEXT: kshiftrw $10, %k1, %k11355; KNL_X32-NEXT: korw %k1, %k0, %k01356; KNL_X32-NEXT: movw $-65, %ax1357; KNL_X32-NEXT: kmovw %eax, %k11358; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill1359; KNL_X32-NEXT: kandw %k1, %k0, %k01360; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1361; KNL_X32-NEXT: kmovw %eax, %k11362; KNL_X32-NEXT: kshiftlw $15, %k1, %k11363; KNL_X32-NEXT: kshiftrw $9, %k1, %k11364; KNL_X32-NEXT: korw %k1, %k0, %k01365; KNL_X32-NEXT: movw $-129, %ax1366; KNL_X32-NEXT: kmovw %eax, %k11367; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill1368; KNL_X32-NEXT: kandw %k1, %k0, %k01369; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1370; KNL_X32-NEXT: kmovw %eax, %k11371; KNL_X32-NEXT: kshiftlw $15, %k1, %k11372; KNL_X32-NEXT: kshiftrw $8, %k1, %k11373; KNL_X32-NEXT: korw %k1, %k0, %k01374; KNL_X32-NEXT: movw $-257, %ax ## imm = 0xFEFF1375; KNL_X32-NEXT: kmovw %eax, %k11376; KNL_X32-NEXT: kmovw %k1, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill1377; KNL_X32-NEXT: kandw %k1, %k0, %k01378; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1379; KNL_X32-NEXT: kmovw %eax, %k11380; KNL_X32-NEXT: kshiftlw $15, %k1, %k11381; KNL_X32-NEXT: kshiftrw $7, %k1, %k11382; KNL_X32-NEXT: korw %k1, %k0, %k01383; KNL_X32-NEXT: movw $-513, %ax ## imm = 0xFDFF1384; KNL_X32-NEXT: kmovw %eax, %k71385; KNL_X32-NEXT: kandw %k7, %k0, %k01386; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1387; KNL_X32-NEXT: kmovw %eax, %k11388; KNL_X32-NEXT: kshiftlw $15, %k1, %k11389; KNL_X32-NEXT: kshiftrw $6, %k1, %k11390; KNL_X32-NEXT: korw %k1, %k0, %k01391; KNL_X32-NEXT: movw $-1025, %ax ## imm = 0xFBFF1392; KNL_X32-NEXT: kmovw %eax, %k41393; KNL_X32-NEXT: kandw %k4, %k0, %k01394; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1395; KNL_X32-NEXT: kmovw %eax, %k11396; KNL_X32-NEXT: kshiftlw $15, %k1, %k11397; KNL_X32-NEXT: kshiftrw $5, %k1, %k11398; KNL_X32-NEXT: korw %k1, %k0, %k01399; KNL_X32-NEXT: movw $-2049, %ax ## imm = 0xF7FF1400; KNL_X32-NEXT: kmovw %eax, %k31401; KNL_X32-NEXT: kandw %k3, %k0, %k01402; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1403; KNL_X32-NEXT: kmovw %eax, %k11404; KNL_X32-NEXT: kshiftlw $15, %k1, %k11405; KNL_X32-NEXT: kshiftrw $4, %k1, %k11406; KNL_X32-NEXT: korw %k1, %k0, %k01407; KNL_X32-NEXT: movw $-4097, %ax ## imm = 0xEFFF1408; KNL_X32-NEXT: kmovw %eax, %k21409; KNL_X32-NEXT: kandw %k2, %k0, %k01410; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1411; KNL_X32-NEXT: kmovw %eax, %k11412; KNL_X32-NEXT: kshiftlw $15, %k1, %k11413; KNL_X32-NEXT: kshiftrw $3, %k1, %k11414; KNL_X32-NEXT: korw %k1, %k0, %k01415; KNL_X32-NEXT: movw $-8193, %ax ## imm = 0xDFFF1416; KNL_X32-NEXT: kmovw %eax, %k11417; KNL_X32-NEXT: kandw %k1, %k0, %k01418; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1419; KNL_X32-NEXT: kmovw %eax, %k51420; KNL_X32-NEXT: kshiftlw $15, %k5, %k51421; KNL_X32-NEXT: kshiftrw $2, %k5, %k51422; KNL_X32-NEXT: korw %k5, %k0, %k51423; KNL_X32-NEXT: movw $-16385, %ax ## imm = 0xBFFF1424; KNL_X32-NEXT: kmovw %eax, %k01425; KNL_X32-NEXT: kandw %k0, %k5, %k51426; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1427; KNL_X32-NEXT: kmovw %eax, %k61428; KNL_X32-NEXT: kshiftlw $14, %k6, %k61429; KNL_X32-NEXT: korw %k6, %k5, %k51430; KNL_X32-NEXT: kshiftlw $1, %k5, %k51431; KNL_X32-NEXT: kshiftrw $1, %k5, %k51432; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1433; KNL_X32-NEXT: kmovw %eax, %k61434; KNL_X32-NEXT: kshiftlw $15, %k6, %k61435; KNL_X32-NEXT: korw %k6, %k5, %k51436; KNL_X32-NEXT: kmovw %k5, (%esp) ## 2-byte Spill1437; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1438; KNL_X32-NEXT: andl $1, %eax1439; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %ecx1440; KNL_X32-NEXT: kmovw %ecx, %k51441; KNL_X32-NEXT: kshiftlw $15, %k5, %k51442; KNL_X32-NEXT: kshiftrw $14, %k5, %k51443; KNL_X32-NEXT: kmovw %eax, %k61444; KNL_X32-NEXT: korw %k5, %k6, %k51445; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload1446; KNL_X32-NEXT: kandw %k6, %k5, %k51447; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1448; KNL_X32-NEXT: kmovw %eax, %k61449; KNL_X32-NEXT: kshiftlw $15, %k6, %k61450; KNL_X32-NEXT: kshiftrw $13, %k6, %k61451; KNL_X32-NEXT: korw %k6, %k5, %k51452; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload1453; KNL_X32-NEXT: kandw %k6, %k5, %k51454; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1455; KNL_X32-NEXT: kmovw %eax, %k61456; KNL_X32-NEXT: kshiftlw $15, %k6, %k61457; KNL_X32-NEXT: kshiftrw $12, %k6, %k61458; KNL_X32-NEXT: korw %k6, %k5, %k51459; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload1460; KNL_X32-NEXT: kandw %k6, %k5, %k51461; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1462; KNL_X32-NEXT: kmovw %eax, %k61463; KNL_X32-NEXT: kshiftlw $15, %k6, %k61464; KNL_X32-NEXT: kshiftrw $11, %k6, %k61465; KNL_X32-NEXT: korw %k6, %k5, %k51466; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload1467; KNL_X32-NEXT: kandw %k6, %k5, %k51468; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1469; KNL_X32-NEXT: kmovw %eax, %k61470; KNL_X32-NEXT: kshiftlw $15, %k6, %k61471; KNL_X32-NEXT: kshiftrw $10, %k6, %k61472; KNL_X32-NEXT: korw %k6, %k5, %k51473; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload1474; KNL_X32-NEXT: kandw %k6, %k5, %k51475; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1476; KNL_X32-NEXT: kmovw %eax, %k61477; KNL_X32-NEXT: kshiftlw $15, %k6, %k61478; KNL_X32-NEXT: kshiftrw $9, %k6, %k61479; KNL_X32-NEXT: korw %k6, %k5, %k51480; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload1481; KNL_X32-NEXT: kandw %k6, %k5, %k51482; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1483; KNL_X32-NEXT: kmovw %eax, %k61484; KNL_X32-NEXT: kshiftlw $15, %k6, %k61485; KNL_X32-NEXT: kshiftrw $8, %k6, %k61486; KNL_X32-NEXT: korw %k6, %k5, %k51487; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k6 ## 2-byte Reload1488; KNL_X32-NEXT: kandw %k6, %k5, %k51489; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1490; KNL_X32-NEXT: kmovw %eax, %k61491; KNL_X32-NEXT: kshiftlw $15, %k6, %k61492; KNL_X32-NEXT: kshiftrw $7, %k6, %k61493; KNL_X32-NEXT: korw %k6, %k5, %k51494; KNL_X32-NEXT: kandw %k7, %k5, %k51495; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1496; KNL_X32-NEXT: kmovw %eax, %k61497; KNL_X32-NEXT: kshiftlw $15, %k6, %k61498; KNL_X32-NEXT: kshiftrw $6, %k6, %k61499; KNL_X32-NEXT: korw %k6, %k5, %k51500; KNL_X32-NEXT: kandw %k4, %k5, %k41501; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1502; KNL_X32-NEXT: kmovw %eax, %k51503; KNL_X32-NEXT: kshiftlw $15, %k5, %k51504; KNL_X32-NEXT: kshiftrw $5, %k5, %k51505; KNL_X32-NEXT: korw %k5, %k4, %k41506; KNL_X32-NEXT: kandw %k3, %k4, %k31507; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1508; KNL_X32-NEXT: kmovw %eax, %k41509; KNL_X32-NEXT: kshiftlw $15, %k4, %k41510; KNL_X32-NEXT: kshiftrw $4, %k4, %k41511; KNL_X32-NEXT: korw %k4, %k3, %k31512; KNL_X32-NEXT: kandw %k2, %k3, %k21513; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1514; KNL_X32-NEXT: kmovw %eax, %k31515; KNL_X32-NEXT: kshiftlw $15, %k3, %k31516; KNL_X32-NEXT: kshiftrw $3, %k3, %k31517; KNL_X32-NEXT: korw %k3, %k2, %k21518; KNL_X32-NEXT: kandw %k1, %k2, %k11519; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1520; KNL_X32-NEXT: kmovw %eax, %k21521; KNL_X32-NEXT: kshiftlw $15, %k2, %k21522; KNL_X32-NEXT: kshiftrw $2, %k2, %k21523; KNL_X32-NEXT: korw %k2, %k1, %k11524; KNL_X32-NEXT: kandw %k0, %k1, %k01525; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1526; KNL_X32-NEXT: kmovw %eax, %k11527; KNL_X32-NEXT: kshiftlw $14, %k1, %k11528; KNL_X32-NEXT: korw %k1, %k0, %k01529; KNL_X32-NEXT: kshiftlw $1, %k0, %k01530; KNL_X32-NEXT: kshiftrw $1, %k0, %k01531; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax1532; KNL_X32-NEXT: kmovw %eax, %k11533; KNL_X32-NEXT: kshiftlw $15, %k1, %k11534; KNL_X32-NEXT: korw %k1, %k0, %k01535; KNL_X32-NEXT: kmovw (%esp), %k1 ## 2-byte Reload1536; KNL_X32-NEXT: kandw %k1, %k0, %k01537; KNL_X32-NEXT: kmovw {{[0-9]+}}(%esp), %k11538; KNL_X32-NEXT: kmovw {{[0-9]+}}(%esp), %k21539; KNL_X32-NEXT: kandw %k1, %k2, %k11540; KNL_X32-NEXT: movl {{[0-9]+}}(%esp), %eax1541; KNL_X32-NEXT: kmovw %k1, %ebx1542; KNL_X32-NEXT: kshiftrw $1, %k0, %k11543; KNL_X32-NEXT: kmovw %k1, %ebp1544; KNL_X32-NEXT: kshiftrw $2, %k0, %k11545; KNL_X32-NEXT: kmovw %k1, %esi1546; KNL_X32-NEXT: kshiftrw $3, %k0, %k11547; KNL_X32-NEXT: kmovw %k1, %edi1548; KNL_X32-NEXT: kshiftrw $4, %k0, %k11549; KNL_X32-NEXT: kmovw %k1, %edx1550; KNL_X32-NEXT: kshiftrw $5, %k0, %k11551; KNL_X32-NEXT: kmovw %k1, %ecx1552; KNL_X32-NEXT: kshiftrw $6, %k0, %k11553; KNL_X32-NEXT: andl $1, %ebx1554; KNL_X32-NEXT: movb %bl, 2(%eax)1555; KNL_X32-NEXT: kmovw %k0, %ebx1556; KNL_X32-NEXT: andl $1, %ebx1557; KNL_X32-NEXT: andl $1, %ebp1558; KNL_X32-NEXT: leal (%ebx,%ebp,2), %ebx1559; KNL_X32-NEXT: kmovw %k1, %ebp1560; KNL_X32-NEXT: kshiftrw $7, %k0, %k11561; KNL_X32-NEXT: andl $1, %esi1562; KNL_X32-NEXT: leal (%ebx,%esi,4), %ebx1563; KNL_X32-NEXT: kmovw %k1, %esi1564; KNL_X32-NEXT: kshiftrw $8, %k0, %k11565; KNL_X32-NEXT: andl $1, %edi1566; KNL_X32-NEXT: leal (%ebx,%edi,8), %ebx1567; KNL_X32-NEXT: kmovw %k1, %edi1568; KNL_X32-NEXT: kshiftrw $9, %k0, %k11569; KNL_X32-NEXT: andl $1, %edx1570; KNL_X32-NEXT: shll $4, %edx1571; KNL_X32-NEXT: orl %ebx, %edx1572; KNL_X32-NEXT: kmovw %k1, %ebx1573; KNL_X32-NEXT: kshiftrw $10, %k0, %k11574; KNL_X32-NEXT: andl $1, %ecx1575; KNL_X32-NEXT: shll $5, %ecx1576; KNL_X32-NEXT: orl %edx, %ecx1577; KNL_X32-NEXT: kmovw %k1, %edx1578; KNL_X32-NEXT: kshiftrw $11, %k0, %k11579; KNL_X32-NEXT: andl $1, %ebp1580; KNL_X32-NEXT: shll $6, %ebp1581; KNL_X32-NEXT: andl $1, %esi1582; KNL_X32-NEXT: shll $7, %esi1583; KNL_X32-NEXT: orl %ebp, %esi1584; KNL_X32-NEXT: kmovw %k1, %ebp1585; KNL_X32-NEXT: kshiftrw $12, %k0, %k11586; KNL_X32-NEXT: andl $1, %edi1587; KNL_X32-NEXT: shll $8, %edi1588; KNL_X32-NEXT: orl %esi, %edi1589; KNL_X32-NEXT: kmovw %k1, %esi1590; KNL_X32-NEXT: kshiftrw $13, %k0, %k11591; KNL_X32-NEXT: andl $1, %ebx1592; KNL_X32-NEXT: shll $9, %ebx1593; KNL_X32-NEXT: orl %edi, %ebx1594; KNL_X32-NEXT: kmovw %k1, %edi1595; KNL_X32-NEXT: kshiftrw $14, %k0, %k11596; KNL_X32-NEXT: andl $1, %edx1597; KNL_X32-NEXT: shll $10, %edx1598; KNL_X32-NEXT: orl %ebx, %edx1599; KNL_X32-NEXT: kmovw %k1, %ebx1600; KNL_X32-NEXT: kshiftrw $15, %k0, %k01601; KNL_X32-NEXT: orl %ecx, %edx1602; KNL_X32-NEXT: kmovw %k0, %ecx1603; KNL_X32-NEXT: andl $1, %ebp1604; KNL_X32-NEXT: shll $11, %ebp1605; KNL_X32-NEXT: andl $1, %esi1606; KNL_X32-NEXT: shll $12, %esi1607; KNL_X32-NEXT: orl %ebp, %esi1608; KNL_X32-NEXT: andl $1, %edi1609; KNL_X32-NEXT: shll $13, %edi1610; KNL_X32-NEXT: orl %esi, %edi1611; KNL_X32-NEXT: andl $1, %ebx1612; KNL_X32-NEXT: shll $14, %ebx1613; KNL_X32-NEXT: orl %edi, %ebx1614; KNL_X32-NEXT: andl $1, %ecx1615; KNL_X32-NEXT: shll $15, %ecx1616; KNL_X32-NEXT: orl %ebx, %ecx1617; KNL_X32-NEXT: orl %edx, %ecx1618; KNL_X32-NEXT: movw %cx, (%eax)1619; KNL_X32-NEXT: addl $16, %esp1620; KNL_X32-NEXT: popl %esi1621; KNL_X32-NEXT: popl %edi1622; KNL_X32-NEXT: popl %ebx1623; KNL_X32-NEXT: popl %ebp1624; KNL_X32-NEXT: retl $41625;1626; FASTISEL-LABEL: test16:1627; FASTISEL: ## %bb.0:1628; FASTISEL-NEXT: pushq %rbp1629; FASTISEL-NEXT: pushq %r151630; FASTISEL-NEXT: pushq %r141631; FASTISEL-NEXT: pushq %r131632; FASTISEL-NEXT: pushq %r121633; FASTISEL-NEXT: pushq %rbx1634; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k01635; FASTISEL-NEXT: movq %rdi, %rax1636; FASTISEL-NEXT: kshiftld $31, %k0, %k01637; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11638; FASTISEL-NEXT: kshiftrd $30, %k0, %k01639; FASTISEL-NEXT: kshiftld $31, %k1, %k11640; FASTISEL-NEXT: kshiftrd $31, %k1, %k11641; FASTISEL-NEXT: kord %k0, %k1, %k01642; FASTISEL-NEXT: movl $-5, %edi1643; FASTISEL-NEXT: kmovd %edi, %k11644; FASTISEL-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1645; FASTISEL-NEXT: kandd %k1, %k0, %k01646; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11647; FASTISEL-NEXT: kshiftld $31, %k1, %k11648; FASTISEL-NEXT: kshiftrd $29, %k1, %k11649; FASTISEL-NEXT: kord %k1, %k0, %k01650; FASTISEL-NEXT: movl $-9, %edi1651; FASTISEL-NEXT: kmovd %edi, %k11652; FASTISEL-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1653; FASTISEL-NEXT: kandd %k1, %k0, %k01654; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11655; FASTISEL-NEXT: kshiftld $31, %k1, %k11656; FASTISEL-NEXT: kshiftrd $28, %k1, %k11657; FASTISEL-NEXT: kord %k1, %k0, %k01658; FASTISEL-NEXT: movl $-17, %edi1659; FASTISEL-NEXT: kmovd %edi, %k21660; FASTISEL-NEXT: kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1661; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11662; FASTISEL-NEXT: kandd %k2, %k0, %k01663; FASTISEL-NEXT: kshiftld $31, %k1, %k11664; FASTISEL-NEXT: kshiftrd $27, %k1, %k11665; FASTISEL-NEXT: kord %k1, %k0, %k01666; FASTISEL-NEXT: movl $-33, %edi1667; FASTISEL-NEXT: kmovd %edi, %k11668; FASTISEL-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1669; FASTISEL-NEXT: kandd %k1, %k0, %k01670; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11671; FASTISEL-NEXT: kshiftld $31, %k1, %k11672; FASTISEL-NEXT: kshiftrd $26, %k1, %k11673; FASTISEL-NEXT: kord %k1, %k0, %k01674; FASTISEL-NEXT: movl $-65, %edi1675; FASTISEL-NEXT: kmovd %edi, %k11676; FASTISEL-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1677; FASTISEL-NEXT: kandd %k1, %k0, %k01678; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11679; FASTISEL-NEXT: kshiftld $31, %k1, %k11680; FASTISEL-NEXT: kshiftrd $25, %k1, %k11681; FASTISEL-NEXT: kord %k1, %k0, %k01682; FASTISEL-NEXT: movl $-129, %edi1683; FASTISEL-NEXT: kmovd %edi, %k21684; FASTISEL-NEXT: kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1685; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11686; FASTISEL-NEXT: kandd %k2, %k0, %k01687; FASTISEL-NEXT: kshiftld $31, %k1, %k11688; FASTISEL-NEXT: kshiftrd $24, %k1, %k11689; FASTISEL-NEXT: kord %k1, %k0, %k01690; FASTISEL-NEXT: movl $-257, %edi ## imm = 0xFEFF1691; FASTISEL-NEXT: kmovd %edi, %k11692; FASTISEL-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1693; FASTISEL-NEXT: kandd %k1, %k0, %k01694; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11695; FASTISEL-NEXT: kshiftld $31, %k1, %k11696; FASTISEL-NEXT: kshiftrd $23, %k1, %k11697; FASTISEL-NEXT: kord %k1, %k0, %k01698; FASTISEL-NEXT: movl $-513, %edi ## imm = 0xFDFF1699; FASTISEL-NEXT: kmovd %edi, %k11700; FASTISEL-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1701; FASTISEL-NEXT: kandd %k1, %k0, %k01702; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11703; FASTISEL-NEXT: kshiftld $31, %k1, %k11704; FASTISEL-NEXT: kshiftrd $22, %k1, %k11705; FASTISEL-NEXT: kord %k1, %k0, %k01706; FASTISEL-NEXT: movl $-1025, %edi ## imm = 0xFBFF1707; FASTISEL-NEXT: kmovd %edi, %k21708; FASTISEL-NEXT: kmovd %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1709; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11710; FASTISEL-NEXT: kandd %k2, %k0, %k01711; FASTISEL-NEXT: kshiftld $31, %k1, %k11712; FASTISEL-NEXT: kshiftrd $21, %k1, %k11713; FASTISEL-NEXT: kord %k1, %k0, %k01714; FASTISEL-NEXT: movl $-2049, %edi ## imm = 0xF7FF1715; FASTISEL-NEXT: kmovd %edi, %k61716; FASTISEL-NEXT: kandd %k6, %k0, %k01717; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11718; FASTISEL-NEXT: kshiftld $31, %k1, %k11719; FASTISEL-NEXT: kshiftrd $20, %k1, %k11720; FASTISEL-NEXT: kord %k1, %k0, %k01721; FASTISEL-NEXT: movl $-4097, %edi ## imm = 0xEFFF1722; FASTISEL-NEXT: kmovd %edi, %k11723; FASTISEL-NEXT: kmovd %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1724; FASTISEL-NEXT: kandd %k1, %k0, %k01725; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11726; FASTISEL-NEXT: kshiftld $31, %k1, %k11727; FASTISEL-NEXT: kshiftrd $19, %k1, %k11728; FASTISEL-NEXT: kord %k1, %k0, %k01729; FASTISEL-NEXT: movl $-8193, %edi ## imm = 0xDFFF1730; FASTISEL-NEXT: kmovd %edi, %k51731; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11732; FASTISEL-NEXT: kandd %k5, %k0, %k01733; FASTISEL-NEXT: kshiftld $31, %k1, %k11734; FASTISEL-NEXT: kshiftrd $18, %k1, %k11735; FASTISEL-NEXT: kord %k1, %k0, %k01736; FASTISEL-NEXT: movl $-16385, %edi ## imm = 0xBFFF1737; FASTISEL-NEXT: kmovd %edi, %k41738; FASTISEL-NEXT: kandd %k4, %k0, %k01739; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11740; FASTISEL-NEXT: kshiftld $31, %k1, %k11741; FASTISEL-NEXT: kshiftrd $17, %k1, %k11742; FASTISEL-NEXT: kord %k1, %k0, %k01743; FASTISEL-NEXT: movl $-32769, %edi ## imm = 0xFFFF7FFF1744; FASTISEL-NEXT: kmovd %edi, %k31745; FASTISEL-NEXT: kandd %k3, %k0, %k01746; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k71747; FASTISEL-NEXT: kshiftld $31, %k7, %k71748; FASTISEL-NEXT: kshiftrd $16, %k7, %k71749; FASTISEL-NEXT: kord %k7, %k0, %k71750; FASTISEL-NEXT: movl $-65537, %edi ## imm = 0xFFFEFFFF1751; FASTISEL-NEXT: kmovd %edi, %k21752; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k01753; FASTISEL-NEXT: kandd %k2, %k7, %k71754; FASTISEL-NEXT: kshiftld $31, %k0, %k01755; FASTISEL-NEXT: kshiftrd $15, %k0, %k01756; FASTISEL-NEXT: kord %k0, %k7, %k01757; FASTISEL-NEXT: kmovd %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 4-byte Spill1758; FASTISEL-NEXT: kmovd %edx, %k01759; FASTISEL-NEXT: kshiftld $31, %k0, %k01760; FASTISEL-NEXT: kshiftrd $30, %k0, %k01761; FASTISEL-NEXT: kmovd %esi, %k71762; FASTISEL-NEXT: kshiftld $31, %k7, %k71763; FASTISEL-NEXT: kshiftrd $31, %k7, %k71764; FASTISEL-NEXT: kord %k0, %k7, %k01765; FASTISEL-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1766; FASTISEL-NEXT: kandd %k1, %k0, %k01767; FASTISEL-NEXT: kmovd %ecx, %k71768; FASTISEL-NEXT: kshiftld $31, %k7, %k71769; FASTISEL-NEXT: kshiftrd $29, %k7, %k71770; FASTISEL-NEXT: kord %k7, %k0, %k01771; FASTISEL-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1772; FASTISEL-NEXT: kandd %k1, %k0, %k01773; FASTISEL-NEXT: kmovd %r8d, %k71774; FASTISEL-NEXT: kshiftld $31, %k7, %k71775; FASTISEL-NEXT: kshiftrd $28, %k7, %k71776; FASTISEL-NEXT: kord %k7, %k0, %k01777; FASTISEL-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1778; FASTISEL-NEXT: kandd %k1, %k0, %k01779; FASTISEL-NEXT: kmovd %r9d, %k71780; FASTISEL-NEXT: kshiftld $31, %k7, %k71781; FASTISEL-NEXT: kshiftrd $27, %k7, %k71782; FASTISEL-NEXT: kord %k7, %k0, %k01783; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k71784; FASTISEL-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1785; FASTISEL-NEXT: kandd %k1, %k0, %k11786; FASTISEL-NEXT: kshiftld $31, %k7, %k71787; FASTISEL-NEXT: kshiftrd $26, %k7, %k71788; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k01789; FASTISEL-NEXT: kord %k7, %k1, %k11790; FASTISEL-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k7 ## 4-byte Reload1791; FASTISEL-NEXT: kandd %k7, %k1, %k11792; FASTISEL-NEXT: kshiftld $31, %k0, %k01793; FASTISEL-NEXT: kshiftrd $25, %k0, %k01794; FASTISEL-NEXT: kord %k0, %k1, %k01795; FASTISEL-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1796; FASTISEL-NEXT: kandd %k1, %k0, %k01797; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11798; FASTISEL-NEXT: kshiftld $31, %k1, %k11799; FASTISEL-NEXT: kshiftrd $24, %k1, %k11800; FASTISEL-NEXT: kord %k1, %k0, %k01801; FASTISEL-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1802; FASTISEL-NEXT: kandd %k1, %k0, %k01803; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11804; FASTISEL-NEXT: kshiftld $31, %k1, %k11805; FASTISEL-NEXT: kshiftrd $23, %k1, %k11806; FASTISEL-NEXT: kord %k1, %k0, %k01807; FASTISEL-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1808; FASTISEL-NEXT: kandd %k1, %k0, %k01809; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11810; FASTISEL-NEXT: kshiftld $31, %k1, %k11811; FASTISEL-NEXT: kshiftrd $22, %k1, %k11812; FASTISEL-NEXT: kord %k1, %k0, %k01813; FASTISEL-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1814; FASTISEL-NEXT: kandd %k1, %k0, %k01815; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11816; FASTISEL-NEXT: kshiftld $31, %k1, %k11817; FASTISEL-NEXT: kshiftrd $21, %k1, %k11818; FASTISEL-NEXT: kord %k1, %k0, %k01819; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11820; FASTISEL-NEXT: kandd %k6, %k0, %k01821; FASTISEL-NEXT: kshiftld $31, %k1, %k11822; FASTISEL-NEXT: kshiftrd $20, %k1, %k11823; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k61824; FASTISEL-NEXT: kord %k1, %k0, %k01825; FASTISEL-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1826; FASTISEL-NEXT: kandd %k1, %k0, %k01827; FASTISEL-NEXT: kshiftld $31, %k6, %k11828; FASTISEL-NEXT: kshiftrd $19, %k1, %k11829; FASTISEL-NEXT: kord %k1, %k0, %k01830; FASTISEL-NEXT: kandd %k5, %k0, %k01831; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11832; FASTISEL-NEXT: kshiftld $31, %k1, %k11833; FASTISEL-NEXT: kshiftrd $18, %k1, %k11834; FASTISEL-NEXT: kord %k1, %k0, %k01835; FASTISEL-NEXT: kandd %k4, %k0, %k01836; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11837; FASTISEL-NEXT: kshiftld $31, %k1, %k11838; FASTISEL-NEXT: kshiftrd $17, %k1, %k11839; FASTISEL-NEXT: kord %k1, %k0, %k01840; FASTISEL-NEXT: kandd %k3, %k0, %k01841; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11842; FASTISEL-NEXT: kshiftld $31, %k1, %k11843; FASTISEL-NEXT: kshiftrd $16, %k1, %k11844; FASTISEL-NEXT: kord %k1, %k0, %k01845; FASTISEL-NEXT: kandd %k2, %k0, %k01846; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k11847; FASTISEL-NEXT: kshiftld $31, %k1, %k11848; FASTISEL-NEXT: kshiftrd $15, %k1, %k11849; FASTISEL-NEXT: kord %k1, %k0, %k01850; FASTISEL-NEXT: kmovd {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 4-byte Reload1851; FASTISEL-NEXT: kandd %k1, %k0, %k01852; FASTISEL-NEXT: kshiftrd $16, %k0, %k11853; FASTISEL-NEXT: kmovd %k1, %edx1854; FASTISEL-NEXT: kshiftrd $1, %k0, %k11855; FASTISEL-NEXT: kmovd %k1, %r9d1856; FASTISEL-NEXT: kshiftrd $2, %k0, %k11857; FASTISEL-NEXT: kmovd %k1, %r8d1858; FASTISEL-NEXT: kshiftrd $3, %k0, %k11859; FASTISEL-NEXT: kmovd %k1, %esi1860; FASTISEL-NEXT: kshiftrd $4, %k0, %k11861; FASTISEL-NEXT: kmovd %k1, %edi1862; FASTISEL-NEXT: kshiftrd $5, %k0, %k11863; FASTISEL-NEXT: kmovd %k1, %ecx1864; FASTISEL-NEXT: kshiftrd $6, %k0, %k11865; FASTISEL-NEXT: kmovd %k1, %r10d1866; FASTISEL-NEXT: kshiftrd $7, %k0, %k11867; FASTISEL-NEXT: kmovd %k1, %ebx1868; FASTISEL-NEXT: kshiftrd $8, %k0, %k11869; FASTISEL-NEXT: kmovd %k1, %ebp1870; FASTISEL-NEXT: kshiftrd $9, %k0, %k11871; FASTISEL-NEXT: kmovd %k1, %r14d1872; FASTISEL-NEXT: kshiftrd $10, %k0, %k11873; FASTISEL-NEXT: kmovd %k1, %r11d1874; FASTISEL-NEXT: kshiftrd $11, %k0, %k11875; FASTISEL-NEXT: kmovd %k1, %r15d1876; FASTISEL-NEXT: kshiftrd $12, %k0, %k11877; FASTISEL-NEXT: kmovd %k1, %r12d1878; FASTISEL-NEXT: kshiftrd $13, %k0, %k11879; FASTISEL-NEXT: kmovd %k1, %r13d1880; FASTISEL-NEXT: kshiftrd $14, %k0, %k11881; FASTISEL-NEXT: andl $1, %edx1882; FASTISEL-NEXT: movb %dl, 2(%rax)1883; FASTISEL-NEXT: kmovd %k0, %edx1884; FASTISEL-NEXT: andl $1, %edx1885; FASTISEL-NEXT: andl $1, %r9d1886; FASTISEL-NEXT: leal (%rdx,%r9,2), %r9d1887; FASTISEL-NEXT: kmovd %k1, %edx1888; FASTISEL-NEXT: kshiftrd $15, %k0, %k01889; FASTISEL-NEXT: andl $1, %r8d1890; FASTISEL-NEXT: leal (%r9,%r8,4), %r9d1891; FASTISEL-NEXT: kmovd %k0, %r8d1892; FASTISEL-NEXT: andl $1, %esi1893; FASTISEL-NEXT: leal (%r9,%rsi,8), %esi1894; FASTISEL-NEXT: andl $1, %edi1895; FASTISEL-NEXT: shll $4, %edi1896; FASTISEL-NEXT: orl %esi, %edi1897; FASTISEL-NEXT: andl $1, %ecx1898; FASTISEL-NEXT: shll $5, %ecx1899; FASTISEL-NEXT: orl %edi, %ecx1900; FASTISEL-NEXT: andl $1, %r10d1901; FASTISEL-NEXT: shll $6, %r10d1902; FASTISEL-NEXT: andl $1, %ebx1903; FASTISEL-NEXT: shll $7, %ebx1904; FASTISEL-NEXT: orl %r10d, %ebx1905; FASTISEL-NEXT: andl $1, %ebp1906; FASTISEL-NEXT: shll $8, %ebp1907; FASTISEL-NEXT: orl %ebx, %ebp1908; FASTISEL-NEXT: andl $1, %r14d1909; FASTISEL-NEXT: shll $9, %r14d1910; FASTISEL-NEXT: orl %ebp, %r14d1911; FASTISEL-NEXT: andl $1, %r11d1912; FASTISEL-NEXT: shll $10, %r11d1913; FASTISEL-NEXT: orl %r14d, %r11d1914; FASTISEL-NEXT: orl %ecx, %r11d1915; FASTISEL-NEXT: andl $1, %r15d1916; FASTISEL-NEXT: shll $11, %r15d1917; FASTISEL-NEXT: andl $1, %r12d1918; FASTISEL-NEXT: shll $12, %r12d1919; FASTISEL-NEXT: orl %r15d, %r12d1920; FASTISEL-NEXT: andl $1, %r13d1921; FASTISEL-NEXT: shll $13, %r13d1922; FASTISEL-NEXT: orl %r12d, %r13d1923; FASTISEL-NEXT: andl $1, %edx1924; FASTISEL-NEXT: shll $14, %edx1925; FASTISEL-NEXT: orl %r13d, %edx1926; FASTISEL-NEXT: andl $1, %r8d1927; FASTISEL-NEXT: shll $15, %r8d1928; FASTISEL-NEXT: orl %edx, %r8d1929; FASTISEL-NEXT: orl %r11d, %r8d1930; FASTISEL-NEXT: movw %r8w, (%rax)1931; FASTISEL-NEXT: popq %rbx1932; FASTISEL-NEXT: popq %r121933; FASTISEL-NEXT: popq %r131934; FASTISEL-NEXT: popq %r141935; FASTISEL-NEXT: popq %r151936; FASTISEL-NEXT: popq %rbp1937; FASTISEL-NEXT: retq1938 %c = and <17 x i1> %a, %b1939 ret <17 x i1> %c1940}1941 1942define <7 x i1> @test17(<7 x i1> %a, <7 x i1> %b, <7 x i1> %c, <7 x i1> %d, <7 x i1>%e, <7 x i1>%f, <7 x i1> %g, <7 x i1> %h, <7 x i1> %i) nounwind {1943; KNL-LABEL: test17:1944; KNL: ## %bb.0:1945; KNL-NEXT: movq %rdi, %rax1946; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi1947; KNL-NEXT: andl $1, %edi1948; KNL-NEXT: kmovw %edi, %k01949; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi1950; KNL-NEXT: kmovw %edi, %k11951; KNL-NEXT: kshiftlw $15, %k1, %k11952; KNL-NEXT: kshiftrw $14, %k1, %k11953; KNL-NEXT: korw %k1, %k0, %k01954; KNL-NEXT: movw $-5, %di1955; KNL-NEXT: kmovw %edi, %k11956; KNL-NEXT: kandw %k1, %k0, %k01957; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi1958; KNL-NEXT: kmovw %edi, %k21959; KNL-NEXT: kshiftlw $15, %k2, %k21960; KNL-NEXT: kshiftrw $13, %k2, %k21961; KNL-NEXT: korw %k2, %k0, %k01962; KNL-NEXT: movw $-9, %di1963; KNL-NEXT: kmovw %edi, %k21964; KNL-NEXT: kandw %k2, %k0, %k01965; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi1966; KNL-NEXT: kmovw %edi, %k31967; KNL-NEXT: kshiftlw $15, %k3, %k31968; KNL-NEXT: kshiftrw $12, %k3, %k31969; KNL-NEXT: korw %k3, %k0, %k01970; KNL-NEXT: movw $-17, %di1971; KNL-NEXT: kmovw %edi, %k31972; KNL-NEXT: kandw %k3, %k0, %k01973; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi1974; KNL-NEXT: kmovw %edi, %k41975; KNL-NEXT: kshiftlw $15, %k4, %k41976; KNL-NEXT: kshiftrw $11, %k4, %k41977; KNL-NEXT: korw %k4, %k0, %k01978; KNL-NEXT: movw $-33, %di1979; KNL-NEXT: kmovw %edi, %k41980; KNL-NEXT: kandw %k4, %k0, %k01981; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi1982; KNL-NEXT: kmovw %edi, %k51983; KNL-NEXT: kshiftlw $15, %k5, %k51984; KNL-NEXT: kshiftrw $10, %k5, %k51985; KNL-NEXT: korw %k5, %k0, %k01986; KNL-NEXT: movw $-65, %di1987; KNL-NEXT: kmovw %edi, %k51988; KNL-NEXT: kandw %k5, %k0, %k01989; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi1990; KNL-NEXT: kmovw %edi, %k61991; KNL-NEXT: kshiftlw $15, %k6, %k61992; KNL-NEXT: kshiftrw $9, %k6, %k61993; KNL-NEXT: korw %k6, %k0, %k01994; KNL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill1995; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi1996; KNL-NEXT: andl $1, %edi1997; KNL-NEXT: kmovw %edi, %k01998; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi1999; KNL-NEXT: kmovw %edi, %k62000; KNL-NEXT: kshiftlw $15, %k6, %k62001; KNL-NEXT: kshiftrw $14, %k6, %k62002; KNL-NEXT: korw %k6, %k0, %k02003; KNL-NEXT: kandw %k1, %k0, %k02004; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2005; KNL-NEXT: kmovw %edi, %k62006; KNL-NEXT: kshiftlw $15, %k6, %k62007; KNL-NEXT: kshiftrw $13, %k6, %k62008; KNL-NEXT: korw %k6, %k0, %k02009; KNL-NEXT: kandw %k2, %k0, %k02010; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2011; KNL-NEXT: kmovw %edi, %k62012; KNL-NEXT: kshiftlw $15, %k6, %k62013; KNL-NEXT: kshiftrw $12, %k6, %k62014; KNL-NEXT: korw %k6, %k0, %k02015; KNL-NEXT: kandw %k3, %k0, %k02016; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2017; KNL-NEXT: kmovw %edi, %k62018; KNL-NEXT: kshiftlw $15, %k6, %k62019; KNL-NEXT: kshiftrw $11, %k6, %k62020; KNL-NEXT: korw %k6, %k0, %k02021; KNL-NEXT: kandw %k4, %k0, %k02022; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2023; KNL-NEXT: kmovw %edi, %k62024; KNL-NEXT: kshiftlw $15, %k6, %k62025; KNL-NEXT: kshiftrw $10, %k6, %k62026; KNL-NEXT: korw %k6, %k0, %k02027; KNL-NEXT: kandw %k5, %k0, %k02028; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2029; KNL-NEXT: kmovw %edi, %k62030; KNL-NEXT: kshiftlw $15, %k6, %k62031; KNL-NEXT: kshiftrw $9, %k6, %k62032; KNL-NEXT: korw %k6, %k0, %k02033; KNL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2034; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2035; KNL-NEXT: andl $1, %edi2036; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d2037; KNL-NEXT: kmovw %r10d, %k02038; KNL-NEXT: kshiftlw $15, %k0, %k02039; KNL-NEXT: kshiftrw $14, %k0, %k02040; KNL-NEXT: kmovw %edi, %k62041; KNL-NEXT: korw %k0, %k6, %k02042; KNL-NEXT: kandw %k1, %k0, %k02043; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2044; KNL-NEXT: kmovw %edi, %k62045; KNL-NEXT: kshiftlw $15, %k6, %k62046; KNL-NEXT: kshiftrw $13, %k6, %k62047; KNL-NEXT: korw %k6, %k0, %k02048; KNL-NEXT: kandw %k2, %k0, %k02049; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2050; KNL-NEXT: kmovw %edi, %k62051; KNL-NEXT: kshiftlw $15, %k6, %k62052; KNL-NEXT: kshiftrw $12, %k6, %k62053; KNL-NEXT: korw %k6, %k0, %k02054; KNL-NEXT: kandw %k3, %k0, %k02055; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2056; KNL-NEXT: kmovw %edi, %k62057; KNL-NEXT: kshiftlw $15, %k6, %k62058; KNL-NEXT: kshiftrw $11, %k6, %k62059; KNL-NEXT: korw %k6, %k0, %k02060; KNL-NEXT: kandw %k4, %k0, %k02061; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2062; KNL-NEXT: kmovw %edi, %k62063; KNL-NEXT: kshiftlw $15, %k6, %k62064; KNL-NEXT: kshiftrw $10, %k6, %k62065; KNL-NEXT: korw %k6, %k0, %k02066; KNL-NEXT: kandw %k5, %k0, %k02067; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2068; KNL-NEXT: kmovw %edi, %k62069; KNL-NEXT: kshiftlw $15, %k6, %k62070; KNL-NEXT: kshiftrw $9, %k6, %k62071; KNL-NEXT: korw %k6, %k0, %k02072; KNL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2073; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2074; KNL-NEXT: andl $1, %edi2075; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d2076; KNL-NEXT: kmovw %r10d, %k02077; KNL-NEXT: kshiftlw $15, %k0, %k02078; KNL-NEXT: kshiftrw $14, %k0, %k02079; KNL-NEXT: kmovw %edi, %k62080; KNL-NEXT: korw %k0, %k6, %k02081; KNL-NEXT: kandw %k1, %k0, %k02082; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2083; KNL-NEXT: kmovw %edi, %k62084; KNL-NEXT: kshiftlw $15, %k6, %k62085; KNL-NEXT: kshiftrw $13, %k6, %k62086; KNL-NEXT: korw %k6, %k0, %k02087; KNL-NEXT: kandw %k2, %k0, %k02088; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2089; KNL-NEXT: kmovw %edi, %k62090; KNL-NEXT: kshiftlw $15, %k6, %k62091; KNL-NEXT: kshiftrw $12, %k6, %k62092; KNL-NEXT: korw %k6, %k0, %k02093; KNL-NEXT: kandw %k3, %k0, %k02094; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2095; KNL-NEXT: kmovw %edi, %k62096; KNL-NEXT: kshiftlw $15, %k6, %k62097; KNL-NEXT: kshiftrw $11, %k6, %k62098; KNL-NEXT: korw %k6, %k0, %k02099; KNL-NEXT: kandw %k4, %k0, %k02100; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2101; KNL-NEXT: kmovw %edi, %k62102; KNL-NEXT: kshiftlw $15, %k6, %k62103; KNL-NEXT: kshiftrw $10, %k6, %k62104; KNL-NEXT: korw %k6, %k0, %k02105; KNL-NEXT: kandw %k5, %k0, %k02106; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2107; KNL-NEXT: kmovw %edi, %k62108; KNL-NEXT: kshiftlw $15, %k6, %k62109; KNL-NEXT: kshiftrw $9, %k6, %k62110; KNL-NEXT: korw %k6, %k0, %k02111; KNL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2112; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2113; KNL-NEXT: andl $1, %edi2114; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d2115; KNL-NEXT: kmovw %r10d, %k02116; KNL-NEXT: kshiftlw $15, %k0, %k02117; KNL-NEXT: kshiftrw $14, %k0, %k02118; KNL-NEXT: kmovw %edi, %k62119; KNL-NEXT: korw %k0, %k6, %k02120; KNL-NEXT: kandw %k1, %k0, %k02121; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2122; KNL-NEXT: kmovw %edi, %k62123; KNL-NEXT: kshiftlw $15, %k6, %k62124; KNL-NEXT: kshiftrw $13, %k6, %k62125; KNL-NEXT: korw %k6, %k0, %k02126; KNL-NEXT: kandw %k2, %k0, %k02127; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2128; KNL-NEXT: kmovw %edi, %k62129; KNL-NEXT: kshiftlw $15, %k6, %k62130; KNL-NEXT: kshiftrw $12, %k6, %k62131; KNL-NEXT: korw %k6, %k0, %k02132; KNL-NEXT: kandw %k3, %k0, %k02133; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2134; KNL-NEXT: kmovw %edi, %k62135; KNL-NEXT: kshiftlw $15, %k6, %k62136; KNL-NEXT: kshiftrw $11, %k6, %k62137; KNL-NEXT: korw %k6, %k0, %k02138; KNL-NEXT: kandw %k4, %k0, %k02139; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2140; KNL-NEXT: kmovw %edi, %k62141; KNL-NEXT: kshiftlw $15, %k6, %k62142; KNL-NEXT: kshiftrw $10, %k6, %k62143; KNL-NEXT: korw %k6, %k0, %k02144; KNL-NEXT: kandw %k5, %k0, %k02145; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2146; KNL-NEXT: kmovw %edi, %k62147; KNL-NEXT: kshiftlw $15, %k6, %k62148; KNL-NEXT: kshiftrw $9, %k6, %k62149; KNL-NEXT: korw %k6, %k0, %k02150; KNL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2151; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2152; KNL-NEXT: andl $1, %edi2153; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d2154; KNL-NEXT: kmovw %r10d, %k02155; KNL-NEXT: kshiftlw $15, %k0, %k02156; KNL-NEXT: kshiftrw $14, %k0, %k02157; KNL-NEXT: kmovw %edi, %k62158; KNL-NEXT: korw %k0, %k6, %k02159; KNL-NEXT: kandw %k1, %k0, %k02160; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2161; KNL-NEXT: kmovw %edi, %k62162; KNL-NEXT: kshiftlw $15, %k6, %k62163; KNL-NEXT: kshiftrw $13, %k6, %k62164; KNL-NEXT: korw %k6, %k0, %k02165; KNL-NEXT: kandw %k2, %k0, %k02166; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2167; KNL-NEXT: kmovw %edi, %k62168; KNL-NEXT: kshiftlw $15, %k6, %k62169; KNL-NEXT: kshiftrw $12, %k6, %k62170; KNL-NEXT: korw %k6, %k0, %k02171; KNL-NEXT: kandw %k3, %k0, %k02172; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2173; KNL-NEXT: kmovw %edi, %k62174; KNL-NEXT: kshiftlw $15, %k6, %k62175; KNL-NEXT: kshiftrw $11, %k6, %k62176; KNL-NEXT: korw %k6, %k0, %k02177; KNL-NEXT: kandw %k4, %k0, %k02178; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2179; KNL-NEXT: kmovw %edi, %k62180; KNL-NEXT: kshiftlw $15, %k6, %k62181; KNL-NEXT: kshiftrw $10, %k6, %k62182; KNL-NEXT: korw %k6, %k0, %k02183; KNL-NEXT: kandw %k5, %k0, %k02184; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2185; KNL-NEXT: kmovw %edi, %k62186; KNL-NEXT: kshiftlw $15, %k6, %k62187; KNL-NEXT: kshiftrw $9, %k6, %k62188; KNL-NEXT: korw %k6, %k0, %k02189; KNL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2190; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2191; KNL-NEXT: andl $1, %edi2192; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %r10d2193; KNL-NEXT: kmovw %r10d, %k02194; KNL-NEXT: kshiftlw $15, %k0, %k02195; KNL-NEXT: kshiftrw $14, %k0, %k02196; KNL-NEXT: kmovw %edi, %k62197; KNL-NEXT: korw %k0, %k6, %k02198; KNL-NEXT: kandw %k1, %k0, %k02199; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2200; KNL-NEXT: kmovw %edi, %k62201; KNL-NEXT: kshiftlw $15, %k6, %k62202; KNL-NEXT: kshiftrw $13, %k6, %k62203; KNL-NEXT: korw %k6, %k0, %k02204; KNL-NEXT: kandw %k2, %k0, %k02205; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2206; KNL-NEXT: kmovw %edi, %k62207; KNL-NEXT: kshiftlw $15, %k6, %k62208; KNL-NEXT: kshiftrw $12, %k6, %k62209; KNL-NEXT: korw %k6, %k0, %k02210; KNL-NEXT: kandw %k3, %k0, %k02211; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2212; KNL-NEXT: kmovw %edi, %k62213; KNL-NEXT: kshiftlw $15, %k6, %k62214; KNL-NEXT: kshiftrw $11, %k6, %k62215; KNL-NEXT: korw %k6, %k0, %k02216; KNL-NEXT: kandw %k4, %k0, %k02217; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2218; KNL-NEXT: kmovw %edi, %k62219; KNL-NEXT: kshiftlw $15, %k6, %k62220; KNL-NEXT: kshiftrw $10, %k6, %k62221; KNL-NEXT: korw %k6, %k0, %k02222; KNL-NEXT: kandw %k5, %k0, %k02223; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edi2224; KNL-NEXT: kmovw %edi, %k62225; KNL-NEXT: kshiftlw $15, %k6, %k62226; KNL-NEXT: kshiftrw $9, %k6, %k62227; KNL-NEXT: korw %k6, %k0, %k02228; KNL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2229; KNL-NEXT: andl $1, %esi2230; KNL-NEXT: kmovw %edx, %k02231; KNL-NEXT: kshiftlw $15, %k0, %k02232; KNL-NEXT: kshiftrw $14, %k0, %k02233; KNL-NEXT: kmovw %esi, %k72234; KNL-NEXT: korw %k0, %k7, %k02235; KNL-NEXT: kandw %k1, %k0, %k02236; KNL-NEXT: kmovw %ecx, %k72237; KNL-NEXT: kshiftlw $15, %k7, %k72238; KNL-NEXT: kshiftrw $13, %k7, %k72239; KNL-NEXT: korw %k7, %k0, %k02240; KNL-NEXT: kandw %k2, %k0, %k02241; KNL-NEXT: kmovw %r8d, %k72242; KNL-NEXT: kshiftlw $15, %k7, %k72243; KNL-NEXT: kshiftrw $12, %k7, %k72244; KNL-NEXT: korw %k7, %k0, %k02245; KNL-NEXT: kandw %k3, %k0, %k02246; KNL-NEXT: kmovw %r9d, %k72247; KNL-NEXT: kshiftlw $15, %k7, %k72248; KNL-NEXT: kshiftrw $11, %k7, %k72249; KNL-NEXT: korw %k7, %k0, %k02250; KNL-NEXT: kandw %k4, %k0, %k02251; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx2252; KNL-NEXT: kmovw %ecx, %k72253; KNL-NEXT: kshiftlw $15, %k7, %k72254; KNL-NEXT: kshiftrw $10, %k7, %k72255; KNL-NEXT: korw %k7, %k0, %k02256; KNL-NEXT: kandw %k5, %k0, %k02257; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx2258; KNL-NEXT: kmovw %ecx, %k72259; KNL-NEXT: kshiftlw $15, %k7, %k72260; KNL-NEXT: kshiftrw $9, %k7, %k72261; KNL-NEXT: korw %k7, %k0, %k02262; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx2263; KNL-NEXT: andl $1, %ecx2264; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %edx2265; KNL-NEXT: kmovw %edx, %k72266; KNL-NEXT: kshiftlw $15, %k7, %k72267; KNL-NEXT: kshiftrw $14, %k7, %k72268; KNL-NEXT: kmovw %ecx, %k62269; KNL-NEXT: korw %k7, %k6, %k62270; KNL-NEXT: kandw %k1, %k6, %k12271; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx2272; KNL-NEXT: kmovw %ecx, %k62273; KNL-NEXT: kshiftlw $15, %k6, %k62274; KNL-NEXT: kshiftrw $13, %k6, %k62275; KNL-NEXT: korw %k6, %k1, %k12276; KNL-NEXT: kandw %k2, %k1, %k12277; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx2278; KNL-NEXT: kmovw %ecx, %k22279; KNL-NEXT: kshiftlw $15, %k2, %k22280; KNL-NEXT: kshiftrw $12, %k2, %k22281; KNL-NEXT: korw %k2, %k1, %k12282; KNL-NEXT: kandw %k3, %k1, %k12283; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx2284; KNL-NEXT: kmovw %ecx, %k22285; KNL-NEXT: kshiftlw $15, %k2, %k22286; KNL-NEXT: kshiftrw $11, %k2, %k22287; KNL-NEXT: korw %k2, %k1, %k12288; KNL-NEXT: kandw %k4, %k1, %k12289; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx2290; KNL-NEXT: kmovw %ecx, %k22291; KNL-NEXT: kshiftlw $15, %k2, %k22292; KNL-NEXT: kshiftrw $10, %k2, %k22293; KNL-NEXT: korw %k2, %k1, %k12294; KNL-NEXT: kandw %k5, %k1, %k12295; KNL-NEXT: movzbl {{[0-9]+}}(%rsp), %ecx2296; KNL-NEXT: kmovw %ecx, %k22297; KNL-NEXT: kshiftlw $15, %k2, %k22298; KNL-NEXT: kshiftrw $9, %k2, %k22299; KNL-NEXT: korw %k2, %k1, %k12300; KNL-NEXT: kandw %k1, %k0, %k02301; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2302; KNL-NEXT: kandw %k1, %k0, %k02303; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2304; KNL-NEXT: kandw %k1, %k0, %k02305; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2306; KNL-NEXT: kandw %k1, %k0, %k02307; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2308; KNL-NEXT: kandw %k1, %k0, %k02309; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2310; KNL-NEXT: kandw %k1, %k0, %k02311; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2312; KNL-NEXT: kandw %k1, %k0, %k02313; KNL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2314; KNL-NEXT: kandw %k1, %k0, %k02315; KNL-NEXT: kshiftrw $6, %k0, %k12316; KNL-NEXT: kmovw %k1, %ecx2317; KNL-NEXT: kshiftrw $5, %k0, %k12318; KNL-NEXT: kmovw %k1, %edx2319; KNL-NEXT: kshiftrw $4, %k0, %k12320; KNL-NEXT: kmovw %k1, %esi2321; KNL-NEXT: kshiftrw $3, %k0, %k12322; KNL-NEXT: kmovw %k1, %edi2323; KNL-NEXT: kshiftrw $2, %k0, %k12324; KNL-NEXT: kmovw %k1, %r8d2325; KNL-NEXT: kshiftrw $1, %k0, %k12326; KNL-NEXT: kmovw %k1, %r9d2327; KNL-NEXT: kmovw %k0, %r10d2328; KNL-NEXT: andb $1, %r10b2329; KNL-NEXT: andb $1, %r9b2330; KNL-NEXT: addb %r9b, %r9b2331; KNL-NEXT: orb %r10b, %r9b2332; KNL-NEXT: andb $1, %r8b2333; KNL-NEXT: shlb $2, %r8b2334; KNL-NEXT: orb %r9b, %r8b2335; KNL-NEXT: andb $1, %dil2336; KNL-NEXT: shlb $3, %dil2337; KNL-NEXT: orb %r8b, %dil2338; KNL-NEXT: andb $1, %sil2339; KNL-NEXT: shlb $4, %sil2340; KNL-NEXT: orb %dil, %sil2341; KNL-NEXT: andb $1, %dl2342; KNL-NEXT: shlb $5, %dl2343; KNL-NEXT: orb %sil, %dl2344; KNL-NEXT: shlb $6, %cl2345; KNL-NEXT: orb %dl, %cl2346; KNL-NEXT: andb $127, %cl2347; KNL-NEXT: movb %cl, (%rax)2348; KNL-NEXT: retq2349;2350; SKX-LABEL: test17:2351; SKX: ## %bb.0:2352; SKX-NEXT: movq %rdi, %rax2353; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k02354; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12355; SKX-NEXT: kshiftlb $7, %k0, %k02356; SKX-NEXT: kshiftrb $6, %k0, %k02357; SKX-NEXT: kshiftlb $7, %k1, %k12358; SKX-NEXT: kshiftrb $7, %k1, %k12359; SKX-NEXT: korb %k0, %k1, %k02360; SKX-NEXT: movb $-5, %dil2361; SKX-NEXT: kmovd %edi, %k12362; SKX-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2363; SKX-NEXT: kandb %k1, %k0, %k02364; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12365; SKX-NEXT: kshiftlb $7, %k1, %k12366; SKX-NEXT: kshiftrb $5, %k1, %k12367; SKX-NEXT: korb %k1, %k0, %k02368; SKX-NEXT: movb $-9, %dil2369; SKX-NEXT: kmovd %edi, %k62370; SKX-NEXT: kandb %k6, %k0, %k02371; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k22372; SKX-NEXT: kshiftlb $7, %k2, %k22373; SKX-NEXT: kshiftrb $4, %k2, %k22374; SKX-NEXT: korb %k2, %k0, %k02375; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k22376; SKX-NEXT: movb $-17, %dil2377; SKX-NEXT: kmovd %edi, %k32378; SKX-NEXT: kandb %k3, %k0, %k02379; SKX-NEXT: kshiftlb $7, %k2, %k22380; SKX-NEXT: kshiftrb $3, %k2, %k22381; SKX-NEXT: korb %k2, %k0, %k02382; SKX-NEXT: movb $-33, %dil2383; SKX-NEXT: kmovd %edi, %k12384; SKX-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2385; SKX-NEXT: kandb %k1, %k0, %k02386; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k42387; SKX-NEXT: kshiftlb $7, %k4, %k42388; SKX-NEXT: kshiftrb $2, %k4, %k42389; SKX-NEXT: korb %k4, %k0, %k02390; SKX-NEXT: movb $-65, %dil2391; SKX-NEXT: kmovd %edi, %k12392; SKX-NEXT: kandb %k1, %k0, %k02393; SKX-NEXT: kmovq %k1, %k22394; SKX-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2395; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k52396; SKX-NEXT: kshiftlb $7, %k5, %k52397; SKX-NEXT: kshiftrb $1, %k5, %k52398; SKX-NEXT: korb %k5, %k0, %k52399; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k02400; SKX-NEXT: kshiftlb $7, %k0, %k02401; SKX-NEXT: kshiftrb $6, %k0, %k02402; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k72403; SKX-NEXT: kshiftlb $7, %k7, %k72404; SKX-NEXT: kshiftrb $7, %k7, %k72405; SKX-NEXT: korb %k0, %k7, %k02406; SKX-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k4 ## 2-byte Reload2407; SKX-NEXT: kandb %k4, %k0, %k02408; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k72409; SKX-NEXT: kshiftlb $7, %k7, %k72410; SKX-NEXT: kshiftrb $5, %k7, %k72411; SKX-NEXT: korb %k7, %k0, %k02412; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k72413; SKX-NEXT: kandb %k6, %k0, %k12414; SKX-NEXT: kshiftlb $7, %k7, %k72415; SKX-NEXT: kshiftrb $4, %k7, %k72416; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k02417; SKX-NEXT: korb %k7, %k1, %k12418; SKX-NEXT: kandb %k3, %k1, %k12419; SKX-NEXT: kshiftlb $7, %k0, %k02420; SKX-NEXT: kshiftrb $3, %k0, %k02421; SKX-NEXT: korb %k0, %k1, %k02422; SKX-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2423; SKX-NEXT: kandb %k1, %k0, %k02424; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12425; SKX-NEXT: kshiftlb $7, %k1, %k12426; SKX-NEXT: kshiftrb $2, %k1, %k12427; SKX-NEXT: korb %k1, %k0, %k02428; SKX-NEXT: kandb %k2, %k0, %k02429; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12430; SKX-NEXT: kshiftlb $7, %k1, %k12431; SKX-NEXT: kshiftrb $1, %k1, %k12432; SKX-NEXT: korb %k1, %k0, %k02433; SKX-NEXT: kandb %k5, %k0, %k02434; SKX-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2435; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k02436; SKX-NEXT: kshiftlb $7, %k0, %k02437; SKX-NEXT: kshiftrb $6, %k0, %k02438; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12439; SKX-NEXT: kshiftlb $7, %k1, %k12440; SKX-NEXT: kshiftrb $7, %k1, %k12441; SKX-NEXT: korb %k0, %k1, %k02442; SKX-NEXT: kmovq %k4, %k22443; SKX-NEXT: kandb %k4, %k0, %k02444; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12445; SKX-NEXT: kshiftlb $7, %k1, %k12446; SKX-NEXT: kshiftrb $5, %k1, %k12447; SKX-NEXT: korb %k1, %k0, %k02448; SKX-NEXT: kmovq %k6, %k72449; SKX-NEXT: kmovw %k6, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2450; SKX-NEXT: kandb %k6, %k0, %k02451; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12452; SKX-NEXT: kshiftlb $7, %k1, %k12453; SKX-NEXT: kshiftrb $4, %k1, %k12454; SKX-NEXT: korb %k1, %k0, %k02455; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12456; SKX-NEXT: kandb %k3, %k0, %k02457; SKX-NEXT: kshiftlb $7, %k1, %k12458; SKX-NEXT: kshiftrb $3, %k1, %k12459; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k52460; SKX-NEXT: korb %k1, %k0, %k02461; SKX-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k4 ## 2-byte Reload2462; SKX-NEXT: kandb %k4, %k0, %k02463; SKX-NEXT: kshiftlb $7, %k5, %k12464; SKX-NEXT: kshiftrb $2, %k1, %k12465; SKX-NEXT: korb %k1, %k0, %k02466; SKX-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload2467; SKX-NEXT: kandb %k6, %k0, %k02468; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12469; SKX-NEXT: kshiftlb $7, %k1, %k12470; SKX-NEXT: kshiftrb $1, %k1, %k12471; SKX-NEXT: korb %k1, %k0, %k02472; SKX-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2473; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12474; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k52475; SKX-NEXT: kshiftlb $7, %k1, %k12476; SKX-NEXT: kshiftrb $6, %k1, %k12477; SKX-NEXT: kshiftlb $7, %k5, %k52478; SKX-NEXT: kshiftrb $7, %k5, %k52479; SKX-NEXT: korb %k1, %k5, %k12480; SKX-NEXT: kandb %k2, %k1, %k12481; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k52482; SKX-NEXT: kshiftlb $7, %k5, %k52483; SKX-NEXT: kshiftrb $5, %k5, %k52484; SKX-NEXT: korb %k5, %k1, %k12485; SKX-NEXT: kandb %k7, %k1, %k12486; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k52487; SKX-NEXT: kshiftlb $7, %k5, %k52488; SKX-NEXT: kshiftrb $4, %k5, %k52489; SKX-NEXT: korb %k5, %k1, %k12490; SKX-NEXT: kandb %k3, %k1, %k12491; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k52492; SKX-NEXT: kshiftlb $7, %k5, %k52493; SKX-NEXT: kshiftrb $3, %k5, %k52494; SKX-NEXT: korb %k5, %k1, %k12495; SKX-NEXT: kandb %k4, %k1, %k12496; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k52497; SKX-NEXT: kshiftlb $7, %k5, %k52498; SKX-NEXT: kshiftrb $2, %k5, %k52499; SKX-NEXT: korb %k5, %k1, %k12500; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k52501; SKX-NEXT: kandb %k6, %k1, %k12502; SKX-NEXT: kshiftlb $7, %k5, %k52503; SKX-NEXT: kshiftrb $1, %k5, %k52504; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k02505; SKX-NEXT: korb %k5, %k1, %k72506; SKX-NEXT: kshiftlb $7, %k0, %k02507; SKX-NEXT: kshiftrb $6, %k0, %k02508; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12509; SKX-NEXT: kshiftlb $7, %k1, %k12510; SKX-NEXT: kshiftrb $7, %k1, %k12511; SKX-NEXT: korb %k0, %k1, %k02512; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12513; SKX-NEXT: kandb %k2, %k0, %k02514; SKX-NEXT: kshiftlb $7, %k1, %k12515; SKX-NEXT: kshiftrb $5, %k1, %k12516; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k52517; SKX-NEXT: korb %k1, %k0, %k02518; SKX-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2519; SKX-NEXT: kandb %k1, %k0, %k02520; SKX-NEXT: kshiftlb $7, %k5, %k12521; SKX-NEXT: kshiftrb $4, %k1, %k12522; SKX-NEXT: korb %k1, %k0, %k02523; SKX-NEXT: kandb %k3, %k0, %k02524; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12525; SKX-NEXT: kshiftlb $7, %k1, %k12526; SKX-NEXT: kshiftrb $3, %k1, %k12527; SKX-NEXT: korb %k1, %k0, %k02528; SKX-NEXT: kandb %k4, %k0, %k02529; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12530; SKX-NEXT: kshiftlb $7, %k1, %k12531; SKX-NEXT: kshiftrb $2, %k1, %k12532; SKX-NEXT: korb %k1, %k0, %k02533; SKX-NEXT: kandb %k6, %k0, %k02534; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12535; SKX-NEXT: kshiftlb $7, %k1, %k12536; SKX-NEXT: kshiftrb $1, %k1, %k12537; SKX-NEXT: korb %k1, %k0, %k02538; SKX-NEXT: kandb %k7, %k0, %k02539; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12540; SKX-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k5 ## 2-byte Reload2541; SKX-NEXT: kandb %k5, %k0, %k02542; SKX-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2543; SKX-NEXT: kshiftlb $7, %k1, %k02544; SKX-NEXT: kshiftrb $6, %k0, %k02545; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12546; SKX-NEXT: kshiftlb $7, %k1, %k12547; SKX-NEXT: kshiftrb $7, %k1, %k12548; SKX-NEXT: korb %k0, %k1, %k02549; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12550; SKX-NEXT: kandb %k2, %k0, %k02551; SKX-NEXT: kshiftlb $7, %k1, %k12552; SKX-NEXT: kshiftrb $5, %k1, %k12553; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k72554; SKX-NEXT: korb %k1, %k0, %k02555; SKX-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k5 ## 2-byte Reload2556; SKX-NEXT: kandb %k5, %k0, %k02557; SKX-NEXT: kshiftlb $7, %k7, %k12558; SKX-NEXT: kshiftrb $4, %k1, %k12559; SKX-NEXT: korb %k1, %k0, %k02560; SKX-NEXT: kandb %k3, %k0, %k02561; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12562; SKX-NEXT: kshiftlb $7, %k1, %k12563; SKX-NEXT: kshiftrb $3, %k1, %k12564; SKX-NEXT: korb %k1, %k0, %k02565; SKX-NEXT: kandb %k4, %k0, %k02566; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12567; SKX-NEXT: kshiftlb $7, %k1, %k12568; SKX-NEXT: kshiftrb $2, %k1, %k12569; SKX-NEXT: korb %k1, %k0, %k02570; SKX-NEXT: kandb %k6, %k0, %k02571; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12572; SKX-NEXT: kshiftlb $7, %k1, %k12573; SKX-NEXT: kshiftrb $1, %k1, %k12574; SKX-NEXT: korb %k1, %k0, %k02575; SKX-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2576; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k02577; SKX-NEXT: kshiftlb $7, %k0, %k02578; SKX-NEXT: kshiftrb $6, %k0, %k02579; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12580; SKX-NEXT: kshiftlb $7, %k1, %k12581; SKX-NEXT: kshiftrb $7, %k1, %k12582; SKX-NEXT: korb %k0, %k1, %k02583; SKX-NEXT: kandb %k2, %k0, %k02584; SKX-NEXT: kmovq %k2, %k72585; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12586; SKX-NEXT: kshiftlb $7, %k1, %k12587; SKX-NEXT: kshiftrb $5, %k1, %k12588; SKX-NEXT: korb %k1, %k0, %k02589; SKX-NEXT: kandb %k5, %k0, %k02590; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12591; SKX-NEXT: kshiftlb $7, %k1, %k12592; SKX-NEXT: kshiftrb $4, %k1, %k12593; SKX-NEXT: korb %k1, %k0, %k02594; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12595; SKX-NEXT: kandb %k3, %k0, %k22596; SKX-NEXT: kshiftlb $7, %k1, %k12597; SKX-NEXT: kshiftrb $3, %k1, %k12598; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k02599; SKX-NEXT: korb %k1, %k2, %k12600; SKX-NEXT: kandb %k4, %k1, %k12601; SKX-NEXT: kshiftlb $7, %k0, %k02602; SKX-NEXT: kshiftrb $2, %k0, %k02603; SKX-NEXT: korb %k0, %k1, %k02604; SKX-NEXT: kandb %k6, %k0, %k02605; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12606; SKX-NEXT: kshiftlb $7, %k1, %k12607; SKX-NEXT: kshiftrb $1, %k1, %k12608; SKX-NEXT: korb %k1, %k0, %k02609; SKX-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2610; SKX-NEXT: kandb %k1, %k0, %k02611; SKX-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill2612; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k02613; SKX-NEXT: kshiftlb $7, %k0, %k02614; SKX-NEXT: kshiftrb $6, %k0, %k02615; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12616; SKX-NEXT: kshiftlb $7, %k1, %k12617; SKX-NEXT: kshiftrb $7, %k1, %k12618; SKX-NEXT: korb %k0, %k1, %k02619; SKX-NEXT: kandb %k7, %k0, %k02620; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12621; SKX-NEXT: kshiftlb $7, %k1, %k12622; SKX-NEXT: kshiftrb $5, %k1, %k12623; SKX-NEXT: korb %k1, %k0, %k02624; SKX-NEXT: kandb %k5, %k0, %k02625; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12626; SKX-NEXT: kshiftlb $7, %k1, %k12627; SKX-NEXT: kshiftrb $4, %k1, %k12628; SKX-NEXT: korb %k1, %k0, %k02629; SKX-NEXT: kandb %k3, %k0, %k02630; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12631; SKX-NEXT: kshiftlb $7, %k1, %k12632; SKX-NEXT: kshiftrb $3, %k1, %k12633; SKX-NEXT: korb %k1, %k0, %k02634; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k12635; SKX-NEXT: kandb %k4, %k0, %k02636; SKX-NEXT: kshiftlb $7, %k1, %k12637; SKX-NEXT: kshiftrb $2, %k1, %k12638; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k22639; SKX-NEXT: korb %k1, %k0, %k02640; SKX-NEXT: kandb %k6, %k0, %k02641; SKX-NEXT: kshiftlb $7, %k2, %k12642; SKX-NEXT: kshiftrb $1, %k1, %k12643; SKX-NEXT: korb %k1, %k0, %k02644; SKX-NEXT: kmovd %edx, %k12645; SKX-NEXT: kshiftlb $7, %k1, %k12646; SKX-NEXT: kshiftrb $6, %k1, %k12647; SKX-NEXT: kmovd %esi, %k22648; SKX-NEXT: kshiftlb $7, %k2, %k22649; SKX-NEXT: kshiftrb $7, %k2, %k22650; SKX-NEXT: korb %k1, %k2, %k12651; SKX-NEXT: kandb %k7, %k1, %k12652; SKX-NEXT: kmovd %ecx, %k22653; SKX-NEXT: kshiftlb $7, %k2, %k22654; SKX-NEXT: kshiftrb $5, %k2, %k22655; SKX-NEXT: korb %k2, %k1, %k12656; SKX-NEXT: kandb %k5, %k1, %k12657; SKX-NEXT: kmovd %r8d, %k22658; SKX-NEXT: kshiftlb $7, %k2, %k22659; SKX-NEXT: kshiftrb $4, %k2, %k22660; SKX-NEXT: korb %k2, %k1, %k12661; SKX-NEXT: kandb %k3, %k1, %k12662; SKX-NEXT: kmovd %r9d, %k22663; SKX-NEXT: kshiftlb $7, %k2, %k22664; SKX-NEXT: kshiftrb $3, %k2, %k22665; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k32666; SKX-NEXT: korb %k2, %k1, %k12667; SKX-NEXT: kandb %k4, %k1, %k12668; SKX-NEXT: kshiftlb $7, %k3, %k22669; SKX-NEXT: kshiftrb $2, %k2, %k22670; SKX-NEXT: korb %k2, %k1, %k12671; SKX-NEXT: kandb %k6, %k1, %k12672; SKX-NEXT: kmovb {{[0-9]+}}(%rsp), %k22673; SKX-NEXT: kshiftlb $7, %k2, %k22674; SKX-NEXT: kshiftrb $1, %k2, %k22675; SKX-NEXT: korb %k2, %k1, %k12676; SKX-NEXT: kandb %k0, %k1, %k02677; SKX-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2678; SKX-NEXT: kandb %k1, %k0, %k02679; SKX-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2680; SKX-NEXT: kandb %k1, %k0, %k02681; SKX-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload2682; SKX-NEXT: kandb %k1, %k0, %k02683; SKX-NEXT: kshiftrb $6, %k0, %k12684; SKX-NEXT: kmovd %k1, %ecx2685; SKX-NEXT: kshiftrb $5, %k0, %k12686; SKX-NEXT: kmovd %k1, %edx2687; SKX-NEXT: kshiftrb $4, %k0, %k12688; SKX-NEXT: kmovd %k1, %esi2689; SKX-NEXT: kshiftrb $3, %k0, %k12690; SKX-NEXT: kmovd %k1, %edi2691; SKX-NEXT: kshiftrb $2, %k0, %k12692; SKX-NEXT: kmovd %k1, %r8d2693; SKX-NEXT: kshiftrb $1, %k0, %k12694; SKX-NEXT: kmovd %k1, %r9d2695; SKX-NEXT: kmovd %k0, %r10d2696; SKX-NEXT: andb $1, %r10b2697; SKX-NEXT: andb $1, %r9b2698; SKX-NEXT: addb %r9b, %r9b2699; SKX-NEXT: orb %r10b, %r9b2700; SKX-NEXT: andb $1, %r8b2701; SKX-NEXT: shlb $2, %r8b2702; SKX-NEXT: orb %r9b, %r8b2703; SKX-NEXT: andb $1, %dil2704; SKX-NEXT: shlb $3, %dil2705; SKX-NEXT: orb %r8b, %dil2706; SKX-NEXT: andb $1, %sil2707; SKX-NEXT: shlb $4, %sil2708; SKX-NEXT: orb %dil, %sil2709; SKX-NEXT: andb $1, %dl2710; SKX-NEXT: shlb $5, %dl2711; SKX-NEXT: orb %sil, %dl2712; SKX-NEXT: shlb $6, %cl2713; SKX-NEXT: orb %dl, %cl2714; SKX-NEXT: andb $127, %cl2715; SKX-NEXT: movb %cl, (%rax)2716; SKX-NEXT: retq2717;2718; KNL_X32-LABEL: test17:2719; KNL_X32: ## %bb.0:2720; KNL_X32-NEXT: pushl %ebx2721; KNL_X32-NEXT: subl $16, %esp2722; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2723; KNL_X32-NEXT: andl $1, %eax2724; KNL_X32-NEXT: kmovw %eax, %k02725; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2726; KNL_X32-NEXT: kmovw %eax, %k12727; KNL_X32-NEXT: kshiftlw $15, %k1, %k12728; KNL_X32-NEXT: kshiftrw $14, %k1, %k12729; KNL_X32-NEXT: korw %k1, %k0, %k02730; KNL_X32-NEXT: movw $-5, %ax2731; KNL_X32-NEXT: kmovw %eax, %k12732; KNL_X32-NEXT: kandw %k1, %k0, %k02733; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2734; KNL_X32-NEXT: kmovw %eax, %k22735; KNL_X32-NEXT: kshiftlw $15, %k2, %k22736; KNL_X32-NEXT: kshiftrw $13, %k2, %k22737; KNL_X32-NEXT: korw %k2, %k0, %k02738; KNL_X32-NEXT: movw $-9, %ax2739; KNL_X32-NEXT: kmovw %eax, %k22740; KNL_X32-NEXT: kandw %k2, %k0, %k02741; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2742; KNL_X32-NEXT: kmovw %eax, %k32743; KNL_X32-NEXT: kshiftlw $15, %k3, %k32744; KNL_X32-NEXT: kshiftrw $12, %k3, %k32745; KNL_X32-NEXT: korw %k3, %k0, %k02746; KNL_X32-NEXT: movw $-17, %ax2747; KNL_X32-NEXT: kmovw %eax, %k32748; KNL_X32-NEXT: kandw %k3, %k0, %k02749; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2750; KNL_X32-NEXT: kmovw %eax, %k42751; KNL_X32-NEXT: kshiftlw $15, %k4, %k42752; KNL_X32-NEXT: kshiftrw $11, %k4, %k42753; KNL_X32-NEXT: korw %k4, %k0, %k02754; KNL_X32-NEXT: movw $-33, %ax2755; KNL_X32-NEXT: kmovw %eax, %k42756; KNL_X32-NEXT: kandw %k4, %k0, %k02757; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2758; KNL_X32-NEXT: kmovw %eax, %k52759; KNL_X32-NEXT: kshiftlw $15, %k5, %k52760; KNL_X32-NEXT: kshiftrw $10, %k5, %k52761; KNL_X32-NEXT: korw %k5, %k0, %k02762; KNL_X32-NEXT: movw $-65, %ax2763; KNL_X32-NEXT: kmovw %eax, %k52764; KNL_X32-NEXT: kandw %k5, %k0, %k02765; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2766; KNL_X32-NEXT: kmovw %eax, %k62767; KNL_X32-NEXT: kshiftlw $15, %k6, %k62768; KNL_X32-NEXT: kshiftrw $9, %k6, %k62769; KNL_X32-NEXT: korw %k6, %k0, %k02770; KNL_X32-NEXT: kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill2771; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2772; KNL_X32-NEXT: andl $1, %eax2773; KNL_X32-NEXT: kmovw %eax, %k02774; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2775; KNL_X32-NEXT: kmovw %eax, %k62776; KNL_X32-NEXT: kshiftlw $15, %k6, %k62777; KNL_X32-NEXT: kshiftrw $14, %k6, %k62778; KNL_X32-NEXT: korw %k6, %k0, %k02779; KNL_X32-NEXT: kandw %k1, %k0, %k02780; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2781; KNL_X32-NEXT: kmovw %eax, %k62782; KNL_X32-NEXT: kshiftlw $15, %k6, %k62783; KNL_X32-NEXT: kshiftrw $13, %k6, %k62784; KNL_X32-NEXT: korw %k6, %k0, %k02785; KNL_X32-NEXT: kandw %k2, %k0, %k02786; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2787; KNL_X32-NEXT: kmovw %eax, %k62788; KNL_X32-NEXT: kshiftlw $15, %k6, %k62789; KNL_X32-NEXT: kshiftrw $12, %k6, %k62790; KNL_X32-NEXT: korw %k6, %k0, %k02791; KNL_X32-NEXT: kandw %k3, %k0, %k02792; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2793; KNL_X32-NEXT: kmovw %eax, %k62794; KNL_X32-NEXT: kshiftlw $15, %k6, %k62795; KNL_X32-NEXT: kshiftrw $11, %k6, %k62796; KNL_X32-NEXT: korw %k6, %k0, %k02797; KNL_X32-NEXT: kandw %k4, %k0, %k02798; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2799; KNL_X32-NEXT: kmovw %eax, %k62800; KNL_X32-NEXT: kshiftlw $15, %k6, %k62801; KNL_X32-NEXT: kshiftrw $10, %k6, %k62802; KNL_X32-NEXT: korw %k6, %k0, %k02803; KNL_X32-NEXT: kandw %k5, %k0, %k02804; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2805; KNL_X32-NEXT: kmovw %eax, %k62806; KNL_X32-NEXT: kshiftlw $15, %k6, %k62807; KNL_X32-NEXT: kshiftrw $9, %k6, %k62808; KNL_X32-NEXT: korw %k6, %k0, %k02809; KNL_X32-NEXT: kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill2810; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2811; KNL_X32-NEXT: andl $1, %eax2812; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %ecx2813; KNL_X32-NEXT: kmovw %ecx, %k02814; KNL_X32-NEXT: kshiftlw $15, %k0, %k02815; KNL_X32-NEXT: kshiftrw $14, %k0, %k02816; KNL_X32-NEXT: kmovw %eax, %k62817; KNL_X32-NEXT: korw %k0, %k6, %k02818; KNL_X32-NEXT: kandw %k1, %k0, %k02819; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2820; KNL_X32-NEXT: kmovw %eax, %k62821; KNL_X32-NEXT: kshiftlw $15, %k6, %k62822; KNL_X32-NEXT: kshiftrw $13, %k6, %k62823; KNL_X32-NEXT: korw %k6, %k0, %k02824; KNL_X32-NEXT: kandw %k2, %k0, %k02825; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2826; KNL_X32-NEXT: kmovw %eax, %k62827; KNL_X32-NEXT: kshiftlw $15, %k6, %k62828; KNL_X32-NEXT: kshiftrw $12, %k6, %k62829; KNL_X32-NEXT: korw %k6, %k0, %k02830; KNL_X32-NEXT: kandw %k3, %k0, %k02831; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2832; KNL_X32-NEXT: kmovw %eax, %k62833; KNL_X32-NEXT: kshiftlw $15, %k6, %k62834; KNL_X32-NEXT: kshiftrw $11, %k6, %k62835; KNL_X32-NEXT: korw %k6, %k0, %k02836; KNL_X32-NEXT: kandw %k4, %k0, %k02837; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2838; KNL_X32-NEXT: kmovw %eax, %k62839; KNL_X32-NEXT: kshiftlw $15, %k6, %k62840; KNL_X32-NEXT: kshiftrw $10, %k6, %k62841; KNL_X32-NEXT: korw %k6, %k0, %k02842; KNL_X32-NEXT: kandw %k5, %k0, %k02843; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2844; KNL_X32-NEXT: kmovw %eax, %k62845; KNL_X32-NEXT: kshiftlw $15, %k6, %k62846; KNL_X32-NEXT: kshiftrw $9, %k6, %k62847; KNL_X32-NEXT: korw %k6, %k0, %k02848; KNL_X32-NEXT: kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill2849; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2850; KNL_X32-NEXT: andl $1, %eax2851; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %ecx2852; KNL_X32-NEXT: kmovw %ecx, %k02853; KNL_X32-NEXT: kshiftlw $15, %k0, %k02854; KNL_X32-NEXT: kshiftrw $14, %k0, %k02855; KNL_X32-NEXT: kmovw %eax, %k62856; KNL_X32-NEXT: korw %k0, %k6, %k02857; KNL_X32-NEXT: kandw %k1, %k0, %k02858; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2859; KNL_X32-NEXT: kmovw %eax, %k62860; KNL_X32-NEXT: kshiftlw $15, %k6, %k62861; KNL_X32-NEXT: kshiftrw $13, %k6, %k62862; KNL_X32-NEXT: korw %k6, %k0, %k02863; KNL_X32-NEXT: kandw %k2, %k0, %k02864; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2865; KNL_X32-NEXT: kmovw %eax, %k62866; KNL_X32-NEXT: kshiftlw $15, %k6, %k62867; KNL_X32-NEXT: kshiftrw $12, %k6, %k62868; KNL_X32-NEXT: korw %k6, %k0, %k02869; KNL_X32-NEXT: kandw %k3, %k0, %k02870; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2871; KNL_X32-NEXT: kmovw %eax, %k62872; KNL_X32-NEXT: kshiftlw $15, %k6, %k62873; KNL_X32-NEXT: kshiftrw $11, %k6, %k62874; KNL_X32-NEXT: korw %k6, %k0, %k02875; KNL_X32-NEXT: kandw %k4, %k0, %k02876; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2877; KNL_X32-NEXT: kmovw %eax, %k62878; KNL_X32-NEXT: kshiftlw $15, %k6, %k62879; KNL_X32-NEXT: kshiftrw $10, %k6, %k62880; KNL_X32-NEXT: korw %k6, %k0, %k02881; KNL_X32-NEXT: kandw %k5, %k0, %k02882; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2883; KNL_X32-NEXT: kmovw %eax, %k62884; KNL_X32-NEXT: kshiftlw $15, %k6, %k62885; KNL_X32-NEXT: kshiftrw $9, %k6, %k62886; KNL_X32-NEXT: korw %k6, %k0, %k02887; KNL_X32-NEXT: kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill2888; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2889; KNL_X32-NEXT: andl $1, %eax2890; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %ecx2891; KNL_X32-NEXT: kmovw %ecx, %k02892; KNL_X32-NEXT: kshiftlw $15, %k0, %k02893; KNL_X32-NEXT: kshiftrw $14, %k0, %k02894; KNL_X32-NEXT: kmovw %eax, %k62895; KNL_X32-NEXT: korw %k0, %k6, %k02896; KNL_X32-NEXT: kandw %k1, %k0, %k02897; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2898; KNL_X32-NEXT: kmovw %eax, %k62899; KNL_X32-NEXT: kshiftlw $15, %k6, %k62900; KNL_X32-NEXT: kshiftrw $13, %k6, %k62901; KNL_X32-NEXT: korw %k6, %k0, %k02902; KNL_X32-NEXT: kandw %k2, %k0, %k02903; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2904; KNL_X32-NEXT: kmovw %eax, %k62905; KNL_X32-NEXT: kshiftlw $15, %k6, %k62906; KNL_X32-NEXT: kshiftrw $12, %k6, %k62907; KNL_X32-NEXT: korw %k6, %k0, %k02908; KNL_X32-NEXT: kandw %k3, %k0, %k02909; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2910; KNL_X32-NEXT: kmovw %eax, %k62911; KNL_X32-NEXT: kshiftlw $15, %k6, %k62912; KNL_X32-NEXT: kshiftrw $11, %k6, %k62913; KNL_X32-NEXT: korw %k6, %k0, %k02914; KNL_X32-NEXT: kandw %k4, %k0, %k02915; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2916; KNL_X32-NEXT: kmovw %eax, %k62917; KNL_X32-NEXT: kshiftlw $15, %k6, %k62918; KNL_X32-NEXT: kshiftrw $10, %k6, %k62919; KNL_X32-NEXT: korw %k6, %k0, %k02920; KNL_X32-NEXT: kandw %k5, %k0, %k02921; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2922; KNL_X32-NEXT: kmovw %eax, %k62923; KNL_X32-NEXT: kshiftlw $15, %k6, %k62924; KNL_X32-NEXT: kshiftrw $9, %k6, %k62925; KNL_X32-NEXT: korw %k6, %k0, %k02926; KNL_X32-NEXT: kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill2927; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2928; KNL_X32-NEXT: andl $1, %eax2929; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %ecx2930; KNL_X32-NEXT: kmovw %ecx, %k02931; KNL_X32-NEXT: kshiftlw $15, %k0, %k02932; KNL_X32-NEXT: kshiftrw $14, %k0, %k02933; KNL_X32-NEXT: kmovw %eax, %k62934; KNL_X32-NEXT: korw %k0, %k6, %k02935; KNL_X32-NEXT: kandw %k1, %k0, %k02936; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2937; KNL_X32-NEXT: kmovw %eax, %k62938; KNL_X32-NEXT: kshiftlw $15, %k6, %k62939; KNL_X32-NEXT: kshiftrw $13, %k6, %k62940; KNL_X32-NEXT: korw %k6, %k0, %k02941; KNL_X32-NEXT: kandw %k2, %k0, %k02942; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2943; KNL_X32-NEXT: kmovw %eax, %k62944; KNL_X32-NEXT: kshiftlw $15, %k6, %k62945; KNL_X32-NEXT: kshiftrw $12, %k6, %k62946; KNL_X32-NEXT: korw %k6, %k0, %k02947; KNL_X32-NEXT: kandw %k3, %k0, %k02948; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2949; KNL_X32-NEXT: kmovw %eax, %k62950; KNL_X32-NEXT: kshiftlw $15, %k6, %k62951; KNL_X32-NEXT: kshiftrw $11, %k6, %k62952; KNL_X32-NEXT: korw %k6, %k0, %k02953; KNL_X32-NEXT: kandw %k4, %k0, %k02954; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2955; KNL_X32-NEXT: kmovw %eax, %k62956; KNL_X32-NEXT: kshiftlw $15, %k6, %k62957; KNL_X32-NEXT: kshiftrw $10, %k6, %k62958; KNL_X32-NEXT: korw %k6, %k0, %k02959; KNL_X32-NEXT: kandw %k5, %k0, %k02960; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2961; KNL_X32-NEXT: kmovw %eax, %k62962; KNL_X32-NEXT: kshiftlw $15, %k6, %k62963; KNL_X32-NEXT: kshiftrw $9, %k6, %k62964; KNL_X32-NEXT: korw %k6, %k0, %k02965; KNL_X32-NEXT: kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill2966; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2967; KNL_X32-NEXT: andl $1, %eax2968; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %ecx2969; KNL_X32-NEXT: kmovw %ecx, %k02970; KNL_X32-NEXT: kshiftlw $15, %k0, %k02971; KNL_X32-NEXT: kshiftrw $14, %k0, %k02972; KNL_X32-NEXT: kmovw %eax, %k62973; KNL_X32-NEXT: korw %k0, %k6, %k02974; KNL_X32-NEXT: kandw %k1, %k0, %k02975; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2976; KNL_X32-NEXT: kmovw %eax, %k62977; KNL_X32-NEXT: kshiftlw $15, %k6, %k62978; KNL_X32-NEXT: kshiftrw $13, %k6, %k62979; KNL_X32-NEXT: korw %k6, %k0, %k02980; KNL_X32-NEXT: kandw %k2, %k0, %k02981; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2982; KNL_X32-NEXT: kmovw %eax, %k62983; KNL_X32-NEXT: kshiftlw $15, %k6, %k62984; KNL_X32-NEXT: kshiftrw $12, %k6, %k62985; KNL_X32-NEXT: korw %k6, %k0, %k02986; KNL_X32-NEXT: kandw %k3, %k0, %k02987; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2988; KNL_X32-NEXT: kmovw %eax, %k62989; KNL_X32-NEXT: kshiftlw $15, %k6, %k62990; KNL_X32-NEXT: kshiftrw $11, %k6, %k62991; KNL_X32-NEXT: korw %k6, %k0, %k02992; KNL_X32-NEXT: kandw %k4, %k0, %k02993; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax2994; KNL_X32-NEXT: kmovw %eax, %k62995; KNL_X32-NEXT: kshiftlw $15, %k6, %k62996; KNL_X32-NEXT: kshiftrw $10, %k6, %k62997; KNL_X32-NEXT: korw %k6, %k0, %k02998; KNL_X32-NEXT: kandw %k5, %k0, %k02999; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3000; KNL_X32-NEXT: kmovw %eax, %k63001; KNL_X32-NEXT: kshiftlw $15, %k6, %k63002; KNL_X32-NEXT: kshiftrw $9, %k6, %k63003; KNL_X32-NEXT: korw %k6, %k0, %k03004; KNL_X32-NEXT: kmovw %k0, {{[-0-9]+}}(%e{{[sb]}}p) ## 2-byte Spill3005; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3006; KNL_X32-NEXT: andl $1, %eax3007; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %ecx3008; KNL_X32-NEXT: kmovw %ecx, %k03009; KNL_X32-NEXT: kshiftlw $15, %k0, %k03010; KNL_X32-NEXT: kshiftrw $14, %k0, %k03011; KNL_X32-NEXT: kmovw %eax, %k73012; KNL_X32-NEXT: korw %k0, %k7, %k03013; KNL_X32-NEXT: kandw %k1, %k0, %k03014; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3015; KNL_X32-NEXT: kmovw %eax, %k73016; KNL_X32-NEXT: kshiftlw $15, %k7, %k73017; KNL_X32-NEXT: kshiftrw $13, %k7, %k73018; KNL_X32-NEXT: korw %k7, %k0, %k03019; KNL_X32-NEXT: kandw %k2, %k0, %k03020; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3021; KNL_X32-NEXT: kmovw %eax, %k73022; KNL_X32-NEXT: kshiftlw $15, %k7, %k73023; KNL_X32-NEXT: kshiftrw $12, %k7, %k73024; KNL_X32-NEXT: korw %k7, %k0, %k03025; KNL_X32-NEXT: kandw %k3, %k0, %k03026; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3027; KNL_X32-NEXT: kmovw %eax, %k73028; KNL_X32-NEXT: kshiftlw $15, %k7, %k73029; KNL_X32-NEXT: kshiftrw $11, %k7, %k73030; KNL_X32-NEXT: korw %k7, %k0, %k03031; KNL_X32-NEXT: kandw %k4, %k0, %k03032; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3033; KNL_X32-NEXT: kmovw %eax, %k73034; KNL_X32-NEXT: kshiftlw $15, %k7, %k73035; KNL_X32-NEXT: kshiftrw $10, %k7, %k73036; KNL_X32-NEXT: korw %k7, %k0, %k03037; KNL_X32-NEXT: kandw %k5, %k0, %k03038; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3039; KNL_X32-NEXT: kmovw %eax, %k73040; KNL_X32-NEXT: kshiftlw $15, %k7, %k73041; KNL_X32-NEXT: kshiftrw $9, %k7, %k73042; KNL_X32-NEXT: korw %k7, %k0, %k03043; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3044; KNL_X32-NEXT: andl $1, %eax3045; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %ecx3046; KNL_X32-NEXT: kmovw %ecx, %k73047; KNL_X32-NEXT: kshiftlw $15, %k7, %k73048; KNL_X32-NEXT: kshiftrw $14, %k7, %k73049; KNL_X32-NEXT: kmovw %eax, %k63050; KNL_X32-NEXT: korw %k7, %k6, %k63051; KNL_X32-NEXT: kandw %k1, %k6, %k13052; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3053; KNL_X32-NEXT: kmovw %eax, %k63054; KNL_X32-NEXT: kshiftlw $15, %k6, %k63055; KNL_X32-NEXT: kshiftrw $13, %k6, %k63056; KNL_X32-NEXT: korw %k6, %k1, %k13057; KNL_X32-NEXT: kandw %k2, %k1, %k13058; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3059; KNL_X32-NEXT: kmovw %eax, %k23060; KNL_X32-NEXT: kshiftlw $15, %k2, %k23061; KNL_X32-NEXT: kshiftrw $12, %k2, %k23062; KNL_X32-NEXT: korw %k2, %k1, %k13063; KNL_X32-NEXT: kandw %k3, %k1, %k13064; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3065; KNL_X32-NEXT: kmovw %eax, %k23066; KNL_X32-NEXT: kshiftlw $15, %k2, %k23067; KNL_X32-NEXT: kshiftrw $11, %k2, %k23068; KNL_X32-NEXT: korw %k2, %k1, %k13069; KNL_X32-NEXT: kandw %k4, %k1, %k13070; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3071; KNL_X32-NEXT: kmovw %eax, %k23072; KNL_X32-NEXT: kshiftlw $15, %k2, %k23073; KNL_X32-NEXT: kshiftrw $10, %k2, %k23074; KNL_X32-NEXT: korw %k2, %k1, %k13075; KNL_X32-NEXT: kandw %k5, %k1, %k13076; KNL_X32-NEXT: movzbl {{[0-9]+}}(%esp), %eax3077; KNL_X32-NEXT: kmovw %eax, %k23078; KNL_X32-NEXT: kshiftlw $15, %k2, %k23079; KNL_X32-NEXT: kshiftrw $9, %k2, %k23080; KNL_X32-NEXT: korw %k2, %k1, %k13081; KNL_X32-NEXT: kandw %k1, %k0, %k03082; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload3083; KNL_X32-NEXT: kandw %k1, %k0, %k03084; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload3085; KNL_X32-NEXT: kandw %k1, %k0, %k03086; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload3087; KNL_X32-NEXT: kandw %k1, %k0, %k03088; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload3089; KNL_X32-NEXT: kandw %k1, %k0, %k03090; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload3091; KNL_X32-NEXT: kandw %k1, %k0, %k03092; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload3093; KNL_X32-NEXT: kandw %k1, %k0, %k03094; KNL_X32-NEXT: kmovw {{[-0-9]+}}(%e{{[sb]}}p), %k1 ## 2-byte Reload3095; KNL_X32-NEXT: kandw %k1, %k0, %k03096; KNL_X32-NEXT: kshiftrw $6, %k0, %k13097; KNL_X32-NEXT: kmovw %k1, %ecx3098; KNL_X32-NEXT: kshiftrw $5, %k0, %k13099; KNL_X32-NEXT: kmovw %k1, %eax3100; KNL_X32-NEXT: kshiftrw $1, %k0, %k13101; KNL_X32-NEXT: kmovw %k1, %edx3102; KNL_X32-NEXT: kshiftrw $2, %k0, %k13103; KNL_X32-NEXT: kmovw %k0, %ebx3104; KNL_X32-NEXT: andb $1, %bl3105; KNL_X32-NEXT: andb $1, %dl3106; KNL_X32-NEXT: addb %dl, %dl3107; KNL_X32-NEXT: orb %bl, %dl3108; KNL_X32-NEXT: kmovw %k1, %ebx3109; KNL_X32-NEXT: kshiftrw $3, %k0, %k13110; KNL_X32-NEXT: andb $1, %bl3111; KNL_X32-NEXT: shlb $2, %bl3112; KNL_X32-NEXT: orb %dl, %bl3113; KNL_X32-NEXT: kmovw %k1, %edx3114; KNL_X32-NEXT: kshiftrw $4, %k0, %k03115; KNL_X32-NEXT: andb $1, %dl3116; KNL_X32-NEXT: shlb $3, %dl3117; KNL_X32-NEXT: orb %bl, %dl3118; KNL_X32-NEXT: kmovw %k0, %ebx3119; KNL_X32-NEXT: andb $1, %bl3120; KNL_X32-NEXT: shlb $4, %bl3121; KNL_X32-NEXT: orb %dl, %bl3122; KNL_X32-NEXT: andb $1, %al3123; KNL_X32-NEXT: shlb $5, %al3124; KNL_X32-NEXT: orb %bl, %al3125; KNL_X32-NEXT: shlb $6, %cl3126; KNL_X32-NEXT: orb %al, %cl3127; KNL_X32-NEXT: movl {{[0-9]+}}(%esp), %eax3128; KNL_X32-NEXT: andb $127, %cl3129; KNL_X32-NEXT: movb %cl, (%eax)3130; KNL_X32-NEXT: addl $16, %esp3131; KNL_X32-NEXT: popl %ebx3132; KNL_X32-NEXT: retl $43133;3134; FASTISEL-LABEL: test17:3135; FASTISEL: ## %bb.0:3136; FASTISEL-NEXT: movq %rdi, %rax3137; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k03138; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13139; FASTISEL-NEXT: kshiftlb $7, %k0, %k03140; FASTISEL-NEXT: kshiftrb $6, %k0, %k03141; FASTISEL-NEXT: kshiftlb $7, %k1, %k13142; FASTISEL-NEXT: kshiftrb $7, %k1, %k13143; FASTISEL-NEXT: korb %k0, %k1, %k03144; FASTISEL-NEXT: movb $-5, %dil3145; FASTISEL-NEXT: kmovd %edi, %k33146; FASTISEL-NEXT: kandb %k3, %k0, %k03147; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13148; FASTISEL-NEXT: kshiftlb $7, %k1, %k13149; FASTISEL-NEXT: kshiftrb $5, %k1, %k13150; FASTISEL-NEXT: korb %k1, %k0, %k03151; FASTISEL-NEXT: movb $-9, %dil3152; FASTISEL-NEXT: kmovd %edi, %k13153; FASTISEL-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill3154; FASTISEL-NEXT: kandb %k1, %k0, %k03155; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k23156; FASTISEL-NEXT: kshiftlb $7, %k2, %k23157; FASTISEL-NEXT: kshiftrb $4, %k2, %k23158; FASTISEL-NEXT: korb %k2, %k0, %k03159; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k23160; FASTISEL-NEXT: movb $-17, %dil3161; FASTISEL-NEXT: kmovd %edi, %k13162; FASTISEL-NEXT: kmovw %k1, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill3163; FASTISEL-NEXT: kandb %k1, %k0, %k03164; FASTISEL-NEXT: kshiftlb $7, %k2, %k23165; FASTISEL-NEXT: kshiftrb $3, %k2, %k23166; FASTISEL-NEXT: korb %k2, %k0, %k03167; FASTISEL-NEXT: movb $-33, %dil3168; FASTISEL-NEXT: kmovd %edi, %k63169; FASTISEL-NEXT: kandb %k6, %k0, %k03170; FASTISEL-NEXT: kmovw %k6, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill3171; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k43172; FASTISEL-NEXT: kshiftlb $7, %k4, %k43173; FASTISEL-NEXT: kshiftrb $2, %k4, %k43174; FASTISEL-NEXT: korb %k4, %k0, %k03175; FASTISEL-NEXT: movb $-65, %dil3176; FASTISEL-NEXT: kmovd %edi, %k23177; FASTISEL-NEXT: kandb %k2, %k0, %k03178; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k53179; FASTISEL-NEXT: kshiftlb $7, %k5, %k53180; FASTISEL-NEXT: kshiftrb $1, %k5, %k53181; FASTISEL-NEXT: korb %k5, %k0, %k03182; FASTISEL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill3183; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k03184; FASTISEL-NEXT: kshiftlb $7, %k0, %k03185; FASTISEL-NEXT: kshiftrb $6, %k0, %k03186; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k73187; FASTISEL-NEXT: kshiftlb $7, %k7, %k73188; FASTISEL-NEXT: kshiftrb $7, %k7, %k73189; FASTISEL-NEXT: korb %k0, %k7, %k03190; FASTISEL-NEXT: kandb %k3, %k0, %k03191; FASTISEL-NEXT: kmovq %k3, %k53192; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k73193; FASTISEL-NEXT: kshiftlb $7, %k7, %k73194; FASTISEL-NEXT: kshiftrb $5, %k7, %k73195; FASTISEL-NEXT: korb %k7, %k0, %k03196; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k73197; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k4 ## 2-byte Reload3198; FASTISEL-NEXT: kandb %k4, %k0, %k13199; FASTISEL-NEXT: kshiftlb $7, %k7, %k73200; FASTISEL-NEXT: kshiftrb $4, %k7, %k73201; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k03202; FASTISEL-NEXT: korb %k7, %k1, %k13203; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k3 ## 2-byte Reload3204; FASTISEL-NEXT: kandb %k3, %k1, %k13205; FASTISEL-NEXT: kshiftlb $7, %k0, %k03206; FASTISEL-NEXT: kshiftrb $3, %k0, %k03207; FASTISEL-NEXT: korb %k0, %k1, %k03208; FASTISEL-NEXT: kandb %k6, %k0, %k03209; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13210; FASTISEL-NEXT: kshiftlb $7, %k1, %k13211; FASTISEL-NEXT: kshiftrb $2, %k1, %k13212; FASTISEL-NEXT: korb %k1, %k0, %k03213; FASTISEL-NEXT: kandb %k2, %k0, %k03214; FASTISEL-NEXT: kmovq %k2, %k63215; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13216; FASTISEL-NEXT: kshiftlb $7, %k1, %k13217; FASTISEL-NEXT: kshiftrb $1, %k1, %k13218; FASTISEL-NEXT: korb %k1, %k0, %k03219; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload3220; FASTISEL-NEXT: kandb %k1, %k0, %k03221; FASTISEL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill3222; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k03223; FASTISEL-NEXT: kshiftlb $7, %k0, %k03224; FASTISEL-NEXT: kshiftrb $6, %k0, %k03225; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13226; FASTISEL-NEXT: kshiftlb $7, %k1, %k13227; FASTISEL-NEXT: kshiftrb $7, %k1, %k13228; FASTISEL-NEXT: korb %k0, %k1, %k03229; FASTISEL-NEXT: kmovq %k5, %k23230; FASTISEL-NEXT: kandb %k5, %k0, %k03231; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13232; FASTISEL-NEXT: kshiftlb $7, %k1, %k13233; FASTISEL-NEXT: kshiftrb $5, %k1, %k13234; FASTISEL-NEXT: korb %k1, %k0, %k03235; FASTISEL-NEXT: kmovq %k4, %k73236; FASTISEL-NEXT: kandb %k4, %k0, %k03237; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13238; FASTISEL-NEXT: kshiftlb $7, %k1, %k13239; FASTISEL-NEXT: kshiftrb $4, %k1, %k13240; FASTISEL-NEXT: korb %k1, %k0, %k03241; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13242; FASTISEL-NEXT: kandb %k3, %k0, %k03243; FASTISEL-NEXT: kshiftlb $7, %k1, %k13244; FASTISEL-NEXT: kshiftrb $3, %k1, %k13245; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k53246; FASTISEL-NEXT: korb %k1, %k0, %k03247; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k4 ## 2-byte Reload3248; FASTISEL-NEXT: kandb %k4, %k0, %k03249; FASTISEL-NEXT: kshiftlb $7, %k5, %k13250; FASTISEL-NEXT: kshiftrb $2, %k1, %k13251; FASTISEL-NEXT: korb %k1, %k0, %k03252; FASTISEL-NEXT: kandb %k6, %k0, %k03253; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13254; FASTISEL-NEXT: kshiftlb $7, %k1, %k13255; FASTISEL-NEXT: kshiftrb $1, %k1, %k13256; FASTISEL-NEXT: korb %k1, %k0, %k03257; FASTISEL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill3258; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13259; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k53260; FASTISEL-NEXT: kshiftlb $7, %k1, %k13261; FASTISEL-NEXT: kshiftrb $6, %k1, %k13262; FASTISEL-NEXT: kshiftlb $7, %k5, %k53263; FASTISEL-NEXT: kshiftrb $7, %k5, %k53264; FASTISEL-NEXT: korb %k1, %k5, %k13265; FASTISEL-NEXT: kandb %k2, %k1, %k13266; FASTISEL-NEXT: kmovw %k2, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill3267; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k53268; FASTISEL-NEXT: kshiftlb $7, %k5, %k53269; FASTISEL-NEXT: kshiftrb $5, %k5, %k53270; FASTISEL-NEXT: korb %k5, %k1, %k13271; FASTISEL-NEXT: kandb %k7, %k1, %k13272; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k53273; FASTISEL-NEXT: kshiftlb $7, %k5, %k53274; FASTISEL-NEXT: kshiftrb $4, %k5, %k53275; FASTISEL-NEXT: korb %k5, %k1, %k13276; FASTISEL-NEXT: kandb %k3, %k1, %k13277; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k53278; FASTISEL-NEXT: kshiftlb $7, %k5, %k53279; FASTISEL-NEXT: kshiftrb $3, %k5, %k53280; FASTISEL-NEXT: korb %k5, %k1, %k13281; FASTISEL-NEXT: kandb %k4, %k1, %k13282; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k53283; FASTISEL-NEXT: kshiftlb $7, %k5, %k53284; FASTISEL-NEXT: kshiftrb $2, %k5, %k53285; FASTISEL-NEXT: korb %k5, %k1, %k13286; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k53287; FASTISEL-NEXT: kandb %k6, %k1, %k13288; FASTISEL-NEXT: kmovw %k6, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill3289; FASTISEL-NEXT: kshiftlb $7, %k5, %k53290; FASTISEL-NEXT: kshiftrb $1, %k5, %k53291; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k73292; FASTISEL-NEXT: korb %k5, %k1, %k53293; FASTISEL-NEXT: kshiftlb $7, %k7, %k13294; FASTISEL-NEXT: kshiftrb $6, %k1, %k13295; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k73296; FASTISEL-NEXT: kshiftlb $7, %k7, %k73297; FASTISEL-NEXT: kshiftrb $7, %k7, %k73298; FASTISEL-NEXT: korb %k1, %k7, %k13299; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k73300; FASTISEL-NEXT: kandb %k2, %k1, %k13301; FASTISEL-NEXT: kshiftlb $7, %k7, %k73302; FASTISEL-NEXT: kshiftrb $5, %k7, %k73303; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k03304; FASTISEL-NEXT: korb %k7, %k1, %k13305; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k3 ## 2-byte Reload3306; FASTISEL-NEXT: kandb %k3, %k1, %k13307; FASTISEL-NEXT: kshiftlb $7, %k0, %k03308; FASTISEL-NEXT: kshiftrb $4, %k0, %k03309; FASTISEL-NEXT: korb %k0, %k1, %k03310; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k2 ## 2-byte Reload3311; FASTISEL-NEXT: kandb %k2, %k0, %k03312; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13313; FASTISEL-NEXT: kshiftlb $7, %k1, %k13314; FASTISEL-NEXT: kshiftrb $3, %k1, %k13315; FASTISEL-NEXT: korb %k1, %k0, %k03316; FASTISEL-NEXT: kandb %k4, %k0, %k03317; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13318; FASTISEL-NEXT: kshiftlb $7, %k1, %k13319; FASTISEL-NEXT: kshiftrb $2, %k1, %k13320; FASTISEL-NEXT: korb %k1, %k0, %k03321; FASTISEL-NEXT: kandb %k6, %k0, %k03322; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13323; FASTISEL-NEXT: kshiftlb $7, %k1, %k13324; FASTISEL-NEXT: kshiftrb $1, %k1, %k13325; FASTISEL-NEXT: korb %k1, %k0, %k03326; FASTISEL-NEXT: kandb %k5, %k0, %k03327; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13328; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k5 ## 2-byte Reload3329; FASTISEL-NEXT: kandb %k5, %k0, %k03330; FASTISEL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill3331; FASTISEL-NEXT: kshiftlb $7, %k1, %k03332; FASTISEL-NEXT: kshiftrb $6, %k0, %k03333; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13334; FASTISEL-NEXT: kshiftlb $7, %k1, %k13335; FASTISEL-NEXT: kshiftrb $7, %k1, %k13336; FASTISEL-NEXT: korb %k0, %k1, %k03337; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13338; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k6 ## 2-byte Reload3339; FASTISEL-NEXT: kandb %k6, %k0, %k03340; FASTISEL-NEXT: kshiftlb $7, %k1, %k13341; FASTISEL-NEXT: kshiftrb $5, %k1, %k13342; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k73343; FASTISEL-NEXT: korb %k1, %k0, %k03344; FASTISEL-NEXT: kandb %k3, %k0, %k03345; FASTISEL-NEXT: kshiftlb $7, %k7, %k13346; FASTISEL-NEXT: kshiftrb $4, %k1, %k13347; FASTISEL-NEXT: korb %k1, %k0, %k03348; FASTISEL-NEXT: kandb %k2, %k0, %k03349; FASTISEL-NEXT: kmovq %k2, %k73350; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13351; FASTISEL-NEXT: kshiftlb $7, %k1, %k13352; FASTISEL-NEXT: kshiftrb $3, %k1, %k13353; FASTISEL-NEXT: korb %k1, %k0, %k03354; FASTISEL-NEXT: kandb %k4, %k0, %k03355; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13356; FASTISEL-NEXT: kshiftlb $7, %k1, %k13357; FASTISEL-NEXT: kshiftrb $2, %k1, %k13358; FASTISEL-NEXT: korb %k1, %k0, %k03359; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k5 ## 2-byte Reload3360; FASTISEL-NEXT: kandb %k5, %k0, %k03361; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13362; FASTISEL-NEXT: kshiftlb $7, %k1, %k13363; FASTISEL-NEXT: kshiftrb $1, %k1, %k13364; FASTISEL-NEXT: korb %k1, %k0, %k03365; FASTISEL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill3366; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k03367; FASTISEL-NEXT: kshiftlb $7, %k0, %k03368; FASTISEL-NEXT: kshiftrb $6, %k0, %k03369; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13370; FASTISEL-NEXT: kshiftlb $7, %k1, %k13371; FASTISEL-NEXT: kshiftrb $7, %k1, %k13372; FASTISEL-NEXT: korb %k0, %k1, %k03373; FASTISEL-NEXT: kandb %k6, %k0, %k03374; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13375; FASTISEL-NEXT: kshiftlb $7, %k1, %k13376; FASTISEL-NEXT: kshiftrb $5, %k1, %k13377; FASTISEL-NEXT: korb %k1, %k0, %k03378; FASTISEL-NEXT: kandb %k3, %k0, %k03379; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13380; FASTISEL-NEXT: kshiftlb $7, %k1, %k13381; FASTISEL-NEXT: kshiftrb $4, %k1, %k13382; FASTISEL-NEXT: korb %k1, %k0, %k03383; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13384; FASTISEL-NEXT: kandb %k2, %k0, %k23385; FASTISEL-NEXT: kshiftlb $7, %k1, %k13386; FASTISEL-NEXT: kshiftrb $3, %k1, %k13387; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k03388; FASTISEL-NEXT: korb %k1, %k2, %k13389; FASTISEL-NEXT: kandb %k4, %k1, %k13390; FASTISEL-NEXT: kshiftlb $7, %k0, %k03391; FASTISEL-NEXT: kshiftrb $2, %k0, %k03392; FASTISEL-NEXT: korb %k0, %k1, %k03393; FASTISEL-NEXT: kandb %k5, %k0, %k03394; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13395; FASTISEL-NEXT: kshiftlb $7, %k1, %k13396; FASTISEL-NEXT: kshiftrb $1, %k1, %k13397; FASTISEL-NEXT: korb %k1, %k0, %k03398; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload3399; FASTISEL-NEXT: kandb %k1, %k0, %k03400; FASTISEL-NEXT: kmovw %k0, {{[-0-9]+}}(%r{{[sb]}}p) ## 2-byte Spill3401; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k03402; FASTISEL-NEXT: kshiftlb $7, %k0, %k03403; FASTISEL-NEXT: kshiftrb $6, %k0, %k03404; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13405; FASTISEL-NEXT: kshiftlb $7, %k1, %k13406; FASTISEL-NEXT: kshiftrb $7, %k1, %k13407; FASTISEL-NEXT: korb %k0, %k1, %k03408; FASTISEL-NEXT: kandb %k6, %k0, %k03409; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13410; FASTISEL-NEXT: kshiftlb $7, %k1, %k13411; FASTISEL-NEXT: kshiftrb $5, %k1, %k13412; FASTISEL-NEXT: korb %k1, %k0, %k03413; FASTISEL-NEXT: kandb %k3, %k0, %k03414; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13415; FASTISEL-NEXT: kshiftlb $7, %k1, %k13416; FASTISEL-NEXT: kshiftrb $4, %k1, %k13417; FASTISEL-NEXT: korb %k1, %k0, %k03418; FASTISEL-NEXT: kandb %k7, %k0, %k03419; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13420; FASTISEL-NEXT: kshiftlb $7, %k1, %k13421; FASTISEL-NEXT: kshiftrb $3, %k1, %k13422; FASTISEL-NEXT: korb %k1, %k0, %k03423; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k13424; FASTISEL-NEXT: kandb %k4, %k0, %k03425; FASTISEL-NEXT: kshiftlb $7, %k1, %k13426; FASTISEL-NEXT: kshiftrb $2, %k1, %k13427; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k23428; FASTISEL-NEXT: korb %k1, %k0, %k03429; FASTISEL-NEXT: kandb %k5, %k0, %k03430; FASTISEL-NEXT: kshiftlb $7, %k2, %k13431; FASTISEL-NEXT: kshiftrb $1, %k1, %k13432; FASTISEL-NEXT: korb %k1, %k0, %k03433; FASTISEL-NEXT: kmovd %edx, %k13434; FASTISEL-NEXT: kshiftlb $7, %k1, %k13435; FASTISEL-NEXT: kshiftrb $6, %k1, %k13436; FASTISEL-NEXT: kmovd %esi, %k23437; FASTISEL-NEXT: kshiftlb $7, %k2, %k23438; FASTISEL-NEXT: kshiftrb $7, %k2, %k23439; FASTISEL-NEXT: korb %k1, %k2, %k13440; FASTISEL-NEXT: kandb %k6, %k1, %k13441; FASTISEL-NEXT: kmovd %ecx, %k23442; FASTISEL-NEXT: kshiftlb $7, %k2, %k23443; FASTISEL-NEXT: kshiftrb $5, %k2, %k23444; FASTISEL-NEXT: korb %k2, %k1, %k13445; FASTISEL-NEXT: kandb %k3, %k1, %k13446; FASTISEL-NEXT: kmovd %r8d, %k23447; FASTISEL-NEXT: kshiftlb $7, %k2, %k23448; FASTISEL-NEXT: kshiftrb $4, %k2, %k23449; FASTISEL-NEXT: korb %k2, %k1, %k13450; FASTISEL-NEXT: kandb %k7, %k1, %k13451; FASTISEL-NEXT: kmovd %r9d, %k23452; FASTISEL-NEXT: kshiftlb $7, %k2, %k23453; FASTISEL-NEXT: kshiftrb $3, %k2, %k23454; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k33455; FASTISEL-NEXT: korb %k2, %k1, %k13456; FASTISEL-NEXT: kandb %k4, %k1, %k13457; FASTISEL-NEXT: kshiftlb $7, %k3, %k23458; FASTISEL-NEXT: kshiftrb $2, %k2, %k23459; FASTISEL-NEXT: korb %k2, %k1, %k13460; FASTISEL-NEXT: kandb %k5, %k1, %k13461; FASTISEL-NEXT: kmovb {{[0-9]+}}(%rsp), %k23462; FASTISEL-NEXT: kshiftlb $7, %k2, %k23463; FASTISEL-NEXT: kshiftrb $1, %k2, %k23464; FASTISEL-NEXT: korb %k2, %k1, %k13465; FASTISEL-NEXT: kandb %k0, %k1, %k03466; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload3467; FASTISEL-NEXT: kandb %k1, %k0, %k03468; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload3469; FASTISEL-NEXT: kandb %k1, %k0, %k03470; FASTISEL-NEXT: kmovw {{[-0-9]+}}(%r{{[sb]}}p), %k1 ## 2-byte Reload3471; FASTISEL-NEXT: kandb %k1, %k0, %k03472; FASTISEL-NEXT: kshiftrb $6, %k0, %k13473; FASTISEL-NEXT: kmovd %k1, %ecx3474; FASTISEL-NEXT: kshiftrb $5, %k0, %k13475; FASTISEL-NEXT: kmovd %k1, %edx3476; FASTISEL-NEXT: kshiftrb $4, %k0, %k13477; FASTISEL-NEXT: kmovd %k1, %esi3478; FASTISEL-NEXT: kshiftrb $3, %k0, %k13479; FASTISEL-NEXT: kmovd %k1, %edi3480; FASTISEL-NEXT: kshiftrb $2, %k0, %k13481; FASTISEL-NEXT: kmovd %k1, %r8d3482; FASTISEL-NEXT: kshiftrb $1, %k0, %k13483; FASTISEL-NEXT: kmovd %k1, %r9d3484; FASTISEL-NEXT: kmovd %k0, %r10d3485; FASTISEL-NEXT: andb $1, %r10b3486; FASTISEL-NEXT: andb $1, %r9b3487; FASTISEL-NEXT: addb %r9b, %r9b3488; FASTISEL-NEXT: orb %r10b, %r9b3489; FASTISEL-NEXT: andb $1, %r8b3490; FASTISEL-NEXT: shlb $2, %r8b3491; FASTISEL-NEXT: orb %r9b, %r8b3492; FASTISEL-NEXT: andb $1, %dil3493; FASTISEL-NEXT: shlb $3, %dil3494; FASTISEL-NEXT: orb %r8b, %dil3495; FASTISEL-NEXT: andb $1, %sil3496; FASTISEL-NEXT: shlb $4, %sil3497; FASTISEL-NEXT: orb %dil, %sil3498; FASTISEL-NEXT: andb $1, %dl3499; FASTISEL-NEXT: shlb $5, %dl3500; FASTISEL-NEXT: orb %sil, %dl3501; FASTISEL-NEXT: shlb $6, %cl3502; FASTISEL-NEXT: orb %dl, %cl3503; FASTISEL-NEXT: andb $127, %cl3504; FASTISEL-NEXT: movb %cl, (%rax)3505; FASTISEL-NEXT: retq3506 %j = and <7 x i1> %a, %b3507 %k = and <7 x i1> %j, %c3508 %l = and <7 x i1> %k, %d3509 %m = and <7 x i1> %l, %e3510 %n = and <7 x i1> %m, %f3511 %o = and <7 x i1> %n, %g3512 %p = and <7 x i1> %o, %h3513 %q = and <7 x i1> %p, %i3514 ret <7 x i1> %q3515}3516 3517declare void @v2i1_mem_callee(<128 x i32> %x, <2 x i1> %y)3518define void @v2i1_mem(<128 x i32> %x, <2 x i1> %y) {3519; KNL-LABEL: v2i1_mem:3520; KNL: ## %bb.0:3521; KNL-NEXT: subq $24, %rsp3522; KNL-NEXT: .cfi_def_cfa_offset 323523; KNL-NEXT: vmovaps {{[0-9]+}}(%rsp), %xmm83524; KNL-NEXT: vmovaps %xmm8, (%rsp)3525; KNL-NEXT: callq _v2i1_mem_callee3526; KNL-NEXT: addq $24, %rsp3527; KNL-NEXT: retq3528;3529; SKX-LABEL: v2i1_mem:3530; SKX: ## %bb.0:3531; SKX-NEXT: subq $24, %rsp3532; SKX-NEXT: .cfi_def_cfa_offset 323533; SKX-NEXT: vmovaps {{[0-9]+}}(%rsp), %xmm83534; SKX-NEXT: vmovaps %xmm8, (%rsp)3535; SKX-NEXT: callq _v2i1_mem_callee3536; SKX-NEXT: addq $24, %rsp3537; SKX-NEXT: vzeroupper3538; SKX-NEXT: retq3539;3540; KNL_X32-LABEL: v2i1_mem:3541; KNL_X32: ## %bb.0:3542; KNL_X32-NEXT: pushl %ebp3543; KNL_X32-NEXT: .cfi_def_cfa_offset 83544; KNL_X32-NEXT: .cfi_offset %ebp, -83545; KNL_X32-NEXT: movl %esp, %ebp3546; KNL_X32-NEXT: .cfi_def_cfa_register %ebp3547; KNL_X32-NEXT: andl $-64, %esp3548; KNL_X32-NEXT: subl $384, %esp ## imm = 0x1803549; KNL_X32-NEXT: vmovaps 72(%ebp), %zmm53550; KNL_X32-NEXT: vmovaps 136(%ebp), %zmm63551; KNL_X32-NEXT: vmovaps 200(%ebp), %zmm73552; KNL_X32-NEXT: vmovaps 264(%ebp), %xmm43553; KNL_X32-NEXT: vmovaps %xmm4, {{[0-9]+}}(%esp)3554; KNL_X32-NEXT: vmovaps %zmm7, {{[0-9]+}}(%esp)3555; KNL_X32-NEXT: vmovaps %zmm6, {{[0-9]+}}(%esp)3556; KNL_X32-NEXT: vmovaps %zmm5, {{[0-9]+}}(%esp)3557; KNL_X32-NEXT: vmovaps 8(%ebp), %zmm43558; KNL_X32-NEXT: vmovaps %zmm4, (%esp)3559; KNL_X32-NEXT: calll _v2i1_mem_callee3560; KNL_X32-NEXT: movl %ebp, %esp3561; KNL_X32-NEXT: popl %ebp3562; KNL_X32-NEXT: retl3563;3564; FASTISEL-LABEL: v2i1_mem:3565; FASTISEL: ## %bb.0:3566; FASTISEL-NEXT: subq $24, %rsp3567; FASTISEL-NEXT: .cfi_def_cfa_offset 323568; FASTISEL-NEXT: vpsllq $63, {{[0-9]+}}(%rsp), %xmm83569; FASTISEL-NEXT: vpmovq2m %xmm8, %k03570; FASTISEL-NEXT: vpmovm2q %k0, %xmm83571; FASTISEL-NEXT: vmovdqa %xmm8, (%rsp)3572; FASTISEL-NEXT: callq _v2i1_mem_callee3573; FASTISEL-NEXT: addq $24, %rsp3574; FASTISEL-NEXT: vzeroupper3575; FASTISEL-NEXT: retq3576 call void @v2i1_mem_callee(<128 x i32> %x, <2 x i1> %y)3577 ret void3578}3579 3580declare void @v4i1_mem_callee(<128 x i32> %x, <4 x i1> %y)3581define void @v4i1_mem(<128 x i32> %x, <4 x i1> %y) {3582; KNL-LABEL: v4i1_mem:3583; KNL: ## %bb.0:3584; KNL-NEXT: subq $24, %rsp3585; KNL-NEXT: .cfi_def_cfa_offset 323586; KNL-NEXT: vmovaps {{[0-9]+}}(%rsp), %xmm83587; KNL-NEXT: vmovaps %xmm8, (%rsp)3588; KNL-NEXT: callq _v4i1_mem_callee3589; KNL-NEXT: addq $24, %rsp3590; KNL-NEXT: retq3591;3592; SKX-LABEL: v4i1_mem:3593; SKX: ## %bb.0:3594; SKX-NEXT: subq $24, %rsp3595; SKX-NEXT: .cfi_def_cfa_offset 323596; SKX-NEXT: vmovaps {{[0-9]+}}(%rsp), %xmm83597; SKX-NEXT: vmovaps %xmm8, (%rsp)3598; SKX-NEXT: callq _v4i1_mem_callee3599; SKX-NEXT: addq $24, %rsp3600; SKX-NEXT: vzeroupper3601; SKX-NEXT: retq3602;3603; KNL_X32-LABEL: v4i1_mem:3604; KNL_X32: ## %bb.0:3605; KNL_X32-NEXT: pushl %ebp3606; KNL_X32-NEXT: .cfi_def_cfa_offset 83607; KNL_X32-NEXT: .cfi_offset %ebp, -83608; KNL_X32-NEXT: movl %esp, %ebp3609; KNL_X32-NEXT: .cfi_def_cfa_register %ebp3610; KNL_X32-NEXT: andl $-64, %esp3611; KNL_X32-NEXT: subl $384, %esp ## imm = 0x1803612; KNL_X32-NEXT: vmovaps 72(%ebp), %zmm53613; KNL_X32-NEXT: vmovaps 136(%ebp), %zmm63614; KNL_X32-NEXT: vmovaps 200(%ebp), %zmm73615; KNL_X32-NEXT: vmovaps 264(%ebp), %xmm43616; KNL_X32-NEXT: vmovaps %xmm4, {{[0-9]+}}(%esp)3617; KNL_X32-NEXT: vmovaps %zmm7, {{[0-9]+}}(%esp)3618; KNL_X32-NEXT: vmovaps %zmm6, {{[0-9]+}}(%esp)3619; KNL_X32-NEXT: vmovaps %zmm5, {{[0-9]+}}(%esp)3620; KNL_X32-NEXT: vmovaps 8(%ebp), %zmm43621; KNL_X32-NEXT: vmovaps %zmm4, (%esp)3622; KNL_X32-NEXT: calll _v4i1_mem_callee3623; KNL_X32-NEXT: movl %ebp, %esp3624; KNL_X32-NEXT: popl %ebp3625; KNL_X32-NEXT: retl3626;3627; FASTISEL-LABEL: v4i1_mem:3628; FASTISEL: ## %bb.0:3629; FASTISEL-NEXT: subq $24, %rsp3630; FASTISEL-NEXT: .cfi_def_cfa_offset 323631; FASTISEL-NEXT: vpslld $31, {{[0-9]+}}(%rsp), %xmm83632; FASTISEL-NEXT: vpmovd2m %xmm8, %k03633; FASTISEL-NEXT: vpmovm2d %k0, %xmm83634; FASTISEL-NEXT: vmovdqa %xmm8, (%rsp)3635; FASTISEL-NEXT: callq _v4i1_mem_callee3636; FASTISEL-NEXT: addq $24, %rsp3637; FASTISEL-NEXT: vzeroupper3638; FASTISEL-NEXT: retq3639 call void @v4i1_mem_callee(<128 x i32> %x, <4 x i1> %y)3640 ret void3641}3642 3643declare void @v8i1_mem_callee(<128 x i32> %x, <8 x i1> %y)3644define void @v8i1_mem(<128 x i32> %x, <8 x i1> %y) {3645; KNL-LABEL: v8i1_mem:3646; KNL: ## %bb.0:3647; KNL-NEXT: subq $24, %rsp3648; KNL-NEXT: .cfi_def_cfa_offset 323649; KNL-NEXT: vmovaps {{[0-9]+}}(%rsp), %xmm83650; KNL-NEXT: vmovaps %xmm8, (%rsp)3651; KNL-NEXT: callq _v8i1_mem_callee3652; KNL-NEXT: addq $24, %rsp3653; KNL-NEXT: retq3654;3655; SKX-LABEL: v8i1_mem:3656; SKX: ## %bb.0:3657; SKX-NEXT: subq $24, %rsp3658; SKX-NEXT: .cfi_def_cfa_offset 323659; SKX-NEXT: vmovaps {{[0-9]+}}(%rsp), %xmm83660; SKX-NEXT: vmovaps %xmm8, (%rsp)3661; SKX-NEXT: callq _v8i1_mem_callee3662; SKX-NEXT: addq $24, %rsp3663; SKX-NEXT: vzeroupper3664; SKX-NEXT: retq3665;3666; KNL_X32-LABEL: v8i1_mem:3667; KNL_X32: ## %bb.0:3668; KNL_X32-NEXT: pushl %ebp3669; KNL_X32-NEXT: .cfi_def_cfa_offset 83670; KNL_X32-NEXT: .cfi_offset %ebp, -83671; KNL_X32-NEXT: movl %esp, %ebp3672; KNL_X32-NEXT: .cfi_def_cfa_register %ebp3673; KNL_X32-NEXT: andl $-64, %esp3674; KNL_X32-NEXT: subl $384, %esp ## imm = 0x1803675; KNL_X32-NEXT: vmovaps 72(%ebp), %zmm53676; KNL_X32-NEXT: vmovaps 136(%ebp), %zmm63677; KNL_X32-NEXT: vmovaps 200(%ebp), %zmm73678; KNL_X32-NEXT: vmovaps 264(%ebp), %xmm43679; KNL_X32-NEXT: vmovaps %xmm4, {{[0-9]+}}(%esp)3680; KNL_X32-NEXT: vmovaps %zmm7, {{[0-9]+}}(%esp)3681; KNL_X32-NEXT: vmovaps %zmm6, {{[0-9]+}}(%esp)3682; KNL_X32-NEXT: vmovaps %zmm5, {{[0-9]+}}(%esp)3683; KNL_X32-NEXT: vmovaps 8(%ebp), %zmm43684; KNL_X32-NEXT: vmovaps %zmm4, (%esp)3685; KNL_X32-NEXT: calll _v8i1_mem_callee3686; KNL_X32-NEXT: movl %ebp, %esp3687; KNL_X32-NEXT: popl %ebp3688; KNL_X32-NEXT: retl3689;3690; FASTISEL-LABEL: v8i1_mem:3691; FASTISEL: ## %bb.0:3692; FASTISEL-NEXT: subq $24, %rsp3693; FASTISEL-NEXT: .cfi_def_cfa_offset 323694; FASTISEL-NEXT: vpsllw $15, {{[0-9]+}}(%rsp), %xmm83695; FASTISEL-NEXT: vpmovw2m %xmm8, %k03696; FASTISEL-NEXT: vpmovm2w %k0, %xmm83697; FASTISEL-NEXT: vmovdqa %xmm8, (%rsp)3698; FASTISEL-NEXT: callq _v8i1_mem_callee3699; FASTISEL-NEXT: addq $24, %rsp3700; FASTISEL-NEXT: vzeroupper3701; FASTISEL-NEXT: retq3702 call void @v8i1_mem_callee(<128 x i32> %x, <8 x i1> %y)3703 ret void3704}3705 3706declare void @v16i1_mem_callee(<128 x i32> %x, <16 x i1> %y)3707define void @v16i1_mem(<128 x i32> %x, <16 x i1> %y) {3708; KNL-LABEL: v16i1_mem:3709; KNL: ## %bb.0:3710; KNL-NEXT: subq $24, %rsp3711; KNL-NEXT: .cfi_def_cfa_offset 323712; KNL-NEXT: vmovaps {{[0-9]+}}(%rsp), %xmm83713; KNL-NEXT: vmovaps %xmm8, (%rsp)3714; KNL-NEXT: callq _v16i1_mem_callee3715; KNL-NEXT: addq $24, %rsp3716; KNL-NEXT: retq3717;3718; SKX-LABEL: v16i1_mem:3719; SKX: ## %bb.0:3720; SKX-NEXT: subq $24, %rsp3721; SKX-NEXT: .cfi_def_cfa_offset 323722; SKX-NEXT: vmovaps {{[0-9]+}}(%rsp), %xmm83723; SKX-NEXT: vmovaps %xmm8, (%rsp)3724; SKX-NEXT: callq _v16i1_mem_callee3725; SKX-NEXT: addq $24, %rsp3726; SKX-NEXT: vzeroupper3727; SKX-NEXT: retq3728;3729; KNL_X32-LABEL: v16i1_mem:3730; KNL_X32: ## %bb.0:3731; KNL_X32-NEXT: pushl %ebp3732; KNL_X32-NEXT: .cfi_def_cfa_offset 83733; KNL_X32-NEXT: .cfi_offset %ebp, -83734; KNL_X32-NEXT: movl %esp, %ebp3735; KNL_X32-NEXT: .cfi_def_cfa_register %ebp3736; KNL_X32-NEXT: andl $-64, %esp3737; KNL_X32-NEXT: subl $384, %esp ## imm = 0x1803738; KNL_X32-NEXT: vmovaps 72(%ebp), %zmm53739; KNL_X32-NEXT: vmovaps 136(%ebp), %zmm63740; KNL_X32-NEXT: vmovaps 200(%ebp), %zmm73741; KNL_X32-NEXT: vmovaps 264(%ebp), %xmm43742; KNL_X32-NEXT: vmovaps %xmm4, {{[0-9]+}}(%esp)3743; KNL_X32-NEXT: vmovaps %zmm7, {{[0-9]+}}(%esp)3744; KNL_X32-NEXT: vmovaps %zmm6, {{[0-9]+}}(%esp)3745; KNL_X32-NEXT: vmovaps %zmm5, {{[0-9]+}}(%esp)3746; KNL_X32-NEXT: vmovaps 8(%ebp), %zmm43747; KNL_X32-NEXT: vmovaps %zmm4, (%esp)3748; KNL_X32-NEXT: calll _v16i1_mem_callee3749; KNL_X32-NEXT: movl %ebp, %esp3750; KNL_X32-NEXT: popl %ebp3751; KNL_X32-NEXT: retl3752;3753; FASTISEL-LABEL: v16i1_mem:3754; FASTISEL: ## %bb.0:3755; FASTISEL-NEXT: subq $24, %rsp3756; FASTISEL-NEXT: .cfi_def_cfa_offset 323757; FASTISEL-NEXT: vpsllw $7, {{[0-9]+}}(%rsp), %xmm83758; FASTISEL-NEXT: vpmovb2m %xmm8, %k03759; FASTISEL-NEXT: vpmovm2b %k0, %xmm83760; FASTISEL-NEXT: vmovdqa %xmm8, (%rsp)3761; FASTISEL-NEXT: callq _v16i1_mem_callee3762; FASTISEL-NEXT: addq $24, %rsp3763; FASTISEL-NEXT: vzeroupper3764; FASTISEL-NEXT: retq3765 call void @v16i1_mem_callee(<128 x i32> %x, <16 x i1> %y)3766 ret void3767}3768 3769declare void @v32i1_mem_callee(<128 x i32> %x, <32 x i1> %y)3770define void @v32i1_mem(<128 x i32> %x, <32 x i1> %y) {3771; KNL-LABEL: v32i1_mem:3772; KNL: ## %bb.0:3773; KNL-NEXT: pushq %rbp3774; KNL-NEXT: .cfi_def_cfa_offset 163775; KNL-NEXT: .cfi_offset %rbp, -163776; KNL-NEXT: movq %rsp, %rbp3777; KNL-NEXT: .cfi_def_cfa_register %rbp3778; KNL-NEXT: andq $-32, %rsp3779; KNL-NEXT: subq $64, %rsp3780; KNL-NEXT: vmovaps 16(%rbp), %ymm83781; KNL-NEXT: vmovaps %ymm8, (%rsp)3782; KNL-NEXT: callq _v32i1_mem_callee3783; KNL-NEXT: movq %rbp, %rsp3784; KNL-NEXT: popq %rbp3785; KNL-NEXT: retq3786;3787; SKX-LABEL: v32i1_mem:3788; SKX: ## %bb.0:3789; SKX-NEXT: pushq %rbp3790; SKX-NEXT: .cfi_def_cfa_offset 163791; SKX-NEXT: .cfi_offset %rbp, -163792; SKX-NEXT: movq %rsp, %rbp3793; SKX-NEXT: .cfi_def_cfa_register %rbp3794; SKX-NEXT: andq $-32, %rsp3795; SKX-NEXT: subq $64, %rsp3796; SKX-NEXT: vmovaps 16(%rbp), %ymm83797; SKX-NEXT: vmovaps %ymm8, (%rsp)3798; SKX-NEXT: callq _v32i1_mem_callee3799; SKX-NEXT: movq %rbp, %rsp3800; SKX-NEXT: popq %rbp3801; SKX-NEXT: vzeroupper3802; SKX-NEXT: retq3803;3804; KNL_X32-LABEL: v32i1_mem:3805; KNL_X32: ## %bb.0:3806; KNL_X32-NEXT: pushl %ebp3807; KNL_X32-NEXT: .cfi_def_cfa_offset 83808; KNL_X32-NEXT: .cfi_offset %ebp, -83809; KNL_X32-NEXT: movl %esp, %ebp3810; KNL_X32-NEXT: .cfi_def_cfa_register %ebp3811; KNL_X32-NEXT: andl $-64, %esp3812; KNL_X32-NEXT: subl $384, %esp ## imm = 0x1803813; KNL_X32-NEXT: vmovaps 72(%ebp), %zmm53814; KNL_X32-NEXT: vmovaps 136(%ebp), %zmm63815; KNL_X32-NEXT: vmovaps 200(%ebp), %zmm73816; KNL_X32-NEXT: vmovaps 264(%ebp), %ymm43817; KNL_X32-NEXT: vmovaps %ymm4, {{[0-9]+}}(%esp)3818; KNL_X32-NEXT: vmovaps %zmm7, {{[0-9]+}}(%esp)3819; KNL_X32-NEXT: vmovaps %zmm6, {{[0-9]+}}(%esp)3820; KNL_X32-NEXT: vmovaps %zmm5, {{[0-9]+}}(%esp)3821; KNL_X32-NEXT: vmovaps 8(%ebp), %zmm43822; KNL_X32-NEXT: vmovaps %zmm4, (%esp)3823; KNL_X32-NEXT: calll _v32i1_mem_callee3824; KNL_X32-NEXT: movl %ebp, %esp3825; KNL_X32-NEXT: popl %ebp3826; KNL_X32-NEXT: retl3827;3828; FASTISEL-LABEL: v32i1_mem:3829; FASTISEL: ## %bb.0:3830; FASTISEL-NEXT: pushq %rbp3831; FASTISEL-NEXT: .cfi_def_cfa_offset 163832; FASTISEL-NEXT: .cfi_offset %rbp, -163833; FASTISEL-NEXT: movq %rsp, %rbp3834; FASTISEL-NEXT: .cfi_def_cfa_register %rbp3835; FASTISEL-NEXT: andq $-32, %rsp3836; FASTISEL-NEXT: subq $64, %rsp3837; FASTISEL-NEXT: vpsllw $7, 16(%rbp), %ymm83838; FASTISEL-NEXT: vpmovb2m %ymm8, %k03839; FASTISEL-NEXT: vpmovm2b %k0, %ymm83840; FASTISEL-NEXT: vmovdqa %ymm8, (%rsp)3841; FASTISEL-NEXT: callq _v32i1_mem_callee3842; FASTISEL-NEXT: movq %rbp, %rsp3843; FASTISEL-NEXT: popq %rbp3844; FASTISEL-NEXT: vzeroupper3845; FASTISEL-NEXT: retq3846 call void @v32i1_mem_callee(<128 x i32> %x, <32 x i1> %y)3847 ret void3848}3849 3850declare void @v64i1_mem_callee(<128 x i32> %x, <64 x i1> %y)3851define void @v64i1_mem(<128 x i32> %x, <64 x i1> %y) {3852; KNL-LABEL: v64i1_mem:3853; KNL: ## %bb.0:3854; KNL-NEXT: subq $472, %rsp ## imm = 0x1D83855; KNL-NEXT: .cfi_def_cfa_offset 4803856; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3857; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3858; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3859; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3860; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3861; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3862; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3863; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3864; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3865; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3866; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3867; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3868; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3869; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3870; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3871; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3872; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3873; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3874; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3875; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3876; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3877; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3878; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3879; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3880; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3881; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3882; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3883; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3884; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3885; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3886; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3887; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3888; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3889; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3890; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3891; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3892; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3893; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3894; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3895; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3896; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3897; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3898; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3899; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3900; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3901; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3902; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3903; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3904; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3905; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3906; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3907; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3908; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3909; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3910; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3911; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3912; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3913; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3914; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3915; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3916; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3917; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3918; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3919; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3920; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3921; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3922; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3923; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3924; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3925; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3926; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3927; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3928; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3929; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3930; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3931; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3932; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3933; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3934; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3935; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3936; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3937; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3938; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3939; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3940; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3941; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3942; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3943; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3944; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3945; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3946; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3947; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3948; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3949; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3950; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3951; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3952; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3953; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3954; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3955; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3956; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3957; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3958; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3959; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3960; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3961; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3962; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3963; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3964; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3965; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3966; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3967; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3968; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3969; KNL-NEXT: movl %eax, {{[0-9]+}}(%rsp)3970; KNL-NEXT: movl {{[0-9]+}}(%rsp), %eax3971; KNL-NEXT: movl %eax, (%rsp)3972; KNL-NEXT: callq _v64i1_mem_callee3973; KNL-NEXT: addq $472, %rsp ## imm = 0x1D83974; KNL-NEXT: retq3975;3976; SKX-LABEL: v64i1_mem:3977; SKX: ## %bb.0:3978; SKX-NEXT: pushq %rbp3979; SKX-NEXT: .cfi_def_cfa_offset 163980; SKX-NEXT: .cfi_offset %rbp, -163981; SKX-NEXT: movq %rsp, %rbp3982; SKX-NEXT: .cfi_def_cfa_register %rbp3983; SKX-NEXT: andq $-64, %rsp3984; SKX-NEXT: subq $128, %rsp3985; SKX-NEXT: vmovaps 16(%rbp), %zmm83986; SKX-NEXT: vmovaps %zmm8, (%rsp)3987; SKX-NEXT: callq _v64i1_mem_callee3988; SKX-NEXT: movq %rbp, %rsp3989; SKX-NEXT: popq %rbp3990; SKX-NEXT: vzeroupper3991; SKX-NEXT: retq3992;3993; KNL_X32-LABEL: v64i1_mem:3994; KNL_X32: ## %bb.0:3995; KNL_X32-NEXT: pushl %ebp3996; KNL_X32-NEXT: .cfi_def_cfa_offset 83997; KNL_X32-NEXT: .cfi_offset %ebp, -83998; KNL_X32-NEXT: movl %esp, %ebp3999; KNL_X32-NEXT: .cfi_def_cfa_register %ebp4000; KNL_X32-NEXT: andl $-64, %esp4001; KNL_X32-NEXT: subl $576, %esp ## imm = 0x2404002; KNL_X32-NEXT: vmovaps 8(%ebp), %zmm44003; KNL_X32-NEXT: vmovaps 72(%ebp), %zmm54004; KNL_X32-NEXT: vmovaps 136(%ebp), %zmm64005; KNL_X32-NEXT: vmovaps 200(%ebp), %zmm74006; KNL_X32-NEXT: movl 516(%ebp), %eax4007; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4008; KNL_X32-NEXT: movl 512(%ebp), %eax4009; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4010; KNL_X32-NEXT: movl 508(%ebp), %eax4011; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4012; KNL_X32-NEXT: movl 504(%ebp), %eax4013; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4014; KNL_X32-NEXT: movl 500(%ebp), %eax4015; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4016; KNL_X32-NEXT: movl 496(%ebp), %eax4017; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4018; KNL_X32-NEXT: movl 492(%ebp), %eax4019; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4020; KNL_X32-NEXT: movl 488(%ebp), %eax4021; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4022; KNL_X32-NEXT: movl 484(%ebp), %eax4023; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4024; KNL_X32-NEXT: movl 480(%ebp), %eax4025; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4026; KNL_X32-NEXT: movl 476(%ebp), %eax4027; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4028; KNL_X32-NEXT: movl 472(%ebp), %eax4029; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4030; KNL_X32-NEXT: movl 468(%ebp), %eax4031; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4032; KNL_X32-NEXT: movl 464(%ebp), %eax4033; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4034; KNL_X32-NEXT: movl 460(%ebp), %eax4035; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4036; KNL_X32-NEXT: movl 456(%ebp), %eax4037; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4038; KNL_X32-NEXT: movl 452(%ebp), %eax4039; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4040; KNL_X32-NEXT: movl 448(%ebp), %eax4041; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4042; KNL_X32-NEXT: movl 444(%ebp), %eax4043; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4044; KNL_X32-NEXT: movl 440(%ebp), %eax4045; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4046; KNL_X32-NEXT: movl 436(%ebp), %eax4047; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4048; KNL_X32-NEXT: movl 432(%ebp), %eax4049; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4050; KNL_X32-NEXT: movl 428(%ebp), %eax4051; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4052; KNL_X32-NEXT: movl 424(%ebp), %eax4053; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4054; KNL_X32-NEXT: movl 420(%ebp), %eax4055; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4056; KNL_X32-NEXT: movl 416(%ebp), %eax4057; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4058; KNL_X32-NEXT: movl 412(%ebp), %eax4059; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4060; KNL_X32-NEXT: movl 408(%ebp), %eax4061; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4062; KNL_X32-NEXT: movl 404(%ebp), %eax4063; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4064; KNL_X32-NEXT: movl 400(%ebp), %eax4065; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4066; KNL_X32-NEXT: movl 396(%ebp), %eax4067; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4068; KNL_X32-NEXT: movl 392(%ebp), %eax4069; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4070; KNL_X32-NEXT: movl 388(%ebp), %eax4071; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4072; KNL_X32-NEXT: movl 384(%ebp), %eax4073; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4074; KNL_X32-NEXT: movl 380(%ebp), %eax4075; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4076; KNL_X32-NEXT: movl 376(%ebp), %eax4077; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4078; KNL_X32-NEXT: movl 372(%ebp), %eax4079; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4080; KNL_X32-NEXT: movl 368(%ebp), %eax4081; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4082; KNL_X32-NEXT: movl 364(%ebp), %eax4083; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4084; KNL_X32-NEXT: movl 360(%ebp), %eax4085; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4086; KNL_X32-NEXT: movl 356(%ebp), %eax4087; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4088; KNL_X32-NEXT: movl 352(%ebp), %eax4089; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4090; KNL_X32-NEXT: movl 348(%ebp), %eax4091; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4092; KNL_X32-NEXT: movl 344(%ebp), %eax4093; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4094; KNL_X32-NEXT: movl 340(%ebp), %eax4095; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4096; KNL_X32-NEXT: movl 336(%ebp), %eax4097; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4098; KNL_X32-NEXT: movl 332(%ebp), %eax4099; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4100; KNL_X32-NEXT: movl 328(%ebp), %eax4101; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4102; KNL_X32-NEXT: movl 324(%ebp), %eax4103; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4104; KNL_X32-NEXT: movl 320(%ebp), %eax4105; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4106; KNL_X32-NEXT: movl 316(%ebp), %eax4107; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4108; KNL_X32-NEXT: movl 312(%ebp), %eax4109; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4110; KNL_X32-NEXT: movl 308(%ebp), %eax4111; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4112; KNL_X32-NEXT: movl 304(%ebp), %eax4113; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4114; KNL_X32-NEXT: movl 300(%ebp), %eax4115; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4116; KNL_X32-NEXT: movl 296(%ebp), %eax4117; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4118; KNL_X32-NEXT: movl 292(%ebp), %eax4119; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4120; KNL_X32-NEXT: movl 288(%ebp), %eax4121; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4122; KNL_X32-NEXT: movl 284(%ebp), %eax4123; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4124; KNL_X32-NEXT: movl 280(%ebp), %eax4125; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4126; KNL_X32-NEXT: movl 276(%ebp), %eax4127; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4128; KNL_X32-NEXT: movl 272(%ebp), %eax4129; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4130; KNL_X32-NEXT: movl 268(%ebp), %eax4131; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4132; KNL_X32-NEXT: movl 264(%ebp), %eax4133; KNL_X32-NEXT: movl %eax, {{[0-9]+}}(%esp)4134; KNL_X32-NEXT: vmovaps %zmm7, {{[0-9]+}}(%esp)4135; KNL_X32-NEXT: vmovaps %zmm6, {{[0-9]+}}(%esp)4136; KNL_X32-NEXT: vmovaps %zmm5, {{[0-9]+}}(%esp)4137; KNL_X32-NEXT: vmovaps %zmm4, (%esp)4138; KNL_X32-NEXT: calll _v64i1_mem_callee4139; KNL_X32-NEXT: movl %ebp, %esp4140; KNL_X32-NEXT: popl %ebp4141; KNL_X32-NEXT: retl4142;4143; FASTISEL-LABEL: v64i1_mem:4144; FASTISEL: ## %bb.0:4145; FASTISEL-NEXT: pushq %rbp4146; FASTISEL-NEXT: .cfi_def_cfa_offset 164147; FASTISEL-NEXT: .cfi_offset %rbp, -164148; FASTISEL-NEXT: movq %rsp, %rbp4149; FASTISEL-NEXT: .cfi_def_cfa_register %rbp4150; FASTISEL-NEXT: andq $-64, %rsp4151; FASTISEL-NEXT: subq $128, %rsp4152; FASTISEL-NEXT: vpsllw $7, 16(%rbp), %zmm84153; FASTISEL-NEXT: vpmovb2m %zmm8, %k04154; FASTISEL-NEXT: vpmovm2b %k0, %zmm84155; FASTISEL-NEXT: vmovdqa64 %zmm8, (%rsp)4156; FASTISEL-NEXT: callq _v64i1_mem_callee4157; FASTISEL-NEXT: movq %rbp, %rsp4158; FASTISEL-NEXT: popq %rbp4159; FASTISEL-NEXT: vzeroupper4160; FASTISEL-NEXT: retq4161 call void @v64i1_mem_callee(<128 x i32> %x, <64 x i1> %y)4162 ret void4163}4164