brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.2 KiB · e5b19a5 Raw
289 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+sse2 < %s | FileCheck %s --check-prefixes=CHECK-SSE,CHECK-SSE23; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+sse4.1 < %s | FileCheck %s --check-prefixes=CHECK-SSE,CHECK-SSE414; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx < %s | FileCheck %s --check-prefixes=CHECK-AVX,CHECK-AVX15; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx2 < %s | FileCheck %s --check-prefixes=CHECK-AVX,CHECK-AVX26; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f,+avx512vl < %s | FileCheck %s --check-prefixes=CHECK-AVX,CHECK-AVX512VL7 8define <4 x i1> @t0_all_tautological(<4 x i32> %X) nounwind {9; CHECK-SSE-LABEL: t0_all_tautological:10; CHECK-SSE:       # %bb.0:11; CHECK-SSE-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm012; CHECK-SSE-NEXT:    pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm013; CHECK-SSE-NEXT:    retq14;15; CHECK-AVX-LABEL: t0_all_tautological:16; CHECK-AVX:       # %bb.0:17; CHECK-AVX-NEXT:    vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm018; CHECK-AVX-NEXT:    vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm019; CHECK-AVX-NEXT:    retq20  %urem = urem <4 x i32> %X, <i32 1, i32 1, i32 2, i32 2>21  %cmp = icmp eq <4 x i32> %urem, <i32 0, i32 1, i32 2, i32 3>22  ret <4 x i1> %cmp23}24 25define <4 x i1> @t1_all_odd_eq(<4 x i32> %X) nounwind {26; CHECK-SSE2-LABEL: t1_all_odd_eq:27; CHECK-SSE2:       # %bb.0:28; CHECK-SSE2-NEXT:    pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [2863311531,2863311531,2863311531,2863311531]29; CHECK-SSE2-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm030; CHECK-SSE2-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm031; CHECK-SSE2-NEXT:    pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm032; CHECK-SSE2-NEXT:    retq33;34; CHECK-SSE41-LABEL: t1_all_odd_eq:35; CHECK-SSE41:       # %bb.0:36; CHECK-SSE41-NEXT:    pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [2863311531,2863311531,2863311531,2863311531]37; CHECK-SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [1431655765,4294967295,4294967295,4294967295]38; CHECK-SSE41-NEXT:    pminud %xmm0, %xmm139; CHECK-SSE41-NEXT:    pcmpeqd %xmm1, %xmm040; CHECK-SSE41-NEXT:    pxor %xmm1, %xmm141; CHECK-SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5],xmm1[6,7]42; CHECK-SSE41-NEXT:    retq43;44; CHECK-AVX1-LABEL: t1_all_odd_eq:45; CHECK-AVX1:       # %bb.0:46; CHECK-AVX1-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [2863311531,2863311531,2863311531,2863311531]47; CHECK-AVX1-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm148; CHECK-AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm049; CHECK-AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm150; CHECK-AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5],xmm1[6,7]51; CHECK-AVX1-NEXT:    retq52;53; CHECK-AVX2-LABEL: t1_all_odd_eq:54; CHECK-AVX2:       # %bb.0:55; CHECK-AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [2863311531,2863311531,2863311531,2863311531]56; CHECK-AVX2-NEXT:    vpmulld %xmm1, %xmm0, %xmm057; CHECK-AVX2-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm158; CHECK-AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm059; CHECK-AVX2-NEXT:    vpxor %xmm1, %xmm1, %xmm160; CHECK-AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]61; CHECK-AVX2-NEXT:    retq62;63; CHECK-AVX512VL-LABEL: t1_all_odd_eq:64; CHECK-AVX512VL:       # %bb.0:65; CHECK-AVX512VL-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm066; CHECK-AVX512VL-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm167; CHECK-AVX512VL-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm068; CHECK-AVX512VL-NEXT:    vpxor %xmm1, %xmm1, %xmm169; CHECK-AVX512VL-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]70; CHECK-AVX512VL-NEXT:    retq71  %urem = urem <4 x i32> %X, <i32 3, i32 1, i32 1, i32 9>72  %cmp = icmp eq <4 x i32> %urem, <i32 0, i32 42, i32 0, i32 42>73  ret <4 x i1> %cmp74}75 76define <4 x i1> @t1_all_odd_ne(<4 x i32> %X) nounwind {77; CHECK-SSE2-LABEL: t1_all_odd_ne:78; CHECK-SSE2:       # %bb.0:79; CHECK-SSE2-NEXT:    pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [2863311531,2863311531,2863311531,2863311531]80; CHECK-SSE2-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm081; CHECK-SSE2-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm082; CHECK-SSE2-NEXT:    por {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm083; CHECK-SSE2-NEXT:    retq84;85; CHECK-SSE41-LABEL: t1_all_odd_ne:86; CHECK-SSE41:       # %bb.0:87; CHECK-SSE41-NEXT:    pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [2863311531,2863311531,2863311531,2863311531]88; CHECK-SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [1431655765,4294967295,4294967295,4294967295]89; CHECK-SSE41-NEXT:    pminud %xmm0, %xmm190; CHECK-SSE41-NEXT:    pcmpeqd %xmm1, %xmm091; CHECK-SSE41-NEXT:    pcmpeqd %xmm1, %xmm192; CHECK-SSE41-NEXT:    pxor %xmm1, %xmm093; CHECK-SSE41-NEXT:    por {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm094; CHECK-SSE41-NEXT:    retq95;96; CHECK-AVX1-LABEL: t1_all_odd_ne:97; CHECK-AVX1:       # %bb.0:98; CHECK-AVX1-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [2863311531,2863311531,2863311531,2863311531]99; CHECK-AVX1-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1100; CHECK-AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0101; CHECK-AVX1-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1102; CHECK-AVX1-NEXT:    vpxor %xmm1, %xmm0, %xmm0103; CHECK-AVX1-NEXT:    vpor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0104; CHECK-AVX1-NEXT:    retq105;106; CHECK-AVX2-LABEL: t1_all_odd_ne:107; CHECK-AVX2:       # %bb.0:108; CHECK-AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [2863311531,2863311531,2863311531,2863311531]109; CHECK-AVX2-NEXT:    vpmulld %xmm1, %xmm0, %xmm0110; CHECK-AVX2-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1111; CHECK-AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0112; CHECK-AVX2-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1113; CHECK-AVX2-NEXT:    vpxor %xmm1, %xmm0, %xmm0114; CHECK-AVX2-NEXT:    vpor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0115; CHECK-AVX2-NEXT:    retq116;117; CHECK-AVX512VL-LABEL: t1_all_odd_ne:118; CHECK-AVX512VL:       # %bb.0:119; CHECK-AVX512VL-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0120; CHECK-AVX512VL-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1121; CHECK-AVX512VL-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm1122; CHECK-AVX512VL-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0123; CHECK-AVX512VL-NEXT:    vpternlogq {{.*#+}} xmm0 = m64bcst | (xmm0 ^ xmm1)124; CHECK-AVX512VL-NEXT:    retq125  %urem = urem <4 x i32> %X, <i32 3, i32 1, i32 1, i32 9>126  %cmp = icmp ne <4 x i32> %urem, <i32 0, i32 42, i32 0, i32 42>127  ret <4 x i1> %cmp128}129 130define <8 x i1> @t2_narrow(<8 x i16> %X) nounwind {131; CHECK-SSE2-LABEL: t2_narrow:132; CHECK-SSE2:       # %bb.0:133; CHECK-SSE2-NEXT:    pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [43691,43691,43691,43691,43691,43691,43691,43691]134; CHECK-SSE2-NEXT:    psubusw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0135; CHECK-SSE2-NEXT:    pxor %xmm1, %xmm1136; CHECK-SSE2-NEXT:    pcmpeqw %xmm1, %xmm0137; CHECK-SSE2-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0138; CHECK-SSE2-NEXT:    retq139;140; CHECK-SSE41-LABEL: t2_narrow:141; CHECK-SSE41:       # %bb.0:142; CHECK-SSE41-NEXT:    pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [43691,43691,43691,43691,43691,43691,43691,43691]143; CHECK-SSE41-NEXT:    pmovsxdq {{.*#+}} xmm1 = [18446744073709507925,18446744073709507925]144; CHECK-SSE41-NEXT:    pminuw %xmm0, %xmm1145; CHECK-SSE41-NEXT:    pcmpeqw %xmm1, %xmm0146; CHECK-SSE41-NEXT:    pxor %xmm1, %xmm1147; CHECK-SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5],xmm1[6,7]148; CHECK-SSE41-NEXT:    retq149;150; CHECK-AVX1-LABEL: t2_narrow:151; CHECK-AVX1:       # %bb.0:152; CHECK-AVX1-NEXT:    vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [43691,43691,43691,43691,43691,43691,43691,43691]153; CHECK-AVX1-NEXT:    vpminuw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1154; CHECK-AVX1-NEXT:    vpcmpeqw %xmm1, %xmm0, %xmm0155; CHECK-AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1156; CHECK-AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3],xmm0[4,5],xmm1[6,7]157; CHECK-AVX1-NEXT:    retq158;159; CHECK-AVX2-LABEL: t2_narrow:160; CHECK-AVX2:       # %bb.0:161; CHECK-AVX2-NEXT:    vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [43691,43691,43691,43691,43691,43691,43691,43691]162; CHECK-AVX2-NEXT:    vpminuw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1163; CHECK-AVX2-NEXT:    vpcmpeqw %xmm1, %xmm0, %xmm0164; CHECK-AVX2-NEXT:    vpxor %xmm1, %xmm1, %xmm1165; CHECK-AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]166; CHECK-AVX2-NEXT:    retq167;168; CHECK-AVX512VL-LABEL: t2_narrow:169; CHECK-AVX512VL:       # %bb.0:170; CHECK-AVX512VL-NEXT:    vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [43691,43691,43691,43691,43691,43691,43691,43691]171; CHECK-AVX512VL-NEXT:    vpminuw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1172; CHECK-AVX512VL-NEXT:    vpcmpeqw %xmm1, %xmm0, %xmm0173; CHECK-AVX512VL-NEXT:    vpxor %xmm1, %xmm1, %xmm1174; CHECK-AVX512VL-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1],xmm0[2],xmm1[3]175; CHECK-AVX512VL-NEXT:    retq176  %urem = urem <8 x i16> %X, <i16 3, i16 1, i16 1, i16 9, i16 3, i16 1, i16 1, i16 9>177  %cmp = icmp eq <8 x i16> %urem, <i16 0, i16 0, i16 42, i16 42, i16 0, i16 0, i16 42, i16 42>178  ret <8 x i1> %cmp179}180 181define <2 x i1> @t3_wide(<2 x i64> %X) nounwind {182; CHECK-SSE2-LABEL: t3_wide:183; CHECK-SSE2:       # %bb.0:184; CHECK-SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [12297829382473034411,12297829382473034411]185; CHECK-SSE2-NEXT:    movdqa %xmm0, %xmm2186; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm2187; CHECK-SSE2-NEXT:    movdqa %xmm0, %xmm3188; CHECK-SSE2-NEXT:    psrlq $32, %xmm3189; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm3190; CHECK-SSE2-NEXT:    pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [2863311530,2863311530]191; CHECK-SSE2-NEXT:    paddq %xmm3, %xmm0192; CHECK-SSE2-NEXT:    psllq $32, %xmm0193; CHECK-SSE2-NEXT:    paddq %xmm2, %xmm0194; CHECK-SSE2-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0195; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]196; CHECK-SSE2-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0197; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[0,0,2,2]198; CHECK-SSE2-NEXT:    pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1199; CHECK-SSE2-NEXT:    pand %xmm2, %xmm1200; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]201; CHECK-SSE2-NEXT:    por %xmm1, %xmm0202; CHECK-SSE2-NEXT:    pcmpeqd %xmm1, %xmm1203; CHECK-SSE2-NEXT:    pxor %xmm0, %xmm1204; CHECK-SSE2-NEXT:    movq {{.*#+}} xmm0 = xmm1[0],zero205; CHECK-SSE2-NEXT:    retq206;207; CHECK-SSE41-LABEL: t3_wide:208; CHECK-SSE41:       # %bb.0:209; CHECK-SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [12297829382473034411,12297829382473034411]210; CHECK-SSE41-NEXT:    movdqa %xmm0, %xmm2211; CHECK-SSE41-NEXT:    pmuludq %xmm1, %xmm2212; CHECK-SSE41-NEXT:    movdqa %xmm0, %xmm3213; CHECK-SSE41-NEXT:    psrlq $32, %xmm3214; CHECK-SSE41-NEXT:    pmuludq %xmm1, %xmm3215; CHECK-SSE41-NEXT:    pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [2863311530,2863311530]216; CHECK-SSE41-NEXT:    paddq %xmm3, %xmm0217; CHECK-SSE41-NEXT:    psllq $32, %xmm0218; CHECK-SSE41-NEXT:    paddq %xmm2, %xmm0219; CHECK-SSE41-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0220; CHECK-SSE41-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]221; CHECK-SSE41-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0222; CHECK-SSE41-NEXT:    pmovsxdq %xmm0, %xmm2223; CHECK-SSE41-NEXT:    pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1224; CHECK-SSE41-NEXT:    pand %xmm2, %xmm1225; CHECK-SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]226; CHECK-SSE41-NEXT:    por %xmm1, %xmm0227; CHECK-SSE41-NEXT:    pcmpeqd %xmm1, %xmm1228; CHECK-SSE41-NEXT:    pxor %xmm0, %xmm1229; CHECK-SSE41-NEXT:    movq {{.*#+}} xmm0 = xmm1[0],zero230; CHECK-SSE41-NEXT:    retq231;232; CHECK-AVX1-LABEL: t3_wide:233; CHECK-AVX1:       # %bb.0:234; CHECK-AVX1-NEXT:    vmovddup {{.*#+}} xmm1 = [12297829382473034411,12297829382473034411]235; CHECK-AVX1-NEXT:    # xmm1 = mem[0,0]236; CHECK-AVX1-NEXT:    vpmuludq %xmm1, %xmm0, %xmm2237; CHECK-AVX1-NEXT:    vpsrlq $32, %xmm0, %xmm3238; CHECK-AVX1-NEXT:    vpmuludq %xmm1, %xmm3, %xmm1239; CHECK-AVX1-NEXT:    vpmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [2863311530,2863311530]240; CHECK-AVX1-NEXT:    vpaddq %xmm1, %xmm0, %xmm0241; CHECK-AVX1-NEXT:    vpsllq $32, %xmm0, %xmm0242; CHECK-AVX1-NEXT:    vpaddq %xmm0, %xmm2, %xmm0243; CHECK-AVX1-NEXT:    vpxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0244; CHECK-AVX1-NEXT:    movabsq $-3074457345618258603, %rax # imm = 0xD555555555555555245; CHECK-AVX1-NEXT:    vmovq %rax, %xmm1246; CHECK-AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm0247; CHECK-AVX1-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1248; CHECK-AVX1-NEXT:    vpxor %xmm1, %xmm0, %xmm0249; CHECK-AVX1-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero250; CHECK-AVX1-NEXT:    retq251;252; CHECK-AVX2-LABEL: t3_wide:253; CHECK-AVX2:       # %bb.0:254; CHECK-AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm1 = [12297829382473034411,12297829382473034411]255; CHECK-AVX2-NEXT:    vpmuludq %xmm1, %xmm0, %xmm2256; CHECK-AVX2-NEXT:    vpsrlq $32, %xmm0, %xmm3257; CHECK-AVX2-NEXT:    vpmuludq %xmm1, %xmm3, %xmm1258; CHECK-AVX2-NEXT:    vpmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [2863311530,2863311530]259; CHECK-AVX2-NEXT:    vpaddq %xmm1, %xmm0, %xmm0260; CHECK-AVX2-NEXT:    vpsllq $32, %xmm0, %xmm0261; CHECK-AVX2-NEXT:    vpaddq %xmm0, %xmm2, %xmm0262; CHECK-AVX2-NEXT:    vpxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0263; CHECK-AVX2-NEXT:    movabsq $-3074457345618258603, %rax # imm = 0xD555555555555555264; CHECK-AVX2-NEXT:    vmovq %rax, %xmm1265; CHECK-AVX2-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm0266; CHECK-AVX2-NEXT:    vpcmpeqd %xmm1, %xmm1, %xmm1267; CHECK-AVX2-NEXT:    vpxor %xmm1, %xmm0, %xmm0268; CHECK-AVX2-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero269; CHECK-AVX2-NEXT:    retq270;271; CHECK-AVX512VL-LABEL: t3_wide:272; CHECK-AVX512VL:       # %bb.0:273; CHECK-AVX512VL-NEXT:    vpbroadcastq {{.*#+}} xmm1 = [12297829382473034411,12297829382473034411]274; CHECK-AVX512VL-NEXT:    vpmuludq %xmm1, %xmm0, %xmm2275; CHECK-AVX512VL-NEXT:    vpsrlq $32, %xmm0, %xmm3276; CHECK-AVX512VL-NEXT:    vpmuludq %xmm1, %xmm3, %xmm1277; CHECK-AVX512VL-NEXT:    vpmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to2}, %xmm0, %xmm0278; CHECK-AVX512VL-NEXT:    vpaddq %xmm1, %xmm0, %xmm0279; CHECK-AVX512VL-NEXT:    vpsllq $32, %xmm0, %xmm0280; CHECK-AVX512VL-NEXT:    vpaddq %xmm0, %xmm2, %xmm0281; CHECK-AVX512VL-NEXT:    vpminuq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1282; CHECK-AVX512VL-NEXT:    vpcmpeqq %xmm1, %xmm0, %xmm0283; CHECK-AVX512VL-NEXT:    vmovq {{.*#+}} xmm0 = xmm0[0],zero284; CHECK-AVX512VL-NEXT:    retq285  %urem = urem <2 x i64> %X, <i64 3, i64 1>286  %cmp = icmp eq <2 x i64> %urem, <i64 0, i64 42>287  ret <2 x i1> %cmp288}289