brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.6 KiB · 8042103 Raw
320 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-prefix=CHECK-SSE23; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+sse4.1 < %s | FileCheck %s --check-prefix=CHECK-SSE414; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx < %s | FileCheck %s --check-prefix=CHECK-AVX15; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx2 < %s | FileCheck %s --check-prefix=CHECK-AVX26; RUN: llc -mtriple=x86_64-unknown-linux-gnu -mattr=+avx512f,+avx512vl < %s | FileCheck %s --check-prefix=CHECK-AVX512VL7 8define <4 x i1> @t32_3(<4 x i32> %X) nounwind {9; CHECK-SSE2-LABEL: t32_3:10; CHECK-SSE2:       # %bb.0:11; CHECK-SSE2-NEXT:    psubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm012; CHECK-SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [2863311531,2863311531,2863311531,2863311531]13; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]14; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm015; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[0,2,2,3]16; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm217; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]18; CHECK-SSE2-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]19; CHECK-SSE2-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm320; CHECK-SSE2-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm321; CHECK-SSE2-NEXT:    pcmpeqd %xmm0, %xmm022; CHECK-SSE2-NEXT:    pxor %xmm3, %xmm023; CHECK-SSE2-NEXT:    retq24;25; CHECK-SSE41-LABEL: t32_3:26; CHECK-SSE41:       # %bb.0:27; CHECK-SSE41-NEXT:    psubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm028; CHECK-SSE41-NEXT:    pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [2863311531,2863311531,2863311531,2863311531]29; CHECK-SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [1431655765,1431655764,1431655764,1431655764]30; CHECK-SSE41-NEXT:    pminud %xmm0, %xmm131; CHECK-SSE41-NEXT:    pcmpeqd %xmm1, %xmm032; CHECK-SSE41-NEXT:    retq33;34; CHECK-AVX1-LABEL: t32_3:35; CHECK-AVX1:       # %bb.0:36; CHECK-AVX1-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm037; CHECK-AVX1-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [2863311531,2863311531,2863311531,2863311531]38; CHECK-AVX1-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm139; CHECK-AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm040; CHECK-AVX1-NEXT:    retq41;42; CHECK-AVX2-LABEL: t32_3:43; CHECK-AVX2:       # %bb.0:44; CHECK-AVX2-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm045; CHECK-AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [2863311531,2863311531,2863311531,2863311531]46; CHECK-AVX2-NEXT:    vpmulld %xmm1, %xmm0, %xmm047; CHECK-AVX2-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm148; CHECK-AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm049; CHECK-AVX2-NEXT:    retq50;51; CHECK-AVX512VL-LABEL: t32_3:52; CHECK-AVX512VL:       # %bb.0:53; CHECK-AVX512VL-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm054; CHECK-AVX512VL-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm055; CHECK-AVX512VL-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm156; CHECK-AVX512VL-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm057; CHECK-AVX512VL-NEXT:    retq58  %urem = urem <4 x i32> %X, <i32 3, i32 3, i32 3, i32 3>59  %cmp = icmp eq <4 x i32> %urem, <i32 0, i32 1, i32 2, i32 2>60  ret <4 x i1> %cmp61}62 63define <4 x i1> @t32_5(<4 x i32> %X) nounwind {64; CHECK-SSE2-LABEL: t32_5:65; CHECK-SSE2:       # %bb.0:66; CHECK-SSE2-NEXT:    psubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm067; CHECK-SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [3435973837,3435973837,3435973837,3435973837]68; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]69; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm070; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[0,2,2,3]71; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm272; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]73; CHECK-SSE2-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]74; CHECK-SSE2-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm375; CHECK-SSE2-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm376; CHECK-SSE2-NEXT:    pcmpeqd %xmm0, %xmm077; CHECK-SSE2-NEXT:    pxor %xmm3, %xmm078; CHECK-SSE2-NEXT:    retq79;80; CHECK-SSE41-LABEL: t32_5:81; CHECK-SSE41:       # %bb.0:82; CHECK-SSE41-NEXT:    psubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm083; CHECK-SSE41-NEXT:    pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [3435973837,3435973837,3435973837,3435973837]84; CHECK-SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [858993458,858993458,858993458,858993458]85; CHECK-SSE41-NEXT:    pminud %xmm0, %xmm186; CHECK-SSE41-NEXT:    pcmpeqd %xmm1, %xmm087; CHECK-SSE41-NEXT:    retq88;89; CHECK-AVX1-LABEL: t32_5:90; CHECK-AVX1:       # %bb.0:91; CHECK-AVX1-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm092; CHECK-AVX1-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [3435973837,3435973837,3435973837,3435973837]93; CHECK-AVX1-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm194; CHECK-AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm095; CHECK-AVX1-NEXT:    retq96;97; CHECK-AVX2-LABEL: t32_5:98; CHECK-AVX2:       # %bb.0:99; CHECK-AVX2-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0100; CHECK-AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [3435973837,3435973837,3435973837,3435973837]101; CHECK-AVX2-NEXT:    vpmulld %xmm1, %xmm0, %xmm0102; CHECK-AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [858993458,858993458,858993458,858993458]103; CHECK-AVX2-NEXT:    vpminud %xmm1, %xmm0, %xmm1104; CHECK-AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0105; CHECK-AVX2-NEXT:    retq106;107; CHECK-AVX512VL-LABEL: t32_5:108; CHECK-AVX512VL:       # %bb.0:109; CHECK-AVX512VL-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0110; CHECK-AVX512VL-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0111; CHECK-AVX512VL-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm1112; CHECK-AVX512VL-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0113; CHECK-AVX512VL-NEXT:    retq114  %urem = urem <4 x i32> %X, <i32 5, i32 5, i32 5, i32 5>115  %cmp = icmp eq <4 x i32> %urem, <i32 1, i32 2, i32 3, i32 4>116  ret <4 x i1> %cmp117}118 119define <4 x i1> @t32_6_part0(<4 x i32> %X) nounwind {120; CHECK-SSE2-LABEL: t32_6_part0:121; CHECK-SSE2:       # %bb.0:122; CHECK-SSE2-NEXT:    psubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0123; CHECK-SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [2863311531,2863311531,2863311531,2863311531]124; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]125; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm0126; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[0,2,2,3]127; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm2128; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]129; CHECK-SSE2-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]130; CHECK-SSE2-NEXT:    movdqa %xmm3, %xmm0131; CHECK-SSE2-NEXT:    psrld $1, %xmm0132; CHECK-SSE2-NEXT:    pslld $31, %xmm3133; CHECK-SSE2-NEXT:    por %xmm0, %xmm3134; CHECK-SSE2-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3135; CHECK-SSE2-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3136; CHECK-SSE2-NEXT:    pcmpeqd %xmm0, %xmm0137; CHECK-SSE2-NEXT:    pxor %xmm3, %xmm0138; CHECK-SSE2-NEXT:    retq139;140; CHECK-SSE41-LABEL: t32_6_part0:141; CHECK-SSE41:       # %bb.0:142; CHECK-SSE41-NEXT:    psubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0143; CHECK-SSE41-NEXT:    pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [2863311531,2863311531,2863311531,2863311531]144; CHECK-SSE41-NEXT:    movdqa %xmm0, %xmm1145; CHECK-SSE41-NEXT:    psrld $1, %xmm1146; CHECK-SSE41-NEXT:    pslld $31, %xmm0147; CHECK-SSE41-NEXT:    por %xmm1, %xmm0148; CHECK-SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [715827882,715827882,715827882,715827882]149; CHECK-SSE41-NEXT:    pminud %xmm0, %xmm1150; CHECK-SSE41-NEXT:    pcmpeqd %xmm1, %xmm0151; CHECK-SSE41-NEXT:    retq152;153; CHECK-AVX1-LABEL: t32_6_part0:154; CHECK-AVX1:       # %bb.0:155; CHECK-AVX1-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0156; CHECK-AVX1-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [2863311531,2863311531,2863311531,2863311531]157; CHECK-AVX1-NEXT:    vpsrld $1, %xmm0, %xmm1158; CHECK-AVX1-NEXT:    vpslld $31, %xmm0, %xmm0159; CHECK-AVX1-NEXT:    vpor %xmm1, %xmm0, %xmm0160; CHECK-AVX1-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1161; CHECK-AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0162; CHECK-AVX1-NEXT:    retq163;164; CHECK-AVX2-LABEL: t32_6_part0:165; CHECK-AVX2:       # %bb.0:166; CHECK-AVX2-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0167; CHECK-AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [2863311531,2863311531,2863311531,2863311531]168; CHECK-AVX2-NEXT:    vpmulld %xmm1, %xmm0, %xmm0169; CHECK-AVX2-NEXT:    vpsrld $1, %xmm0, %xmm1170; CHECK-AVX2-NEXT:    vpslld $31, %xmm0, %xmm0171; CHECK-AVX2-NEXT:    vpor %xmm1, %xmm0, %xmm0172; CHECK-AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [715827882,715827882,715827882,715827882]173; CHECK-AVX2-NEXT:    vpminud %xmm1, %xmm0, %xmm1174; CHECK-AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0175; CHECK-AVX2-NEXT:    retq176;177; CHECK-AVX512VL-LABEL: t32_6_part0:178; CHECK-AVX512VL:       # %bb.0:179; CHECK-AVX512VL-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0180; CHECK-AVX512VL-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0181; CHECK-AVX512VL-NEXT:    vprord $1, %xmm0, %xmm0182; CHECK-AVX512VL-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm1183; CHECK-AVX512VL-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0184; CHECK-AVX512VL-NEXT:    retq185  %urem = urem <4 x i32> %X, <i32 6, i32 6, i32 6, i32 6>186  %cmp = icmp eq <4 x i32> %urem, <i32 0, i32 1, i32 2, i32 3>187  ret <4 x i1> %cmp188}189 190define <4 x i1> @t32_6_part1(<4 x i32> %X) nounwind {191; CHECK-SSE2-LABEL: t32_6_part1:192; CHECK-SSE2:       # %bb.0:193; CHECK-SSE2-NEXT:    psubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0194; CHECK-SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [2863311531,2863311531,2863311531,2863311531]195; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]196; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm0197; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[0,2,2,3]198; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm2199; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm0 = xmm2[0,2,2,3]200; CHECK-SSE2-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm0[0],xmm3[1],xmm0[1]201; CHECK-SSE2-NEXT:    movdqa %xmm3, %xmm0202; CHECK-SSE2-NEXT:    psrld $1, %xmm0203; CHECK-SSE2-NEXT:    pslld $31, %xmm3204; CHECK-SSE2-NEXT:    por %xmm0, %xmm3205; CHECK-SSE2-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3206; CHECK-SSE2-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm3207; CHECK-SSE2-NEXT:    pcmpeqd %xmm0, %xmm0208; CHECK-SSE2-NEXT:    pxor %xmm3, %xmm0209; CHECK-SSE2-NEXT:    retq210;211; CHECK-SSE41-LABEL: t32_6_part1:212; CHECK-SSE41:       # %bb.0:213; CHECK-SSE41-NEXT:    psubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0214; CHECK-SSE41-NEXT:    pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [2863311531,2863311531,2863311531,2863311531]215; CHECK-SSE41-NEXT:    movdqa %xmm0, %xmm1216; CHECK-SSE41-NEXT:    psrld $1, %xmm1217; CHECK-SSE41-NEXT:    pslld $31, %xmm0218; CHECK-SSE41-NEXT:    por %xmm1, %xmm0219; CHECK-SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [715827881,715827881,715827882,715827882]220; CHECK-SSE41-NEXT:    pminud %xmm0, %xmm1221; CHECK-SSE41-NEXT:    pcmpeqd %xmm1, %xmm0222; CHECK-SSE41-NEXT:    retq223;224; CHECK-AVX1-LABEL: t32_6_part1:225; CHECK-AVX1:       # %bb.0:226; CHECK-AVX1-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0227; CHECK-AVX1-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [2863311531,2863311531,2863311531,2863311531]228; CHECK-AVX1-NEXT:    vpsrld $1, %xmm0, %xmm1229; CHECK-AVX1-NEXT:    vpslld $31, %xmm0, %xmm0230; CHECK-AVX1-NEXT:    vpor %xmm1, %xmm0, %xmm0231; CHECK-AVX1-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1232; CHECK-AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0233; CHECK-AVX1-NEXT:    retq234;235; CHECK-AVX2-LABEL: t32_6_part1:236; CHECK-AVX2:       # %bb.0:237; CHECK-AVX2-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0238; CHECK-AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [2863311531,2863311531,2863311531,2863311531]239; CHECK-AVX2-NEXT:    vpmulld %xmm1, %xmm0, %xmm0240; CHECK-AVX2-NEXT:    vpsrld $1, %xmm0, %xmm1241; CHECK-AVX2-NEXT:    vpslld $31, %xmm0, %xmm0242; CHECK-AVX2-NEXT:    vpor %xmm1, %xmm0, %xmm0243; CHECK-AVX2-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1244; CHECK-AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0245; CHECK-AVX2-NEXT:    retq246;247; CHECK-AVX512VL-LABEL: t32_6_part1:248; CHECK-AVX512VL:       # %bb.0:249; CHECK-AVX512VL-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0250; CHECK-AVX512VL-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0251; CHECK-AVX512VL-NEXT:    vprord $1, %xmm0, %xmm0252; CHECK-AVX512VL-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1253; CHECK-AVX512VL-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0254; CHECK-AVX512VL-NEXT:    retq255  %urem = urem <4 x i32> %X, <i32 6, i32 6, i32 6, i32 6>256  %cmp = icmp eq <4 x i32> %urem, <i32 4, i32 5, i32 0, i32 0>257  ret <4 x i1> %cmp258}259 260define <4 x i1> @t32_tautological(<4 x i32> %X) nounwind {261; CHECK-SSE2-LABEL: t32_tautological:262; CHECK-SSE2:       # %bb.0:263; CHECK-SSE2-NEXT:    psubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0264; CHECK-SSE2-NEXT:    movdqa {{.*#+}} xmm1 = [2863311531,2863311531,2863311531,2863311531]265; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[1,1,3,3]266; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm0267; CHECK-SSE2-NEXT:    pmuludq %xmm1, %xmm2268; CHECK-SSE2-NEXT:    pshufd {{.*#+}} xmm1 = xmm2[0,2,2,3]269; CHECK-SSE2-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]270; CHECK-SSE2-NEXT:    pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0271; CHECK-SSE2-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0272; CHECK-SSE2-NEXT:    pandn {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0273; CHECK-SSE2-NEXT:    retq274;275; CHECK-SSE41-LABEL: t32_tautological:276; CHECK-SSE41:       # %bb.0:277; CHECK-SSE41-NEXT:    psubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0278; CHECK-SSE41-NEXT:    pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0 # [2863311531,2863311531,2863311531,2863311531]279; CHECK-SSE41-NEXT:    movdqa {{.*#+}} xmm1 = [4294967295,4294967295,4294967295,1431655764]280; CHECK-SSE41-NEXT:    pminud %xmm0, %xmm1281; CHECK-SSE41-NEXT:    pcmpeqd %xmm1, %xmm0282; CHECK-SSE41-NEXT:    pxor %xmm1, %xmm1283; CHECK-SSE41-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3,4,5],xmm0[6,7]284; CHECK-SSE41-NEXT:    retq285;286; CHECK-AVX1-LABEL: t32_tautological:287; CHECK-AVX1:       # %bb.0:288; CHECK-AVX1-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0289; CHECK-AVX1-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0 # [2863311531,2863311531,2863311531,2863311531]290; CHECK-AVX1-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1291; CHECK-AVX1-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0292; CHECK-AVX1-NEXT:    vpxor %xmm1, %xmm1, %xmm1293; CHECK-AVX1-NEXT:    vpblendw {{.*#+}} xmm0 = xmm0[0,1],xmm1[2,3,4,5],xmm0[6,7]294; CHECK-AVX1-NEXT:    retq295;296; CHECK-AVX2-LABEL: t32_tautological:297; CHECK-AVX2:       # %bb.0:298; CHECK-AVX2-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0299; CHECK-AVX2-NEXT:    vpbroadcastd {{.*#+}} xmm1 = [2863311531,2863311531,2863311531,2863311531]300; CHECK-AVX2-NEXT:    vpmulld %xmm1, %xmm0, %xmm0301; CHECK-AVX2-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1302; CHECK-AVX2-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0303; CHECK-AVX2-NEXT:    vpxor %xmm1, %xmm1, %xmm1304; CHECK-AVX2-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1,2],xmm0[3]305; CHECK-AVX2-NEXT:    retq306;307; CHECK-AVX512VL-LABEL: t32_tautological:308; CHECK-AVX512VL:       # %bb.0:309; CHECK-AVX512VL-NEXT:    vpsubd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0310; CHECK-AVX512VL-NEXT:    vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0311; CHECK-AVX512VL-NEXT:    vpminud {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1312; CHECK-AVX512VL-NEXT:    vpcmpeqd %xmm1, %xmm0, %xmm0313; CHECK-AVX512VL-NEXT:    vpxor %xmm1, %xmm1, %xmm1314; CHECK-AVX512VL-NEXT:    vpblendd {{.*#+}} xmm0 = xmm0[0],xmm1[1,2],xmm0[3]315; CHECK-AVX512VL-NEXT:    retq316  %urem = urem <4 x i32> %X, <i32 1, i32 1, i32 2, i32 3>317  %cmp = icmp eq <4 x i32> %urem, <i32 0, i32 1, i32 2, i32 2>318  ret <4 x i1> %cmp319}320