716 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512f,+avx512vl | FileCheck %s --check-prefixes=AVX5123; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX14; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX25; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse4.1 | FileCheck %s --check-prefixes=SSE416; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE27 8declare void @use.v4.i32(<4 x i32>)9 10define <4 x i32> @eq_or_eq_ult_2(<4 x i32> %x) {11; AVX512-LABEL: eq_or_eq_ult_2:12; AVX512: # %bb.0:13; AVX512-NEXT: vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm014; AVX512-NEXT: vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k115; AVX512-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm016; AVX512-NEXT: vmovdqa32 %xmm0, %xmm0 {%k1} {z}17; AVX512-NEXT: retq18;19; AVX1-LABEL: eq_or_eq_ult_2:20; AVX1: # %bb.0:21; AVX1-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm122; AVX1-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm023; AVX1-NEXT: vpor %xmm1, %xmm0, %xmm024; AVX1-NEXT: retq25;26; AVX2-LABEL: eq_or_eq_ult_2:27; AVX2: # %bb.0:28; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [6,6,6,6]29; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm130; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm2 = [5,5,5,5]31; AVX2-NEXT: vpcmpeqd %xmm2, %xmm0, %xmm032; AVX2-NEXT: vpor %xmm1, %xmm0, %xmm033; AVX2-NEXT: retq34;35; SSE41-LABEL: eq_or_eq_ult_2:36; SSE41: # %bb.0:37; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [6,6,6,6]38; SSE41-NEXT: pcmpeqd %xmm0, %xmm139; SSE41-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm040; SSE41-NEXT: por %xmm1, %xmm041; SSE41-NEXT: retq42;43; SSE2-LABEL: eq_or_eq_ult_2:44; SSE2: # %bb.0:45; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [6,6,6,6]46; SSE2-NEXT: pcmpeqd %xmm0, %xmm147; SSE2-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm048; SSE2-NEXT: por %xmm1, %xmm049; SSE2-NEXT: retq50 %x_adj = add <4 x i32> %x, <i32 -5, i32 -5, i32 -5, i32 -5>51 %cmp = icmp ult <4 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2>52 %r = sext <4 x i1> %cmp to <4 x i32>53 ret <4 x i32> %r54}55 56define <4 x i32> @eq_or_eq_ult_2_only_transform_sse2(<4 x i32> %x) {57; AVX512-LABEL: eq_or_eq_ult_2_only_transform_sse2:58; AVX512: # %bb.0:59; AVX512-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm160; AVX512-NEXT: vpaddd %xmm1, %xmm0, %xmm061; AVX512-NEXT: vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k162; AVX512-NEXT: vmovdqa32 %xmm1, %xmm0 {%k1} {z}63; AVX512-NEXT: retq64;65; AVX1-LABEL: eq_or_eq_ult_2_only_transform_sse2:66; AVX1: # %bb.0:67; AVX1-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm168; AVX1-NEXT: vpaddd %xmm1, %xmm0, %xmm069; AVX1-NEXT: vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm170; AVX1-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm071; AVX1-NEXT: retq72;73; AVX2-LABEL: eq_or_eq_ult_2_only_transform_sse2:74; AVX2: # %bb.0:75; AVX2-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm176; AVX2-NEXT: vpaddd %xmm1, %xmm0, %xmm077; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [1,1,1,1]78; AVX2-NEXT: vpminud %xmm1, %xmm0, %xmm179; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm080; AVX2-NEXT: retq81;82; SSE41-LABEL: eq_or_eq_ult_2_only_transform_sse2:83; SSE41: # %bb.0:84; SSE41-NEXT: pcmpeqd %xmm1, %xmm185; SSE41-NEXT: paddd %xmm1, %xmm086; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [1,1,1,1]87; SSE41-NEXT: pminud %xmm0, %xmm188; SSE41-NEXT: pcmpeqd %xmm1, %xmm089; SSE41-NEXT: retq90;91; SSE2-LABEL: eq_or_eq_ult_2_only_transform_sse2:92; SSE2: # %bb.0:93; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [2,2,2,2]94; SSE2-NEXT: pcmpeqd %xmm0, %xmm195; SSE2-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm096; SSE2-NEXT: por %xmm1, %xmm097; SSE2-NEXT: retq98 %x_adj = add <4 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1>99 %cmp = icmp ult <4 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2>100 %r = sext <4 x i1> %cmp to <4 x i32>101 ret <4 x i32> %r102}103 104define <4 x i32> @eq_or_eq_ult_2_fail_multiuse(<4 x i32> %x) {105; AVX512-LABEL: eq_or_eq_ult_2_fail_multiuse:106; AVX512: # %bb.0:107; AVX512-NEXT: subq $24, %rsp108; AVX512-NEXT: .cfi_def_cfa_offset 32109; AVX512-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1110; AVX512-NEXT: vpaddd %xmm1, %xmm0, %xmm0111; AVX512-NEXT: vmovdqa %xmm0, (%rsp) # 16-byte Spill112; AVX512-NEXT: callq use.v4.i32@PLT113; AVX512-NEXT: vmovdqa (%rsp), %xmm0 # 16-byte Reload114; AVX512-NEXT: vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k1115; AVX512-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0116; AVX512-NEXT: vmovdqa32 %xmm0, %xmm0 {%k1} {z}117; AVX512-NEXT: addq $24, %rsp118; AVX512-NEXT: .cfi_def_cfa_offset 8119; AVX512-NEXT: retq120;121; AVX1-LABEL: eq_or_eq_ult_2_fail_multiuse:122; AVX1: # %bb.0:123; AVX1-NEXT: subq $24, %rsp124; AVX1-NEXT: .cfi_def_cfa_offset 32125; AVX1-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1126; AVX1-NEXT: vpaddd %xmm1, %xmm0, %xmm0127; AVX1-NEXT: vmovdqa %xmm0, (%rsp) # 16-byte Spill128; AVX1-NEXT: callq use.v4.i32@PLT129; AVX1-NEXT: vmovdqa (%rsp), %xmm1 # 16-byte Reload130; AVX1-NEXT: vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm0131; AVX1-NEXT: vpcmpeqd %xmm0, %xmm1, %xmm0132; AVX1-NEXT: addq $24, %rsp133; AVX1-NEXT: .cfi_def_cfa_offset 8134; AVX1-NEXT: retq135;136; AVX2-LABEL: eq_or_eq_ult_2_fail_multiuse:137; AVX2: # %bb.0:138; AVX2-NEXT: subq $24, %rsp139; AVX2-NEXT: .cfi_def_cfa_offset 32140; AVX2-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1141; AVX2-NEXT: vpaddd %xmm1, %xmm0, %xmm0142; AVX2-NEXT: vmovdqa %xmm0, (%rsp) # 16-byte Spill143; AVX2-NEXT: callq use.v4.i32@PLT144; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm0 = [1,1,1,1]145; AVX2-NEXT: vmovdqa (%rsp), %xmm1 # 16-byte Reload146; AVX2-NEXT: vpminud %xmm0, %xmm1, %xmm0147; AVX2-NEXT: vpcmpeqd %xmm0, %xmm1, %xmm0148; AVX2-NEXT: addq $24, %rsp149; AVX2-NEXT: .cfi_def_cfa_offset 8150; AVX2-NEXT: retq151;152; SSE41-LABEL: eq_or_eq_ult_2_fail_multiuse:153; SSE41: # %bb.0:154; SSE41-NEXT: subq $24, %rsp155; SSE41-NEXT: .cfi_def_cfa_offset 32156; SSE41-NEXT: pcmpeqd %xmm1, %xmm1157; SSE41-NEXT: paddd %xmm1, %xmm0158; SSE41-NEXT: movdqa %xmm0, (%rsp) # 16-byte Spill159; SSE41-NEXT: callq use.v4.i32@PLT160; SSE41-NEXT: pmovsxbd {{.*#+}} xmm0 = [1,1,1,1]161; SSE41-NEXT: movdqa (%rsp), %xmm1 # 16-byte Reload162; SSE41-NEXT: pminud %xmm1, %xmm0163; SSE41-NEXT: pcmpeqd %xmm1, %xmm0164; SSE41-NEXT: addq $24, %rsp165; SSE41-NEXT: .cfi_def_cfa_offset 8166; SSE41-NEXT: retq167;168; SSE2-LABEL: eq_or_eq_ult_2_fail_multiuse:169; SSE2: # %bb.0:170; SSE2-NEXT: subq $24, %rsp171; SSE2-NEXT: .cfi_def_cfa_offset 32172; SSE2-NEXT: pcmpeqd %xmm1, %xmm1173; SSE2-NEXT: paddd %xmm0, %xmm1174; SSE2-NEXT: movdqa %xmm1, (%rsp) # 16-byte Spill175; SSE2-NEXT: movdqa %xmm1, %xmm0176; SSE2-NEXT: callq use.v4.i32@PLT177; SSE2-NEXT: movdqa (%rsp), %xmm1 # 16-byte Reload178; SSE2-NEXT: pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1179; SSE2-NEXT: movdqa {{.*#+}} xmm0 = [2147483650,2147483650,2147483650,2147483650]180; SSE2-NEXT: pcmpgtd %xmm1, %xmm0181; SSE2-NEXT: addq $24, %rsp182; SSE2-NEXT: .cfi_def_cfa_offset 8183; SSE2-NEXT: retq184 %x_adj = add <4 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1>185 call void @use.v4.i32(<4 x i32> %x_adj)186 %cmp = icmp ult <4 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2>187 %r = sext <4 x i1> %cmp to <4 x i32>188 ret <4 x i32> %r189}190 191define <4 x i32> @eq_or_eq_ult_3_fail(<4 x i32> %x) {192; AVX512-LABEL: eq_or_eq_ult_3_fail:193; AVX512: # %bb.0:194; AVX512-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1195; AVX512-NEXT: vpaddd %xmm1, %xmm0, %xmm0196; AVX512-NEXT: vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k1197; AVX512-NEXT: vmovdqa32 %xmm1, %xmm0 {%k1} {z}198; AVX512-NEXT: retq199;200; AVX1-LABEL: eq_or_eq_ult_3_fail:201; AVX1: # %bb.0:202; AVX1-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1203; AVX1-NEXT: vpaddd %xmm1, %xmm0, %xmm0204; AVX1-NEXT: vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1205; AVX1-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0206; AVX1-NEXT: retq207;208; AVX2-LABEL: eq_or_eq_ult_3_fail:209; AVX2: # %bb.0:210; AVX2-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1211; AVX2-NEXT: vpaddd %xmm1, %xmm0, %xmm0212; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [2,2,2,2]213; AVX2-NEXT: vpminud %xmm1, %xmm0, %xmm1214; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0215; AVX2-NEXT: retq216;217; SSE41-LABEL: eq_or_eq_ult_3_fail:218; SSE41: # %bb.0:219; SSE41-NEXT: pcmpeqd %xmm1, %xmm1220; SSE41-NEXT: paddd %xmm1, %xmm0221; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [2,2,2,2]222; SSE41-NEXT: pminud %xmm0, %xmm1223; SSE41-NEXT: pcmpeqd %xmm1, %xmm0224; SSE41-NEXT: retq225;226; SSE2-LABEL: eq_or_eq_ult_3_fail:227; SSE2: # %bb.0:228; SSE2-NEXT: pcmpeqd %xmm1, %xmm1229; SSE2-NEXT: paddd %xmm0, %xmm1230; SSE2-NEXT: pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1231; SSE2-NEXT: movdqa {{.*#+}} xmm0 = [2147483651,2147483651,2147483651,2147483651]232; SSE2-NEXT: pcmpgtd %xmm1, %xmm0233; SSE2-NEXT: retq234 %x_adj = add <4 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1>235 %cmp = icmp ult <4 x i32> %x_adj, <i32 3, i32 3, i32 3, i32 3>236 %r = sext <4 x i1> %cmp to <4 x i32>237 ret <4 x i32> %r238}239 240define <4 x i32> @eq_or_eq_ugt_m3(<4 x i32> %x) {241; AVX512-LABEL: eq_or_eq_ugt_m3:242; AVX512: # %bb.0:243; AVX512-NEXT: vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0244; AVX512-NEXT: vpcmpnleud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k1245; AVX512-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0246; AVX512-NEXT: vmovdqa32 %xmm0, %xmm0 {%k1} {z}247; AVX512-NEXT: retq248;249; AVX-LABEL: eq_or_eq_ugt_m3:250; AVX: # %bb.0:251; AVX-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1252; AVX-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0253; AVX-NEXT: vpor %xmm1, %xmm0, %xmm0254; AVX-NEXT: retq255;256; SSE41-LABEL: eq_or_eq_ugt_m3:257; SSE41: # %bb.0:258; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [9,12,9,9]259; SSE41-NEXT: pcmpeqd %xmm0, %xmm1260; SSE41-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0261; SSE41-NEXT: por %xmm1, %xmm0262; SSE41-NEXT: retq263;264; SSE2-LABEL: eq_or_eq_ugt_m3:265; SSE2: # %bb.0:266; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [9,12,9,9]267; SSE2-NEXT: pcmpeqd %xmm0, %xmm1268; SSE2-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0269; SSE2-NEXT: por %xmm1, %xmm0270; SSE2-NEXT: retq271 %x_adj = add <4 x i32> %x, <i32 -11, i32 -14, i32 -11, i32 -11>272 %cmp = icmp ugt <4 x i32> %x_adj, <i32 -3, i32 -3, i32 -3, i32 -3>273 %r = sext <4 x i1> %cmp to <4 x i32>274 ret <4 x i32> %r275}276 277define <4 x i32> @eq_or_eq_ule_1(<4 x i32> %x) {278; AVX512-LABEL: eq_or_eq_ule_1:279; AVX512: # %bb.0:280; AVX512-NEXT: vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0281; AVX512-NEXT: vpcmpleud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k1282; AVX512-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0283; AVX512-NEXT: vmovdqa32 %xmm0, %xmm0 {%k1} {z}284; AVX512-NEXT: retq285;286; AVX-LABEL: eq_or_eq_ule_1:287; AVX: # %bb.0:288; AVX-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1289; AVX-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0290; AVX-NEXT: vpor %xmm1, %xmm0, %xmm0291; AVX-NEXT: retq292;293; SSE41-LABEL: eq_or_eq_ule_1:294; SSE41: # %bb.0:295; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [0,4294967295,4294967294,4294967293]296; SSE41-NEXT: pcmpeqd %xmm0, %xmm1297; SSE41-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0298; SSE41-NEXT: por %xmm1, %xmm0299; SSE41-NEXT: retq300;301; SSE2-LABEL: eq_or_eq_ule_1:302; SSE2: # %bb.0:303; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [0,4294967295,4294967294,4294967293]304; SSE2-NEXT: pcmpeqd %xmm0, %xmm1305; SSE2-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0306; SSE2-NEXT: por %xmm1, %xmm0307; SSE2-NEXT: retq308 %x_adj = add <4 x i32> %x, <i32 1, i32 2, i32 3, i32 4>309 %cmp = icmp ule <4 x i32> %x_adj, <i32 1, i32 1, i32 1, i32 1>310 %r = sext <4 x i1> %cmp to <4 x i32>311 ret <4 x i32> %r312}313 314define <2 x i64> @eq_or_eq_uge_m2_i64(<2 x i64> %x) {315; AVX512-LABEL: eq_or_eq_uge_m2_i64:316; AVX512: # %bb.0:317; AVX512-NEXT: vpaddq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0318; AVX512-NEXT: vpcmpnltuq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %k1319; AVX512-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0320; AVX512-NEXT: vmovdqa64 %xmm0, %xmm0 {%k1} {z}321; AVX512-NEXT: retq322;323; AVX-LABEL: eq_or_eq_uge_m2_i64:324; AVX: # %bb.0:325; AVX-NEXT: vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1326; AVX-NEXT: vpcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0327; AVX-NEXT: vpor %xmm1, %xmm0, %xmm0328; AVX-NEXT: retq329;330; SSE41-LABEL: eq_or_eq_uge_m2_i64:331; SSE41: # %bb.0:332; SSE41-NEXT: pmovsxbq {{.*#+}} xmm1 = [18446744073709551613,18446744073709551612]333; SSE41-NEXT: pcmpeqq %xmm0, %xmm1334; SSE41-NEXT: pcmpeqq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0335; SSE41-NEXT: por %xmm1, %xmm0336; SSE41-NEXT: retq337;338; SSE2-LABEL: eq_or_eq_uge_m2_i64:339; SSE2: # %bb.0:340; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [18446744073709551613,18446744073709551612]341; SSE2-NEXT: pcmpeqd %xmm0, %xmm1342; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,0,3,2]343; SSE2-NEXT: pand %xmm1, %xmm2344; SSE2-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0345; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,0,3,2]346; SSE2-NEXT: pand %xmm1, %xmm0347; SSE2-NEXT: por %xmm2, %xmm0348; SSE2-NEXT: retq349 %x_adj = add <2 x i64> %x, <i64 1, i64 2>350 %cmp = icmp uge <2 x i64> %x_adj, <i64 -2, i64 -2>351 %r = sext <2 x i1> %cmp to <2 x i64>352 ret <2 x i64> %r353}354 355 356define <2 x i64> @eq_or_eq_uge_m2_i64_m1(<2 x i64> %x) {357; AVX512-LABEL: eq_or_eq_uge_m2_i64_m1:358; AVX512: # %bb.0:359; AVX512-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1360; AVX512-NEXT: vpaddq %xmm1, %xmm0, %xmm0361; AVX512-NEXT: vpcmpnltuq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %k1362; AVX512-NEXT: vmovdqa64 %xmm1, %xmm0 {%k1} {z}363; AVX512-NEXT: retq364;365; AVX-LABEL: eq_or_eq_uge_m2_i64_m1:366; AVX: # %bb.0:367; AVX-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1368; AVX-NEXT: vpcmpeqq %xmm1, %xmm0, %xmm1369; AVX-NEXT: vpxor %xmm2, %xmm2, %xmm2370; AVX-NEXT: vpcmpeqq %xmm2, %xmm0, %xmm0371; AVX-NEXT: vpor %xmm1, %xmm0, %xmm0372; AVX-NEXT: retq373;374; SSE41-LABEL: eq_or_eq_uge_m2_i64_m1:375; SSE41: # %bb.0:376; SSE41-NEXT: pcmpeqd %xmm1, %xmm1377; SSE41-NEXT: pcmpeqq %xmm0, %xmm1378; SSE41-NEXT: pxor %xmm2, %xmm2379; SSE41-NEXT: pcmpeqq %xmm2, %xmm0380; SSE41-NEXT: por %xmm1, %xmm0381; SSE41-NEXT: retq382;383; SSE2-LABEL: eq_or_eq_uge_m2_i64_m1:384; SSE2: # %bb.0:385; SSE2-NEXT: pcmpeqd %xmm1, %xmm1386; SSE2-NEXT: pcmpeqd %xmm0, %xmm1387; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,0,3,2]388; SSE2-NEXT: pand %xmm1, %xmm2389; SSE2-NEXT: pxor %xmm1, %xmm1390; SSE2-NEXT: pcmpeqd %xmm1, %xmm0391; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,0,3,2]392; SSE2-NEXT: pand %xmm1, %xmm0393; SSE2-NEXT: por %xmm2, %xmm0394; SSE2-NEXT: retq395 %x_adj = add <2 x i64> %x, <i64 -1, i64 -1>396 %cmp = icmp uge <2 x i64> %x_adj, <i64 -2, i64 -2>397 %r = sext <2 x i1> %cmp to <2 x i64>398 ret <2 x i64> %r399}400 401define <4 x i32> @eq_or_eq_uge_2_fail_(<4 x i32> %x) {402; AVX512-LABEL: eq_or_eq_uge_2_fail_:403; AVX512: # %bb.0:404; AVX512-NEXT: vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0405; AVX512-NEXT: vpcmpnltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %k1406; AVX512-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0407; AVX512-NEXT: vmovdqa32 %xmm0, %xmm0 {%k1} {z}408; AVX512-NEXT: retq409;410; AVX1-LABEL: eq_or_eq_uge_2_fail_:411; AVX1: # %bb.0:412; AVX1-NEXT: vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0413; AVX1-NEXT: vpmaxud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1414; AVX1-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0415; AVX1-NEXT: retq416;417; AVX2-LABEL: eq_or_eq_uge_2_fail_:418; AVX2: # %bb.0:419; AVX2-NEXT: vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0420; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [2,2,2,2]421; AVX2-NEXT: vpmaxud %xmm1, %xmm0, %xmm1422; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0423; AVX2-NEXT: retq424;425; SSE41-LABEL: eq_or_eq_uge_2_fail_:426; SSE41: # %bb.0:427; SSE41-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0428; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [2,2,2,2]429; SSE41-NEXT: pmaxud %xmm0, %xmm1430; SSE41-NEXT: pcmpeqd %xmm1, %xmm0431; SSE41-NEXT: retq432;433; SSE2-LABEL: eq_or_eq_uge_2_fail_:434; SSE2: # %bb.0:435; SSE2-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0436; SSE2-NEXT: pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0437; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [2147483650,2147483650,2147483650,2147483650]438; SSE2-NEXT: pcmpgtd %xmm0, %xmm1439; SSE2-NEXT: pcmpeqd %xmm0, %xmm0440; SSE2-NEXT: pxor %xmm1, %xmm0441; SSE2-NEXT: retq442 %x_adj = add <4 x i32> %x, <i32 1, i32 2, i32 3, i32 4>443 %cmp = icmp uge <4 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2>444 %r = sext <4 x i1> %cmp to <4 x i32>445 ret <4 x i32> %r446}447 448 449define <8 x i32> @eq_or_eq_ult_2_256(<8 x i32> %x) {450; AVX512-LABEL: eq_or_eq_ult_2_256:451; AVX512: # %bb.0:452; AVX512-NEXT: vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0453; AVX512-NEXT: vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1454; AVX512-NEXT: vpcmpeqd %ymm0, %ymm0, %ymm0455; AVX512-NEXT: vmovdqa32 %ymm0, %ymm0 {%k1} {z}456; AVX512-NEXT: retq457;458; AVX1-LABEL: eq_or_eq_ult_2_256:459; AVX1: # %bb.0:460; AVX1-NEXT: vbroadcastss {{.*#+}} xmm1 = [4294967291,4294967291,4294967291,4294967291]461; AVX1-NEXT: vpaddd %xmm1, %xmm0, %xmm2462; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0463; AVX1-NEXT: vpaddd %xmm1, %xmm0, %xmm0464; AVX1-NEXT: vbroadcastss {{.*#+}} xmm1 = [1,1,1,1]465; AVX1-NEXT: vpminud %xmm1, %xmm0, %xmm3466; AVX1-NEXT: vpcmpeqd %xmm3, %xmm0, %xmm0467; AVX1-NEXT: vpminud %xmm1, %xmm2, %xmm1468; AVX1-NEXT: vpcmpeqd %xmm1, %xmm2, %xmm1469; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0470; AVX1-NEXT: retq471;472; AVX2-LABEL: eq_or_eq_ult_2_256:473; AVX2: # %bb.0:474; AVX2-NEXT: vpbroadcastd {{.*#+}} ymm1 = [6,6,6,6,6,6,6,6]475; AVX2-NEXT: vpcmpeqd %ymm1, %ymm0, %ymm1476; AVX2-NEXT: vpbroadcastd {{.*#+}} ymm2 = [5,5,5,5,5,5,5,5]477; AVX2-NEXT: vpcmpeqd %ymm2, %ymm0, %ymm0478; AVX2-NEXT: vpor %ymm1, %ymm0, %ymm0479; AVX2-NEXT: retq480;481; SSE41-LABEL: eq_or_eq_ult_2_256:482; SSE41: # %bb.0:483; SSE41-NEXT: pmovsxbd {{.*#+}} xmm2 = [6,6,6,6]484; SSE41-NEXT: movdqa %xmm0, %xmm3485; SSE41-NEXT: pcmpeqd %xmm2, %xmm3486; SSE41-NEXT: pmovsxbd {{.*#+}} xmm4 = [5,5,5,5]487; SSE41-NEXT: pcmpeqd %xmm4, %xmm0488; SSE41-NEXT: por %xmm3, %xmm0489; SSE41-NEXT: pcmpeqd %xmm1, %xmm2490; SSE41-NEXT: pcmpeqd %xmm4, %xmm1491; SSE41-NEXT: por %xmm2, %xmm1492; SSE41-NEXT: retq493;494; SSE2-LABEL: eq_or_eq_ult_2_256:495; SSE2: # %bb.0:496; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [6,6,6,6]497; SSE2-NEXT: movdqa %xmm0, %xmm3498; SSE2-NEXT: pcmpeqd %xmm2, %xmm3499; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [5,5,5,5]500; SSE2-NEXT: pcmpeqd %xmm4, %xmm0501; SSE2-NEXT: por %xmm3, %xmm0502; SSE2-NEXT: pcmpeqd %xmm1, %xmm2503; SSE2-NEXT: pcmpeqd %xmm4, %xmm1504; SSE2-NEXT: por %xmm2, %xmm1505; SSE2-NEXT: retq506 %x_adj = add <8 x i32> %x, <i32 -5, i32 -5, i32 -5, i32 -5, i32 -5, i32 -5, i32 -5, i32 -5>507 %cmp = icmp ult <8 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2>508 %r = sext <8 x i1> %cmp to <8 x i32>509 ret <8 x i32> %r510}511 512 513define <8 x i32> @eq_or_eq_ult_2_256_m1(<8 x i32> %x) {514; AVX512-LABEL: eq_or_eq_ult_2_256_m1:515; AVX512: # %bb.0:516; AVX512-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1517; AVX512-NEXT: vpaddd %ymm1, %ymm0, %ymm0518; AVX512-NEXT: vpcmpltud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %k1519; AVX512-NEXT: vmovdqa32 %ymm1, %ymm0 {%k1} {z}520; AVX512-NEXT: retq521;522; AVX1-LABEL: eq_or_eq_ult_2_256_m1:523; AVX1: # %bb.0:524; AVX1-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1525; AVX1-NEXT: vpaddd %xmm1, %xmm0, %xmm2526; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0527; AVX1-NEXT: vpaddd %xmm1, %xmm0, %xmm0528; AVX1-NEXT: vbroadcastss {{.*#+}} xmm1 = [1,1,1,1]529; AVX1-NEXT: vpminud %xmm1, %xmm0, %xmm3530; AVX1-NEXT: vpcmpeqd %xmm3, %xmm0, %xmm0531; AVX1-NEXT: vpminud %xmm1, %xmm2, %xmm1532; AVX1-NEXT: vpcmpeqd %xmm1, %xmm2, %xmm1533; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0534; AVX1-NEXT: retq535;536; AVX2-LABEL: eq_or_eq_ult_2_256_m1:537; AVX2: # %bb.0:538; AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1539; AVX2-NEXT: vpaddd %ymm1, %ymm0, %ymm0540; AVX2-NEXT: vpbroadcastd {{.*#+}} ymm1 = [1,1,1,1,1,1,1,1]541; AVX2-NEXT: vpminud %ymm1, %ymm0, %ymm1542; AVX2-NEXT: vpcmpeqd %ymm1, %ymm0, %ymm0543; AVX2-NEXT: retq544;545; SSE41-LABEL: eq_or_eq_ult_2_256_m1:546; SSE41: # %bb.0:547; SSE41-NEXT: pmovsxbd {{.*#+}} xmm2 = [2,2,2,2]548; SSE41-NEXT: movdqa %xmm0, %xmm3549; SSE41-NEXT: pcmpeqd %xmm2, %xmm3550; SSE41-NEXT: pmovsxbd {{.*#+}} xmm4 = [1,1,1,1]551; SSE41-NEXT: pcmpeqd %xmm4, %xmm0552; SSE41-NEXT: por %xmm3, %xmm0553; SSE41-NEXT: pcmpeqd %xmm1, %xmm2554; SSE41-NEXT: pcmpeqd %xmm4, %xmm1555; SSE41-NEXT: por %xmm2, %xmm1556; SSE41-NEXT: retq557;558; SSE2-LABEL: eq_or_eq_ult_2_256_m1:559; SSE2: # %bb.0:560; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2,2,2,2]561; SSE2-NEXT: movdqa %xmm0, %xmm3562; SSE2-NEXT: pcmpeqd %xmm2, %xmm3563; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [1,1,1,1]564; SSE2-NEXT: pcmpeqd %xmm4, %xmm0565; SSE2-NEXT: por %xmm3, %xmm0566; SSE2-NEXT: pcmpeqd %xmm1, %xmm2567; SSE2-NEXT: pcmpeqd %xmm4, %xmm1568; SSE2-NEXT: por %xmm2, %xmm1569; SSE2-NEXT: retq570 %x_adj = add <8 x i32> %x, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>571 %cmp = icmp ult <8 x i32> %x_adj, <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2>572 %r = sext <8 x i1> %cmp to <8 x i32>573 ret <8 x i32> %r574}575 576 577define <32 x i8> @eq_or_eq_ult_2_256_i8_m1(<32 x i8> %x) {578; AVX512-LABEL: eq_or_eq_ult_2_256_i8_m1:579; AVX512: # %bb.0:580; AVX512-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1581; AVX512-NEXT: vpaddb %ymm1, %ymm0, %ymm0582; AVX512-NEXT: vpminub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm1583; AVX512-NEXT: vpcmpeqb %ymm1, %ymm0, %ymm0584; AVX512-NEXT: retq585;586; AVX1-LABEL: eq_or_eq_ult_2_256_i8_m1:587; AVX1: # %bb.0:588; AVX1-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1589; AVX1-NEXT: vpaddb %xmm1, %xmm0, %xmm2590; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm0591; AVX1-NEXT: vpaddb %xmm1, %xmm0, %xmm0592; AVX1-NEXT: vbroadcastss {{.*#+}} xmm1 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]593; AVX1-NEXT: vpminub %xmm1, %xmm0, %xmm3594; AVX1-NEXT: vpcmpeqb %xmm3, %xmm0, %xmm0595; AVX1-NEXT: vpminub %xmm1, %xmm2, %xmm1596; AVX1-NEXT: vpcmpeqb %xmm1, %xmm2, %xmm1597; AVX1-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0598; AVX1-NEXT: retq599;600; AVX2-LABEL: eq_or_eq_ult_2_256_i8_m1:601; AVX2: # %bb.0:602; AVX2-NEXT: vpcmpeqd %ymm1, %ymm1, %ymm1603; AVX2-NEXT: vpaddb %ymm1, %ymm0, %ymm0604; AVX2-NEXT: vpminub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm1605; AVX2-NEXT: vpcmpeqb %ymm1, %ymm0, %ymm0606; AVX2-NEXT: retq607;608; SSE41-LABEL: eq_or_eq_ult_2_256_i8_m1:609; SSE41: # %bb.0:610; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]611; SSE41-NEXT: movdqa %xmm0, %xmm3612; SSE41-NEXT: pcmpeqb %xmm2, %xmm3613; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]614; SSE41-NEXT: pcmpeqb %xmm4, %xmm0615; SSE41-NEXT: por %xmm3, %xmm0616; SSE41-NEXT: pcmpeqb %xmm1, %xmm2617; SSE41-NEXT: pcmpeqb %xmm4, %xmm1618; SSE41-NEXT: por %xmm2, %xmm1619; SSE41-NEXT: retq620;621; SSE2-LABEL: eq_or_eq_ult_2_256_i8_m1:622; SSE2: # %bb.0:623; SSE2-NEXT: movdqa {{.*#+}} xmm2 = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]624; SSE2-NEXT: movdqa %xmm0, %xmm3625; SSE2-NEXT: pcmpeqb %xmm2, %xmm3626; SSE2-NEXT: movdqa {{.*#+}} xmm4 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]627; SSE2-NEXT: pcmpeqb %xmm4, %xmm0628; SSE2-NEXT: por %xmm3, %xmm0629; SSE2-NEXT: pcmpeqb %xmm1, %xmm2630; SSE2-NEXT: pcmpeqb %xmm4, %xmm1631; SSE2-NEXT: por %xmm2, %xmm1632; SSE2-NEXT: retq633 %x_adj = add <32 x i8> %x, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>634 %cmp = icmp ult <32 x i8> %x_adj, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>635 %r = sext <32 x i1> %cmp to <32 x i8>636 ret <32 x i8> %r637}638 639 640define <16 x i8> @eq_or_eq_ult_2_128_i8_m1(<16 x i8> %x) {641; AVX512-LABEL: eq_or_eq_ult_2_128_i8_m1:642; AVX512: # %bb.0:643; AVX512-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1644; AVX512-NEXT: vpaddb %xmm1, %xmm0, %xmm0645; AVX512-NEXT: vpminub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1646; AVX512-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0647; AVX512-NEXT: retq648;649; AVX-LABEL: eq_or_eq_ult_2_128_i8_m1:650; AVX: # %bb.0:651; AVX-NEXT: vpcmpeqd %xmm1, %xmm1, %xmm1652; AVX-NEXT: vpaddb %xmm1, %xmm0, %xmm0653; AVX-NEXT: vpminub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1654; AVX-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0655; AVX-NEXT: retq656;657; SSE41-LABEL: eq_or_eq_ult_2_128_i8_m1:658; SSE41: # %bb.0:659; SSE41-NEXT: pcmpeqd %xmm1, %xmm1660; SSE41-NEXT: paddb %xmm1, %xmm0661; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]662; SSE41-NEXT: pminub %xmm0, %xmm1663; SSE41-NEXT: pcmpeqb %xmm1, %xmm0664; SSE41-NEXT: retq665;666; SSE2-LABEL: eq_or_eq_ult_2_128_i8_m1:667; SSE2: # %bb.0:668; SSE2-NEXT: pcmpeqd %xmm1, %xmm1669; SSE2-NEXT: paddb %xmm1, %xmm0670; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]671; SSE2-NEXT: pminub %xmm0, %xmm1672; SSE2-NEXT: pcmpeqb %xmm1, %xmm0673; SSE2-NEXT: retq674 %x_adj = add <16 x i8> %x, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>675 %cmp = icmp ult <16 x i8> %x_adj, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>676 %r = sext <16 x i1> %cmp to <16 x i8>677 ret <16 x i8> %r678}679 680 681define <16 x i8> @eq_or_eq_ult_2_128_i8(<16 x i8> %x) {682; AVX512-LABEL: eq_or_eq_ult_2_128_i8:683; AVX512: # %bb.0:684; AVX512-NEXT: vpaddb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0685; AVX512-NEXT: vpminub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1686; AVX512-NEXT: vpcmpeqb %xmm1, %xmm0, %xmm0687; AVX512-NEXT: retq688;689; AVX-LABEL: eq_or_eq_ult_2_128_i8:690; AVX: # %bb.0:691; AVX-NEXT: vpcmpeqb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1692; AVX-NEXT: vpcmpeqb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0693; AVX-NEXT: vpor %xmm1, %xmm0, %xmm0694; AVX-NEXT: retq695;696; SSE41-LABEL: eq_or_eq_ult_2_128_i8:697; SSE41: # %bb.0:698; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232]699; SSE41-NEXT: pcmpeqb %xmm0, %xmm1700; SSE41-NEXT: pcmpeqb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0701; SSE41-NEXT: por %xmm1, %xmm0702; SSE41-NEXT: retq703;704; SSE2-LABEL: eq_or_eq_ult_2_128_i8:705; SSE2: # %bb.0:706; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232]707; SSE2-NEXT: pcmpeqb %xmm0, %xmm1708; SSE2-NEXT: pcmpeqb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0709; SSE2-NEXT: por %xmm1, %xmm0710; SSE2-NEXT: retq711 %x_adj = add <16 x i8> %x, <i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25, i8 25>712 %cmp = icmp ult <16 x i8> %x_adj, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>713 %r = sext <16 x i1> %cmp to <16 x i8>714 ret <16 x i8> %r715}716