brintos

brintos / llvm-project-archived public Read only

0
0
Text · 70.4 KiB · 853e29b Raw
2185 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,SSE23; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefixes=SSE,SSE414; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse4.2 | FileCheck %s --check-prefixes=SSE,SSE425; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX16; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX27; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes=AVX,AVX5128; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bw | FileCheck %s --check-prefixes=AVX,AVX5129 10;11; Signed Maximum (GT)12;13 14define <2 x i64> @max_gt_v2i64(<2 x i64> %a, <2 x i64> %b) {15; SSE2-LABEL: max_gt_v2i64:16; SSE2:       # %bb.0:17; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]18; SSE2-NEXT:    movdqa %xmm1, %xmm319; SSE2-NEXT:    pxor %xmm2, %xmm320; SSE2-NEXT:    pxor %xmm0, %xmm221; SSE2-NEXT:    movdqa %xmm2, %xmm422; SSE2-NEXT:    pcmpgtd %xmm3, %xmm423; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]24; SSE2-NEXT:    pcmpeqd %xmm3, %xmm225; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]26; SSE2-NEXT:    pand %xmm5, %xmm227; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]28; SSE2-NEXT:    por %xmm2, %xmm329; SSE2-NEXT:    pand %xmm3, %xmm030; SSE2-NEXT:    pandn %xmm1, %xmm331; SSE2-NEXT:    por %xmm3, %xmm032; SSE2-NEXT:    retq33;34; SSE41-LABEL: max_gt_v2i64:35; SSE41:       # %bb.0:36; SSE41-NEXT:    movdqa %xmm0, %xmm237; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm3 = [2147483648,2147483648]38; SSE41-NEXT:    movdqa %xmm1, %xmm039; SSE41-NEXT:    pxor %xmm3, %xmm040; SSE41-NEXT:    pxor %xmm2, %xmm341; SSE41-NEXT:    movdqa %xmm3, %xmm442; SSE41-NEXT:    pcmpeqd %xmm0, %xmm443; SSE41-NEXT:    pcmpgtd %xmm0, %xmm344; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]45; SSE41-NEXT:    pand %xmm4, %xmm046; SSE41-NEXT:    por %xmm3, %xmm047; SSE41-NEXT:    blendvpd %xmm0, %xmm2, %xmm148; SSE41-NEXT:    movapd %xmm1, %xmm049; SSE41-NEXT:    retq50;51; SSE42-LABEL: max_gt_v2i64:52; SSE42:       # %bb.0:53; SSE42-NEXT:    movdqa %xmm0, %xmm254; SSE42-NEXT:    pcmpgtq %xmm1, %xmm055; SSE42-NEXT:    blendvpd %xmm0, %xmm2, %xmm156; SSE42-NEXT:    movapd %xmm1, %xmm057; SSE42-NEXT:    retq58;59; AVX1-LABEL: max_gt_v2i64:60; AVX1:       # %bb.0:61; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm262; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm063; AVX1-NEXT:    retq64;65; AVX2-LABEL: max_gt_v2i64:66; AVX2:       # %bb.0:67; AVX2-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm268; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm069; AVX2-NEXT:    retq70;71; AVX512-LABEL: max_gt_v2i64:72; AVX512:       # %bb.0:73; AVX512-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm174; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm075; AVX512-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm076; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm077; AVX512-NEXT:    vzeroupper78; AVX512-NEXT:    retq79  %1 = icmp sgt <2 x i64> %a, %b80  %2 = select <2 x i1> %1, <2 x i64> %a, <2 x i64> %b81  ret <2 x i64> %282}83 84define <4 x i64> @max_gt_v4i64(<4 x i64> %a, <4 x i64> %b) {85; SSE2-LABEL: max_gt_v4i64:86; SSE2:       # %bb.0:87; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]88; SSE2-NEXT:    movdqa %xmm2, %xmm589; SSE2-NEXT:    pxor %xmm4, %xmm590; SSE2-NEXT:    movdqa %xmm0, %xmm691; SSE2-NEXT:    pxor %xmm4, %xmm692; SSE2-NEXT:    movdqa %xmm6, %xmm793; SSE2-NEXT:    pcmpgtd %xmm5, %xmm794; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]95; SSE2-NEXT:    pcmpeqd %xmm5, %xmm696; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]97; SSE2-NEXT:    pand %xmm8, %xmm598; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]99; SSE2-NEXT:    por %xmm5, %xmm6100; SSE2-NEXT:    pand %xmm6, %xmm0101; SSE2-NEXT:    pandn %xmm2, %xmm6102; SSE2-NEXT:    por %xmm6, %xmm0103; SSE2-NEXT:    movdqa %xmm3, %xmm2104; SSE2-NEXT:    pxor %xmm4, %xmm2105; SSE2-NEXT:    pxor %xmm1, %xmm4106; SSE2-NEXT:    movdqa %xmm4, %xmm5107; SSE2-NEXT:    pcmpgtd %xmm2, %xmm5108; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]109; SSE2-NEXT:    pcmpeqd %xmm2, %xmm4110; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]111; SSE2-NEXT:    pand %xmm6, %xmm2112; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]113; SSE2-NEXT:    por %xmm2, %xmm4114; SSE2-NEXT:    pand %xmm4, %xmm1115; SSE2-NEXT:    pandn %xmm3, %xmm4116; SSE2-NEXT:    por %xmm4, %xmm1117; SSE2-NEXT:    retq118;119; SSE41-LABEL: max_gt_v4i64:120; SSE41:       # %bb.0:121; SSE41-NEXT:    movdqa %xmm0, %xmm4122; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm5 = [2147483648,2147483648]123; SSE41-NEXT:    movdqa %xmm2, %xmm0124; SSE41-NEXT:    pxor %xmm5, %xmm0125; SSE41-NEXT:    movdqa %xmm4, %xmm6126; SSE41-NEXT:    pxor %xmm5, %xmm6127; SSE41-NEXT:    movdqa %xmm6, %xmm7128; SSE41-NEXT:    pcmpeqd %xmm0, %xmm7129; SSE41-NEXT:    pcmpgtd %xmm0, %xmm6130; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]131; SSE41-NEXT:    pand %xmm7, %xmm0132; SSE41-NEXT:    por %xmm6, %xmm0133; SSE41-NEXT:    blendvpd %xmm0, %xmm4, %xmm2134; SSE41-NEXT:    movdqa %xmm3, %xmm0135; SSE41-NEXT:    pxor %xmm5, %xmm0136; SSE41-NEXT:    pxor %xmm1, %xmm5137; SSE41-NEXT:    movdqa %xmm5, %xmm4138; SSE41-NEXT:    pcmpeqd %xmm0, %xmm4139; SSE41-NEXT:    pcmpgtd %xmm0, %xmm5140; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]141; SSE41-NEXT:    pand %xmm4, %xmm0142; SSE41-NEXT:    por %xmm5, %xmm0143; SSE41-NEXT:    blendvpd %xmm0, %xmm1, %xmm3144; SSE41-NEXT:    movapd %xmm2, %xmm0145; SSE41-NEXT:    movapd %xmm3, %xmm1146; SSE41-NEXT:    retq147;148; SSE42-LABEL: max_gt_v4i64:149; SSE42:       # %bb.0:150; SSE42-NEXT:    movdqa %xmm0, %xmm4151; SSE42-NEXT:    pcmpgtq %xmm2, %xmm0152; SSE42-NEXT:    blendvpd %xmm0, %xmm4, %xmm2153; SSE42-NEXT:    movdqa %xmm1, %xmm0154; SSE42-NEXT:    pcmpgtq %xmm3, %xmm0155; SSE42-NEXT:    blendvpd %xmm0, %xmm1, %xmm3156; SSE42-NEXT:    movapd %xmm2, %xmm0157; SSE42-NEXT:    movapd %xmm3, %xmm1158; SSE42-NEXT:    retq159;160; AVX1-LABEL: max_gt_v4i64:161; AVX1:       # %bb.0:162; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2163; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3164; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm2165; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm3166; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2167; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm0168; AVX1-NEXT:    retq169;170; AVX2-LABEL: max_gt_v4i64:171; AVX2:       # %bb.0:172; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm2173; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm0174; AVX2-NEXT:    retq175;176; AVX512-LABEL: max_gt_v4i64:177; AVX512:       # %bb.0:178; AVX512-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1179; AVX512-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0180; AVX512-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm0181; AVX512-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0182; AVX512-NEXT:    retq183  %1 = icmp sgt <4 x i64> %a, %b184  %2 = select <4 x i1> %1, <4 x i64> %a, <4 x i64> %b185  ret <4 x i64> %2186}187 188define <4 x i32> @max_gt_v4i32(<4 x i32> %a, <4 x i32> %b) {189; SSE2-LABEL: max_gt_v4i32:190; SSE2:       # %bb.0:191; SSE2-NEXT:    movdqa %xmm0, %xmm2192; SSE2-NEXT:    pcmpgtd %xmm1, %xmm2193; SSE2-NEXT:    pand %xmm2, %xmm0194; SSE2-NEXT:    pandn %xmm1, %xmm2195; SSE2-NEXT:    por %xmm2, %xmm0196; SSE2-NEXT:    retq197;198; SSE41-LABEL: max_gt_v4i32:199; SSE41:       # %bb.0:200; SSE41-NEXT:    pmaxsd %xmm1, %xmm0201; SSE41-NEXT:    retq202;203; SSE42-LABEL: max_gt_v4i32:204; SSE42:       # %bb.0:205; SSE42-NEXT:    pmaxsd %xmm1, %xmm0206; SSE42-NEXT:    retq207;208; AVX-LABEL: max_gt_v4i32:209; AVX:       # %bb.0:210; AVX-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm0211; AVX-NEXT:    retq212  %1 = icmp sgt <4 x i32> %a, %b213  %2 = select <4 x i1> %1, <4 x i32> %a, <4 x i32> %b214  ret <4 x i32> %2215}216 217define <8 x i32> @max_gt_v8i32(<8 x i32> %a, <8 x i32> %b) {218; SSE2-LABEL: max_gt_v8i32:219; SSE2:       # %bb.0:220; SSE2-NEXT:    movdqa %xmm0, %xmm4221; SSE2-NEXT:    pcmpgtd %xmm2, %xmm4222; SSE2-NEXT:    pand %xmm4, %xmm0223; SSE2-NEXT:    pandn %xmm2, %xmm4224; SSE2-NEXT:    por %xmm4, %xmm0225; SSE2-NEXT:    movdqa %xmm1, %xmm2226; SSE2-NEXT:    pcmpgtd %xmm3, %xmm2227; SSE2-NEXT:    pand %xmm2, %xmm1228; SSE2-NEXT:    pandn %xmm3, %xmm2229; SSE2-NEXT:    por %xmm2, %xmm1230; SSE2-NEXT:    retq231;232; SSE41-LABEL: max_gt_v8i32:233; SSE41:       # %bb.0:234; SSE41-NEXT:    pmaxsd %xmm2, %xmm0235; SSE41-NEXT:    pmaxsd %xmm3, %xmm1236; SSE41-NEXT:    retq237;238; SSE42-LABEL: max_gt_v8i32:239; SSE42:       # %bb.0:240; SSE42-NEXT:    pmaxsd %xmm2, %xmm0241; SSE42-NEXT:    pmaxsd %xmm3, %xmm1242; SSE42-NEXT:    retq243;244; AVX1-LABEL: max_gt_v8i32:245; AVX1:       # %bb.0:246; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2247; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3248; AVX1-NEXT:    vpmaxsd %xmm2, %xmm3, %xmm2249; AVX1-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm0250; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0251; AVX1-NEXT:    retq252;253; AVX2-LABEL: max_gt_v8i32:254; AVX2:       # %bb.0:255; AVX2-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm0256; AVX2-NEXT:    retq257;258; AVX512-LABEL: max_gt_v8i32:259; AVX512:       # %bb.0:260; AVX512-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm0261; AVX512-NEXT:    retq262  %1 = icmp sgt <8 x i32> %a, %b263  %2 = select <8 x i1> %1, <8 x i32> %a, <8 x i32> %b264  ret <8 x i32> %2265}266 267define <8 x i16> @max_gt_v8i16(<8 x i16> %a, <8 x i16> %b) {268; SSE-LABEL: max_gt_v8i16:269; SSE:       # %bb.0:270; SSE-NEXT:    pmaxsw %xmm1, %xmm0271; SSE-NEXT:    retq272;273; AVX-LABEL: max_gt_v8i16:274; AVX:       # %bb.0:275; AVX-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0276; AVX-NEXT:    retq277  %1 = icmp sgt <8 x i16> %a, %b278  %2 = select <8 x i1> %1, <8 x i16> %a, <8 x i16> %b279  ret <8 x i16> %2280}281 282define <16 x i16> @max_gt_v16i16(<16 x i16> %a, <16 x i16> %b) {283; SSE-LABEL: max_gt_v16i16:284; SSE:       # %bb.0:285; SSE-NEXT:    pmaxsw %xmm2, %xmm0286; SSE-NEXT:    pmaxsw %xmm3, %xmm1287; SSE-NEXT:    retq288;289; AVX1-LABEL: max_gt_v16i16:290; AVX1:       # %bb.0:291; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2292; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3293; AVX1-NEXT:    vpmaxsw %xmm2, %xmm3, %xmm2294; AVX1-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0295; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0296; AVX1-NEXT:    retq297;298; AVX2-LABEL: max_gt_v16i16:299; AVX2:       # %bb.0:300; AVX2-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm0301; AVX2-NEXT:    retq302;303; AVX512-LABEL: max_gt_v16i16:304; AVX512:       # %bb.0:305; AVX512-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm0306; AVX512-NEXT:    retq307  %1 = icmp sgt <16 x i16> %a, %b308  %2 = select <16 x i1> %1, <16 x i16> %a, <16 x i16> %b309  ret <16 x i16> %2310}311 312define <16 x i8> @max_gt_v16i8(<16 x i8> %a, <16 x i8> %b) {313; SSE2-LABEL: max_gt_v16i8:314; SSE2:       # %bb.0:315; SSE2-NEXT:    movdqa %xmm0, %xmm2316; SSE2-NEXT:    pcmpgtb %xmm1, %xmm2317; SSE2-NEXT:    pand %xmm2, %xmm0318; SSE2-NEXT:    pandn %xmm1, %xmm2319; SSE2-NEXT:    por %xmm2, %xmm0320; SSE2-NEXT:    retq321;322; SSE41-LABEL: max_gt_v16i8:323; SSE41:       # %bb.0:324; SSE41-NEXT:    pmaxsb %xmm1, %xmm0325; SSE41-NEXT:    retq326;327; SSE42-LABEL: max_gt_v16i8:328; SSE42:       # %bb.0:329; SSE42-NEXT:    pmaxsb %xmm1, %xmm0330; SSE42-NEXT:    retq331;332; AVX-LABEL: max_gt_v16i8:333; AVX:       # %bb.0:334; AVX-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm0335; AVX-NEXT:    retq336  %1 = icmp sgt <16 x i8> %a, %b337  %2 = select <16 x i1> %1, <16 x i8> %a, <16 x i8> %b338  ret <16 x i8> %2339}340 341define <32 x i8> @max_gt_v32i8(<32 x i8> %a, <32 x i8> %b) {342; SSE2-LABEL: max_gt_v32i8:343; SSE2:       # %bb.0:344; SSE2-NEXT:    movdqa %xmm0, %xmm4345; SSE2-NEXT:    pcmpgtb %xmm2, %xmm4346; SSE2-NEXT:    pand %xmm4, %xmm0347; SSE2-NEXT:    pandn %xmm2, %xmm4348; SSE2-NEXT:    por %xmm4, %xmm0349; SSE2-NEXT:    movdqa %xmm1, %xmm2350; SSE2-NEXT:    pcmpgtb %xmm3, %xmm2351; SSE2-NEXT:    pand %xmm2, %xmm1352; SSE2-NEXT:    pandn %xmm3, %xmm2353; SSE2-NEXT:    por %xmm2, %xmm1354; SSE2-NEXT:    retq355;356; SSE41-LABEL: max_gt_v32i8:357; SSE41:       # %bb.0:358; SSE41-NEXT:    pmaxsb %xmm2, %xmm0359; SSE41-NEXT:    pmaxsb %xmm3, %xmm1360; SSE41-NEXT:    retq361;362; SSE42-LABEL: max_gt_v32i8:363; SSE42:       # %bb.0:364; SSE42-NEXT:    pmaxsb %xmm2, %xmm0365; SSE42-NEXT:    pmaxsb %xmm3, %xmm1366; SSE42-NEXT:    retq367;368; AVX1-LABEL: max_gt_v32i8:369; AVX1:       # %bb.0:370; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2371; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3372; AVX1-NEXT:    vpmaxsb %xmm2, %xmm3, %xmm2373; AVX1-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm0374; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0375; AVX1-NEXT:    retq376;377; AVX2-LABEL: max_gt_v32i8:378; AVX2:       # %bb.0:379; AVX2-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm0380; AVX2-NEXT:    retq381;382; AVX512-LABEL: max_gt_v32i8:383; AVX512:       # %bb.0:384; AVX512-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm0385; AVX512-NEXT:    retq386  %1 = icmp sgt <32 x i8> %a, %b387  %2 = select <32 x i1> %1, <32 x i8> %a, <32 x i8> %b388  ret <32 x i8> %2389}390 391;392; Signed Maximum (GE)393;394 395define <2 x i64> @max_ge_v2i64(<2 x i64> %a, <2 x i64> %b) {396; SSE2-LABEL: max_ge_v2i64:397; SSE2:       # %bb.0:398; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]399; SSE2-NEXT:    movdqa %xmm1, %xmm3400; SSE2-NEXT:    pxor %xmm2, %xmm3401; SSE2-NEXT:    pxor %xmm0, %xmm2402; SSE2-NEXT:    movdqa %xmm2, %xmm4403; SSE2-NEXT:    pcmpgtd %xmm3, %xmm4404; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]405; SSE2-NEXT:    pcmpeqd %xmm3, %xmm2406; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]407; SSE2-NEXT:    pand %xmm5, %xmm2408; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]409; SSE2-NEXT:    por %xmm2, %xmm3410; SSE2-NEXT:    pand %xmm3, %xmm0411; SSE2-NEXT:    pandn %xmm1, %xmm3412; SSE2-NEXT:    por %xmm3, %xmm0413; SSE2-NEXT:    retq414;415; SSE41-LABEL: max_ge_v2i64:416; SSE41:       # %bb.0:417; SSE41-NEXT:    movdqa %xmm0, %xmm2418; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm3 = [2147483648,2147483648]419; SSE41-NEXT:    movdqa %xmm1, %xmm0420; SSE41-NEXT:    pxor %xmm3, %xmm0421; SSE41-NEXT:    pxor %xmm2, %xmm3422; SSE41-NEXT:    movdqa %xmm3, %xmm4423; SSE41-NEXT:    pcmpeqd %xmm0, %xmm4424; SSE41-NEXT:    pcmpgtd %xmm0, %xmm3425; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]426; SSE41-NEXT:    pand %xmm4, %xmm0427; SSE41-NEXT:    por %xmm3, %xmm0428; SSE41-NEXT:    blendvpd %xmm0, %xmm2, %xmm1429; SSE41-NEXT:    movapd %xmm1, %xmm0430; SSE41-NEXT:    retq431;432; SSE42-LABEL: max_ge_v2i64:433; SSE42:       # %bb.0:434; SSE42-NEXT:    movdqa %xmm0, %xmm2435; SSE42-NEXT:    pcmpgtq %xmm1, %xmm0436; SSE42-NEXT:    blendvpd %xmm0, %xmm2, %xmm1437; SSE42-NEXT:    movapd %xmm1, %xmm0438; SSE42-NEXT:    retq439;440; AVX1-LABEL: max_ge_v2i64:441; AVX1:       # %bb.0:442; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm2443; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm0444; AVX1-NEXT:    retq445;446; AVX2-LABEL: max_ge_v2i64:447; AVX2:       # %bb.0:448; AVX2-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm2449; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm0450; AVX2-NEXT:    retq451;452; AVX512-LABEL: max_ge_v2i64:453; AVX512:       # %bb.0:454; AVX512-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1455; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0456; AVX512-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm0457; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0458; AVX512-NEXT:    vzeroupper459; AVX512-NEXT:    retq460  %1 = icmp sge <2 x i64> %a, %b461  %2 = select <2 x i1> %1, <2 x i64> %a, <2 x i64> %b462  ret <2 x i64> %2463}464 465define <4 x i64> @max_ge_v4i64(<4 x i64> %a, <4 x i64> %b) {466; SSE2-LABEL: max_ge_v4i64:467; SSE2:       # %bb.0:468; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]469; SSE2-NEXT:    movdqa %xmm2, %xmm5470; SSE2-NEXT:    pxor %xmm4, %xmm5471; SSE2-NEXT:    movdqa %xmm0, %xmm6472; SSE2-NEXT:    pxor %xmm4, %xmm6473; SSE2-NEXT:    movdqa %xmm6, %xmm7474; SSE2-NEXT:    pcmpgtd %xmm5, %xmm7475; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]476; SSE2-NEXT:    pcmpeqd %xmm5, %xmm6477; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]478; SSE2-NEXT:    pand %xmm8, %xmm5479; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]480; SSE2-NEXT:    por %xmm5, %xmm6481; SSE2-NEXT:    pand %xmm6, %xmm0482; SSE2-NEXT:    pandn %xmm2, %xmm6483; SSE2-NEXT:    por %xmm6, %xmm0484; SSE2-NEXT:    movdqa %xmm3, %xmm2485; SSE2-NEXT:    pxor %xmm4, %xmm2486; SSE2-NEXT:    pxor %xmm1, %xmm4487; SSE2-NEXT:    movdqa %xmm4, %xmm5488; SSE2-NEXT:    pcmpgtd %xmm2, %xmm5489; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]490; SSE2-NEXT:    pcmpeqd %xmm2, %xmm4491; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]492; SSE2-NEXT:    pand %xmm6, %xmm2493; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]494; SSE2-NEXT:    por %xmm2, %xmm4495; SSE2-NEXT:    pand %xmm4, %xmm1496; SSE2-NEXT:    pandn %xmm3, %xmm4497; SSE2-NEXT:    por %xmm4, %xmm1498; SSE2-NEXT:    retq499;500; SSE41-LABEL: max_ge_v4i64:501; SSE41:       # %bb.0:502; SSE41-NEXT:    movdqa %xmm0, %xmm4503; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm5 = [2147483648,2147483648]504; SSE41-NEXT:    movdqa %xmm2, %xmm0505; SSE41-NEXT:    pxor %xmm5, %xmm0506; SSE41-NEXT:    movdqa %xmm4, %xmm6507; SSE41-NEXT:    pxor %xmm5, %xmm6508; SSE41-NEXT:    movdqa %xmm6, %xmm7509; SSE41-NEXT:    pcmpeqd %xmm0, %xmm7510; SSE41-NEXT:    pcmpgtd %xmm0, %xmm6511; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]512; SSE41-NEXT:    pand %xmm7, %xmm0513; SSE41-NEXT:    por %xmm6, %xmm0514; SSE41-NEXT:    blendvpd %xmm0, %xmm4, %xmm2515; SSE41-NEXT:    movdqa %xmm3, %xmm0516; SSE41-NEXT:    pxor %xmm5, %xmm0517; SSE41-NEXT:    pxor %xmm1, %xmm5518; SSE41-NEXT:    movdqa %xmm5, %xmm4519; SSE41-NEXT:    pcmpeqd %xmm0, %xmm4520; SSE41-NEXT:    pcmpgtd %xmm0, %xmm5521; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]522; SSE41-NEXT:    pand %xmm4, %xmm0523; SSE41-NEXT:    por %xmm5, %xmm0524; SSE41-NEXT:    blendvpd %xmm0, %xmm1, %xmm3525; SSE41-NEXT:    movapd %xmm2, %xmm0526; SSE41-NEXT:    movapd %xmm3, %xmm1527; SSE41-NEXT:    retq528;529; SSE42-LABEL: max_ge_v4i64:530; SSE42:       # %bb.0:531; SSE42-NEXT:    movdqa %xmm0, %xmm4532; SSE42-NEXT:    pcmpgtq %xmm2, %xmm0533; SSE42-NEXT:    blendvpd %xmm0, %xmm4, %xmm2534; SSE42-NEXT:    movdqa %xmm1, %xmm0535; SSE42-NEXT:    pcmpgtq %xmm3, %xmm0536; SSE42-NEXT:    blendvpd %xmm0, %xmm1, %xmm3537; SSE42-NEXT:    movapd %xmm2, %xmm0538; SSE42-NEXT:    movapd %xmm3, %xmm1539; SSE42-NEXT:    retq540;541; AVX1-LABEL: max_ge_v4i64:542; AVX1:       # %bb.0:543; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2544; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3545; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm2546; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm3547; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2548; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm0549; AVX1-NEXT:    retq550;551; AVX2-LABEL: max_ge_v4i64:552; AVX2:       # %bb.0:553; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm2554; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm0555; AVX2-NEXT:    retq556;557; AVX512-LABEL: max_ge_v4i64:558; AVX512:       # %bb.0:559; AVX512-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1560; AVX512-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0561; AVX512-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm0562; AVX512-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0563; AVX512-NEXT:    retq564  %1 = icmp sge <4 x i64> %a, %b565  %2 = select <4 x i1> %1, <4 x i64> %a, <4 x i64> %b566  ret <4 x i64> %2567}568 569define <4 x i32> @max_ge_v4i32(<4 x i32> %a, <4 x i32> %b) {570; SSE2-LABEL: max_ge_v4i32:571; SSE2:       # %bb.0:572; SSE2-NEXT:    movdqa %xmm0, %xmm2573; SSE2-NEXT:    pcmpgtd %xmm1, %xmm2574; SSE2-NEXT:    pand %xmm2, %xmm0575; SSE2-NEXT:    pandn %xmm1, %xmm2576; SSE2-NEXT:    por %xmm2, %xmm0577; SSE2-NEXT:    retq578;579; SSE41-LABEL: max_ge_v4i32:580; SSE41:       # %bb.0:581; SSE41-NEXT:    pmaxsd %xmm1, %xmm0582; SSE41-NEXT:    retq583;584; SSE42-LABEL: max_ge_v4i32:585; SSE42:       # %bb.0:586; SSE42-NEXT:    pmaxsd %xmm1, %xmm0587; SSE42-NEXT:    retq588;589; AVX-LABEL: max_ge_v4i32:590; AVX:       # %bb.0:591; AVX-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm0592; AVX-NEXT:    retq593  %1 = icmp sge <4 x i32> %a, %b594  %2 = select <4 x i1> %1, <4 x i32> %a, <4 x i32> %b595  ret <4 x i32> %2596}597 598define <8 x i32> @max_ge_v8i32(<8 x i32> %a, <8 x i32> %b) {599; SSE2-LABEL: max_ge_v8i32:600; SSE2:       # %bb.0:601; SSE2-NEXT:    movdqa %xmm0, %xmm4602; SSE2-NEXT:    pcmpgtd %xmm2, %xmm4603; SSE2-NEXT:    pand %xmm4, %xmm0604; SSE2-NEXT:    pandn %xmm2, %xmm4605; SSE2-NEXT:    por %xmm4, %xmm0606; SSE2-NEXT:    movdqa %xmm1, %xmm2607; SSE2-NEXT:    pcmpgtd %xmm3, %xmm2608; SSE2-NEXT:    pand %xmm2, %xmm1609; SSE2-NEXT:    pandn %xmm3, %xmm2610; SSE2-NEXT:    por %xmm2, %xmm1611; SSE2-NEXT:    retq612;613; SSE41-LABEL: max_ge_v8i32:614; SSE41:       # %bb.0:615; SSE41-NEXT:    pmaxsd %xmm2, %xmm0616; SSE41-NEXT:    pmaxsd %xmm3, %xmm1617; SSE41-NEXT:    retq618;619; SSE42-LABEL: max_ge_v8i32:620; SSE42:       # %bb.0:621; SSE42-NEXT:    pmaxsd %xmm2, %xmm0622; SSE42-NEXT:    pmaxsd %xmm3, %xmm1623; SSE42-NEXT:    retq624;625; AVX1-LABEL: max_ge_v8i32:626; AVX1:       # %bb.0:627; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2628; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3629; AVX1-NEXT:    vpmaxsd %xmm2, %xmm3, %xmm2630; AVX1-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm0631; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0632; AVX1-NEXT:    retq633;634; AVX2-LABEL: max_ge_v8i32:635; AVX2:       # %bb.0:636; AVX2-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm0637; AVX2-NEXT:    retq638;639; AVX512-LABEL: max_ge_v8i32:640; AVX512:       # %bb.0:641; AVX512-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm0642; AVX512-NEXT:    retq643  %1 = icmp sge <8 x i32> %a, %b644  %2 = select <8 x i1> %1, <8 x i32> %a, <8 x i32> %b645  ret <8 x i32> %2646}647 648define <8 x i16> @max_ge_v8i16(<8 x i16> %a, <8 x i16> %b) {649; SSE-LABEL: max_ge_v8i16:650; SSE:       # %bb.0:651; SSE-NEXT:    pmaxsw %xmm1, %xmm0652; SSE-NEXT:    retq653;654; AVX-LABEL: max_ge_v8i16:655; AVX:       # %bb.0:656; AVX-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0657; AVX-NEXT:    retq658  %1 = icmp sge <8 x i16> %a, %b659  %2 = select <8 x i1> %1, <8 x i16> %a, <8 x i16> %b660  ret <8 x i16> %2661}662 663define <16 x i16> @max_ge_v16i16(<16 x i16> %a, <16 x i16> %b) {664; SSE-LABEL: max_ge_v16i16:665; SSE:       # %bb.0:666; SSE-NEXT:    pmaxsw %xmm2, %xmm0667; SSE-NEXT:    pmaxsw %xmm3, %xmm1668; SSE-NEXT:    retq669;670; AVX1-LABEL: max_ge_v16i16:671; AVX1:       # %bb.0:672; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2673; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3674; AVX1-NEXT:    vpmaxsw %xmm2, %xmm3, %xmm2675; AVX1-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0676; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0677; AVX1-NEXT:    retq678;679; AVX2-LABEL: max_ge_v16i16:680; AVX2:       # %bb.0:681; AVX2-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm0682; AVX2-NEXT:    retq683;684; AVX512-LABEL: max_ge_v16i16:685; AVX512:       # %bb.0:686; AVX512-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm0687; AVX512-NEXT:    retq688  %1 = icmp sge <16 x i16> %a, %b689  %2 = select <16 x i1> %1, <16 x i16> %a, <16 x i16> %b690  ret <16 x i16> %2691}692 693define <16 x i8> @max_ge_v16i8(<16 x i8> %a, <16 x i8> %b) {694; SSE2-LABEL: max_ge_v16i8:695; SSE2:       # %bb.0:696; SSE2-NEXT:    movdqa %xmm0, %xmm2697; SSE2-NEXT:    pcmpgtb %xmm1, %xmm2698; SSE2-NEXT:    pand %xmm2, %xmm0699; SSE2-NEXT:    pandn %xmm1, %xmm2700; SSE2-NEXT:    por %xmm2, %xmm0701; SSE2-NEXT:    retq702;703; SSE41-LABEL: max_ge_v16i8:704; SSE41:       # %bb.0:705; SSE41-NEXT:    pmaxsb %xmm1, %xmm0706; SSE41-NEXT:    retq707;708; SSE42-LABEL: max_ge_v16i8:709; SSE42:       # %bb.0:710; SSE42-NEXT:    pmaxsb %xmm1, %xmm0711; SSE42-NEXT:    retq712;713; AVX-LABEL: max_ge_v16i8:714; AVX:       # %bb.0:715; AVX-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm0716; AVX-NEXT:    retq717  %1 = icmp sge <16 x i8> %a, %b718  %2 = select <16 x i1> %1, <16 x i8> %a, <16 x i8> %b719  ret <16 x i8> %2720}721 722define <32 x i8> @max_ge_v32i8(<32 x i8> %a, <32 x i8> %b) {723; SSE2-LABEL: max_ge_v32i8:724; SSE2:       # %bb.0:725; SSE2-NEXT:    movdqa %xmm0, %xmm4726; SSE2-NEXT:    pcmpgtb %xmm2, %xmm4727; SSE2-NEXT:    pand %xmm4, %xmm0728; SSE2-NEXT:    pandn %xmm2, %xmm4729; SSE2-NEXT:    por %xmm4, %xmm0730; SSE2-NEXT:    movdqa %xmm1, %xmm2731; SSE2-NEXT:    pcmpgtb %xmm3, %xmm2732; SSE2-NEXT:    pand %xmm2, %xmm1733; SSE2-NEXT:    pandn %xmm3, %xmm2734; SSE2-NEXT:    por %xmm2, %xmm1735; SSE2-NEXT:    retq736;737; SSE41-LABEL: max_ge_v32i8:738; SSE41:       # %bb.0:739; SSE41-NEXT:    pmaxsb %xmm2, %xmm0740; SSE41-NEXT:    pmaxsb %xmm3, %xmm1741; SSE41-NEXT:    retq742;743; SSE42-LABEL: max_ge_v32i8:744; SSE42:       # %bb.0:745; SSE42-NEXT:    pmaxsb %xmm2, %xmm0746; SSE42-NEXT:    pmaxsb %xmm3, %xmm1747; SSE42-NEXT:    retq748;749; AVX1-LABEL: max_ge_v32i8:750; AVX1:       # %bb.0:751; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2752; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3753; AVX1-NEXT:    vpmaxsb %xmm2, %xmm3, %xmm2754; AVX1-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm0755; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0756; AVX1-NEXT:    retq757;758; AVX2-LABEL: max_ge_v32i8:759; AVX2:       # %bb.0:760; AVX2-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm0761; AVX2-NEXT:    retq762;763; AVX512-LABEL: max_ge_v32i8:764; AVX512:       # %bb.0:765; AVX512-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm0766; AVX512-NEXT:    retq767  %1 = icmp sge <32 x i8> %a, %b768  %2 = select <32 x i1> %1, <32 x i8> %a, <32 x i8> %b769  ret <32 x i8> %2770}771 772;773; Signed Minimum (LT)774;775 776define <2 x i64> @min_lt_v2i64(<2 x i64> %a, <2 x i64> %b) {777; SSE2-LABEL: min_lt_v2i64:778; SSE2:       # %bb.0:779; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]780; SSE2-NEXT:    movdqa %xmm0, %xmm3781; SSE2-NEXT:    pxor %xmm2, %xmm3782; SSE2-NEXT:    pxor %xmm1, %xmm2783; SSE2-NEXT:    movdqa %xmm2, %xmm4784; SSE2-NEXT:    pcmpgtd %xmm3, %xmm4785; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]786; SSE2-NEXT:    pcmpeqd %xmm3, %xmm2787; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]788; SSE2-NEXT:    pand %xmm5, %xmm2789; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]790; SSE2-NEXT:    por %xmm2, %xmm3791; SSE2-NEXT:    pand %xmm3, %xmm0792; SSE2-NEXT:    pandn %xmm1, %xmm3793; SSE2-NEXT:    por %xmm3, %xmm0794; SSE2-NEXT:    retq795;796; SSE41-LABEL: min_lt_v2i64:797; SSE41:       # %bb.0:798; SSE41-NEXT:    movdqa %xmm0, %xmm2799; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm3 = [2147483648,2147483648]800; SSE41-NEXT:    pxor %xmm3, %xmm0801; SSE41-NEXT:    pxor %xmm1, %xmm3802; SSE41-NEXT:    movdqa %xmm3, %xmm4803; SSE41-NEXT:    pcmpeqd %xmm0, %xmm4804; SSE41-NEXT:    pcmpgtd %xmm0, %xmm3805; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]806; SSE41-NEXT:    pand %xmm4, %xmm0807; SSE41-NEXT:    por %xmm3, %xmm0808; SSE41-NEXT:    blendvpd %xmm0, %xmm2, %xmm1809; SSE41-NEXT:    movapd %xmm1, %xmm0810; SSE41-NEXT:    retq811;812; SSE42-LABEL: min_lt_v2i64:813; SSE42:       # %bb.0:814; SSE42-NEXT:    movdqa %xmm0, %xmm2815; SSE42-NEXT:    movdqa %xmm1, %xmm0816; SSE42-NEXT:    pcmpgtq %xmm2, %xmm0817; SSE42-NEXT:    blendvpd %xmm0, %xmm2, %xmm1818; SSE42-NEXT:    movapd %xmm1, %xmm0819; SSE42-NEXT:    retq820;821; AVX1-LABEL: min_lt_v2i64:822; AVX1:       # %bb.0:823; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm2824; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm0825; AVX1-NEXT:    retq826;827; AVX2-LABEL: min_lt_v2i64:828; AVX2:       # %bb.0:829; AVX2-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm2830; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm0831; AVX2-NEXT:    retq832;833; AVX512-LABEL: min_lt_v2i64:834; AVX512:       # %bb.0:835; AVX512-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1836; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0837; AVX512-NEXT:    vpminsq %zmm1, %zmm0, %zmm0838; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0839; AVX512-NEXT:    vzeroupper840; AVX512-NEXT:    retq841  %1 = icmp slt <2 x i64> %a, %b842  %2 = select <2 x i1> %1, <2 x i64> %a, <2 x i64> %b843  ret <2 x i64> %2844}845 846define <4 x i64> @min_lt_v4i64(<4 x i64> %a, <4 x i64> %b) {847; SSE2-LABEL: min_lt_v4i64:848; SSE2:       # %bb.0:849; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]850; SSE2-NEXT:    movdqa %xmm0, %xmm5851; SSE2-NEXT:    pxor %xmm4, %xmm5852; SSE2-NEXT:    movdqa %xmm2, %xmm6853; SSE2-NEXT:    pxor %xmm4, %xmm6854; SSE2-NEXT:    movdqa %xmm6, %xmm7855; SSE2-NEXT:    pcmpgtd %xmm5, %xmm7856; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]857; SSE2-NEXT:    pcmpeqd %xmm5, %xmm6858; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]859; SSE2-NEXT:    pand %xmm8, %xmm5860; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]861; SSE2-NEXT:    por %xmm5, %xmm6862; SSE2-NEXT:    pand %xmm6, %xmm0863; SSE2-NEXT:    pandn %xmm2, %xmm6864; SSE2-NEXT:    por %xmm6, %xmm0865; SSE2-NEXT:    movdqa %xmm1, %xmm2866; SSE2-NEXT:    pxor %xmm4, %xmm2867; SSE2-NEXT:    pxor %xmm3, %xmm4868; SSE2-NEXT:    movdqa %xmm4, %xmm5869; SSE2-NEXT:    pcmpgtd %xmm2, %xmm5870; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]871; SSE2-NEXT:    pcmpeqd %xmm2, %xmm4872; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]873; SSE2-NEXT:    pand %xmm6, %xmm2874; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]875; SSE2-NEXT:    por %xmm2, %xmm4876; SSE2-NEXT:    pand %xmm4, %xmm1877; SSE2-NEXT:    pandn %xmm3, %xmm4878; SSE2-NEXT:    por %xmm4, %xmm1879; SSE2-NEXT:    retq880;881; SSE41-LABEL: min_lt_v4i64:882; SSE41:       # %bb.0:883; SSE41-NEXT:    movdqa %xmm0, %xmm4884; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm5 = [2147483648,2147483648]885; SSE41-NEXT:    pxor %xmm5, %xmm0886; SSE41-NEXT:    movdqa %xmm2, %xmm6887; SSE41-NEXT:    pxor %xmm5, %xmm6888; SSE41-NEXT:    movdqa %xmm6, %xmm7889; SSE41-NEXT:    pcmpeqd %xmm0, %xmm7890; SSE41-NEXT:    pcmpgtd %xmm0, %xmm6891; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]892; SSE41-NEXT:    pand %xmm7, %xmm0893; SSE41-NEXT:    por %xmm6, %xmm0894; SSE41-NEXT:    blendvpd %xmm0, %xmm4, %xmm2895; SSE41-NEXT:    movdqa %xmm1, %xmm0896; SSE41-NEXT:    pxor %xmm5, %xmm0897; SSE41-NEXT:    pxor %xmm3, %xmm5898; SSE41-NEXT:    movdqa %xmm5, %xmm4899; SSE41-NEXT:    pcmpeqd %xmm0, %xmm4900; SSE41-NEXT:    pcmpgtd %xmm0, %xmm5901; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]902; SSE41-NEXT:    pand %xmm4, %xmm0903; SSE41-NEXT:    por %xmm5, %xmm0904; SSE41-NEXT:    blendvpd %xmm0, %xmm1, %xmm3905; SSE41-NEXT:    movapd %xmm2, %xmm0906; SSE41-NEXT:    movapd %xmm3, %xmm1907; SSE41-NEXT:    retq908;909; SSE42-LABEL: min_lt_v4i64:910; SSE42:       # %bb.0:911; SSE42-NEXT:    movdqa %xmm0, %xmm4912; SSE42-NEXT:    movdqa %xmm2, %xmm0913; SSE42-NEXT:    pcmpgtq %xmm4, %xmm0914; SSE42-NEXT:    blendvpd %xmm0, %xmm4, %xmm2915; SSE42-NEXT:    movdqa %xmm3, %xmm0916; SSE42-NEXT:    pcmpgtq %xmm1, %xmm0917; SSE42-NEXT:    blendvpd %xmm0, %xmm1, %xmm3918; SSE42-NEXT:    movapd %xmm2, %xmm0919; SSE42-NEXT:    movapd %xmm3, %xmm1920; SSE42-NEXT:    retq921;922; AVX1-LABEL: min_lt_v4i64:923; AVX1:       # %bb.0:924; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm2925; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm3926; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm2927; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm3928; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm2929; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm0930; AVX1-NEXT:    retq931;932; AVX2-LABEL: min_lt_v4i64:933; AVX2:       # %bb.0:934; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm1, %ymm2935; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm0936; AVX2-NEXT:    retq937;938; AVX512-LABEL: min_lt_v4i64:939; AVX512:       # %bb.0:940; AVX512-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1941; AVX512-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0942; AVX512-NEXT:    vpminsq %zmm1, %zmm0, %zmm0943; AVX512-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0944; AVX512-NEXT:    retq945  %1 = icmp slt <4 x i64> %a, %b946  %2 = select <4 x i1> %1, <4 x i64> %a, <4 x i64> %b947  ret <4 x i64> %2948}949 950define <4 x i32> @min_lt_v4i32(<4 x i32> %a, <4 x i32> %b) {951; SSE2-LABEL: min_lt_v4i32:952; SSE2:       # %bb.0:953; SSE2-NEXT:    movdqa %xmm1, %xmm2954; SSE2-NEXT:    pcmpgtd %xmm0, %xmm2955; SSE2-NEXT:    pand %xmm2, %xmm0956; SSE2-NEXT:    pandn %xmm1, %xmm2957; SSE2-NEXT:    por %xmm2, %xmm0958; SSE2-NEXT:    retq959;960; SSE41-LABEL: min_lt_v4i32:961; SSE41:       # %bb.0:962; SSE41-NEXT:    pminsd %xmm1, %xmm0963; SSE41-NEXT:    retq964;965; SSE42-LABEL: min_lt_v4i32:966; SSE42:       # %bb.0:967; SSE42-NEXT:    pminsd %xmm1, %xmm0968; SSE42-NEXT:    retq969;970; AVX-LABEL: min_lt_v4i32:971; AVX:       # %bb.0:972; AVX-NEXT:    vpminsd %xmm1, %xmm0, %xmm0973; AVX-NEXT:    retq974  %1 = icmp slt <4 x i32> %a, %b975  %2 = select <4 x i1> %1, <4 x i32> %a, <4 x i32> %b976  ret <4 x i32> %2977}978 979define <8 x i32> @min_lt_v8i32(<8 x i32> %a, <8 x i32> %b) {980; SSE2-LABEL: min_lt_v8i32:981; SSE2:       # %bb.0:982; SSE2-NEXT:    movdqa %xmm2, %xmm4983; SSE2-NEXT:    pcmpgtd %xmm0, %xmm4984; SSE2-NEXT:    pand %xmm4, %xmm0985; SSE2-NEXT:    pandn %xmm2, %xmm4986; SSE2-NEXT:    por %xmm4, %xmm0987; SSE2-NEXT:    movdqa %xmm3, %xmm2988; SSE2-NEXT:    pcmpgtd %xmm1, %xmm2989; SSE2-NEXT:    pand %xmm2, %xmm1990; SSE2-NEXT:    pandn %xmm3, %xmm2991; SSE2-NEXT:    por %xmm2, %xmm1992; SSE2-NEXT:    retq993;994; SSE41-LABEL: min_lt_v8i32:995; SSE41:       # %bb.0:996; SSE41-NEXT:    pminsd %xmm2, %xmm0997; SSE41-NEXT:    pminsd %xmm3, %xmm1998; SSE41-NEXT:    retq999;1000; SSE42-LABEL: min_lt_v8i32:1001; SSE42:       # %bb.0:1002; SSE42-NEXT:    pminsd %xmm2, %xmm01003; SSE42-NEXT:    pminsd %xmm3, %xmm11004; SSE42-NEXT:    retq1005;1006; AVX1-LABEL: min_lt_v8i32:1007; AVX1:       # %bb.0:1008; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21009; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31010; AVX1-NEXT:    vpminsd %xmm2, %xmm3, %xmm21011; AVX1-NEXT:    vpminsd %xmm1, %xmm0, %xmm01012; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01013; AVX1-NEXT:    retq1014;1015; AVX2-LABEL: min_lt_v8i32:1016; AVX2:       # %bb.0:1017; AVX2-NEXT:    vpminsd %ymm1, %ymm0, %ymm01018; AVX2-NEXT:    retq1019;1020; AVX512-LABEL: min_lt_v8i32:1021; AVX512:       # %bb.0:1022; AVX512-NEXT:    vpminsd %ymm1, %ymm0, %ymm01023; AVX512-NEXT:    retq1024  %1 = icmp slt <8 x i32> %a, %b1025  %2 = select <8 x i1> %1, <8 x i32> %a, <8 x i32> %b1026  ret <8 x i32> %21027}1028 1029define <8 x i16> @min_lt_v8i16(<8 x i16> %a, <8 x i16> %b) {1030; SSE-LABEL: min_lt_v8i16:1031; SSE:       # %bb.0:1032; SSE-NEXT:    pminsw %xmm1, %xmm01033; SSE-NEXT:    retq1034;1035; AVX-LABEL: min_lt_v8i16:1036; AVX:       # %bb.0:1037; AVX-NEXT:    vpminsw %xmm1, %xmm0, %xmm01038; AVX-NEXT:    retq1039  %1 = icmp slt <8 x i16> %a, %b1040  %2 = select <8 x i1> %1, <8 x i16> %a, <8 x i16> %b1041  ret <8 x i16> %21042}1043 1044define <16 x i16> @min_lt_v16i16(<16 x i16> %a, <16 x i16> %b) {1045; SSE-LABEL: min_lt_v16i16:1046; SSE:       # %bb.0:1047; SSE-NEXT:    pminsw %xmm2, %xmm01048; SSE-NEXT:    pminsw %xmm3, %xmm11049; SSE-NEXT:    retq1050;1051; AVX1-LABEL: min_lt_v16i16:1052; AVX1:       # %bb.0:1053; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21054; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31055; AVX1-NEXT:    vpminsw %xmm2, %xmm3, %xmm21056; AVX1-NEXT:    vpminsw %xmm1, %xmm0, %xmm01057; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01058; AVX1-NEXT:    retq1059;1060; AVX2-LABEL: min_lt_v16i16:1061; AVX2:       # %bb.0:1062; AVX2-NEXT:    vpminsw %ymm1, %ymm0, %ymm01063; AVX2-NEXT:    retq1064;1065; AVX512-LABEL: min_lt_v16i16:1066; AVX512:       # %bb.0:1067; AVX512-NEXT:    vpminsw %ymm1, %ymm0, %ymm01068; AVX512-NEXT:    retq1069  %1 = icmp slt <16 x i16> %a, %b1070  %2 = select <16 x i1> %1, <16 x i16> %a, <16 x i16> %b1071  ret <16 x i16> %21072}1073 1074define <16 x i8> @min_lt_v16i8(<16 x i8> %a, <16 x i8> %b) {1075; SSE2-LABEL: min_lt_v16i8:1076; SSE2:       # %bb.0:1077; SSE2-NEXT:    movdqa %xmm1, %xmm21078; SSE2-NEXT:    pcmpgtb %xmm0, %xmm21079; SSE2-NEXT:    pand %xmm2, %xmm01080; SSE2-NEXT:    pandn %xmm1, %xmm21081; SSE2-NEXT:    por %xmm2, %xmm01082; SSE2-NEXT:    retq1083;1084; SSE41-LABEL: min_lt_v16i8:1085; SSE41:       # %bb.0:1086; SSE41-NEXT:    pminsb %xmm1, %xmm01087; SSE41-NEXT:    retq1088;1089; SSE42-LABEL: min_lt_v16i8:1090; SSE42:       # %bb.0:1091; SSE42-NEXT:    pminsb %xmm1, %xmm01092; SSE42-NEXT:    retq1093;1094; AVX-LABEL: min_lt_v16i8:1095; AVX:       # %bb.0:1096; AVX-NEXT:    vpminsb %xmm1, %xmm0, %xmm01097; AVX-NEXT:    retq1098  %1 = icmp slt <16 x i8> %a, %b1099  %2 = select <16 x i1> %1, <16 x i8> %a, <16 x i8> %b1100  ret <16 x i8> %21101}1102 1103define <32 x i8> @min_lt_v32i8(<32 x i8> %a, <32 x i8> %b) {1104; SSE2-LABEL: min_lt_v32i8:1105; SSE2:       # %bb.0:1106; SSE2-NEXT:    movdqa %xmm2, %xmm41107; SSE2-NEXT:    pcmpgtb %xmm0, %xmm41108; SSE2-NEXT:    pand %xmm4, %xmm01109; SSE2-NEXT:    pandn %xmm2, %xmm41110; SSE2-NEXT:    por %xmm4, %xmm01111; SSE2-NEXT:    movdqa %xmm3, %xmm21112; SSE2-NEXT:    pcmpgtb %xmm1, %xmm21113; SSE2-NEXT:    pand %xmm2, %xmm11114; SSE2-NEXT:    pandn %xmm3, %xmm21115; SSE2-NEXT:    por %xmm2, %xmm11116; SSE2-NEXT:    retq1117;1118; SSE41-LABEL: min_lt_v32i8:1119; SSE41:       # %bb.0:1120; SSE41-NEXT:    pminsb %xmm2, %xmm01121; SSE41-NEXT:    pminsb %xmm3, %xmm11122; SSE41-NEXT:    retq1123;1124; SSE42-LABEL: min_lt_v32i8:1125; SSE42:       # %bb.0:1126; SSE42-NEXT:    pminsb %xmm2, %xmm01127; SSE42-NEXT:    pminsb %xmm3, %xmm11128; SSE42-NEXT:    retq1129;1130; AVX1-LABEL: min_lt_v32i8:1131; AVX1:       # %bb.0:1132; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21133; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31134; AVX1-NEXT:    vpminsb %xmm2, %xmm3, %xmm21135; AVX1-NEXT:    vpminsb %xmm1, %xmm0, %xmm01136; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01137; AVX1-NEXT:    retq1138;1139; AVX2-LABEL: min_lt_v32i8:1140; AVX2:       # %bb.0:1141; AVX2-NEXT:    vpminsb %ymm1, %ymm0, %ymm01142; AVX2-NEXT:    retq1143;1144; AVX512-LABEL: min_lt_v32i8:1145; AVX512:       # %bb.0:1146; AVX512-NEXT:    vpminsb %ymm1, %ymm0, %ymm01147; AVX512-NEXT:    retq1148  %1 = icmp slt <32 x i8> %a, %b1149  %2 = select <32 x i1> %1, <32 x i8> %a, <32 x i8> %b1150  ret <32 x i8> %21151}1152 1153;1154; Signed Minimum (LE)1155;1156 1157define <2 x i64> @min_le_v2i64(<2 x i64> %a, <2 x i64> %b) {1158; SSE2-LABEL: min_le_v2i64:1159; SSE2:       # %bb.0:1160; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]1161; SSE2-NEXT:    movdqa %xmm0, %xmm31162; SSE2-NEXT:    pxor %xmm2, %xmm31163; SSE2-NEXT:    pxor %xmm1, %xmm21164; SSE2-NEXT:    movdqa %xmm2, %xmm41165; SSE2-NEXT:    pcmpgtd %xmm3, %xmm41166; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]1167; SSE2-NEXT:    pcmpeqd %xmm3, %xmm21168; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]1169; SSE2-NEXT:    pand %xmm5, %xmm21170; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]1171; SSE2-NEXT:    por %xmm2, %xmm31172; SSE2-NEXT:    pand %xmm3, %xmm01173; SSE2-NEXT:    pandn %xmm1, %xmm31174; SSE2-NEXT:    por %xmm3, %xmm01175; SSE2-NEXT:    retq1176;1177; SSE41-LABEL: min_le_v2i64:1178; SSE41:       # %bb.0:1179; SSE41-NEXT:    movdqa %xmm0, %xmm21180; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm3 = [2147483648,2147483648]1181; SSE41-NEXT:    pxor %xmm3, %xmm01182; SSE41-NEXT:    pxor %xmm1, %xmm31183; SSE41-NEXT:    movdqa %xmm3, %xmm41184; SSE41-NEXT:    pcmpeqd %xmm0, %xmm41185; SSE41-NEXT:    pcmpgtd %xmm0, %xmm31186; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[0,0,2,2]1187; SSE41-NEXT:    pand %xmm4, %xmm01188; SSE41-NEXT:    por %xmm3, %xmm01189; SSE41-NEXT:    blendvpd %xmm0, %xmm2, %xmm11190; SSE41-NEXT:    movapd %xmm1, %xmm01191; SSE41-NEXT:    retq1192;1193; SSE42-LABEL: min_le_v2i64:1194; SSE42:       # %bb.0:1195; SSE42-NEXT:    movdqa %xmm0, %xmm21196; SSE42-NEXT:    movdqa %xmm1, %xmm01197; SSE42-NEXT:    pcmpgtq %xmm2, %xmm01198; SSE42-NEXT:    blendvpd %xmm0, %xmm2, %xmm11199; SSE42-NEXT:    movapd %xmm1, %xmm01200; SSE42-NEXT:    retq1201;1202; AVX1-LABEL: min_le_v2i64:1203; AVX1:       # %bb.0:1204; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm21205; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm01206; AVX1-NEXT:    retq1207;1208; AVX2-LABEL: min_le_v2i64:1209; AVX2:       # %bb.0:1210; AVX2-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm21211; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm01212; AVX2-NEXT:    retq1213;1214; AVX512-LABEL: min_le_v2i64:1215; AVX512:       # %bb.0:1216; AVX512-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11217; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01218; AVX512-NEXT:    vpminsq %zmm1, %zmm0, %zmm01219; AVX512-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01220; AVX512-NEXT:    vzeroupper1221; AVX512-NEXT:    retq1222  %1 = icmp sle <2 x i64> %a, %b1223  %2 = select <2 x i1> %1, <2 x i64> %a, <2 x i64> %b1224  ret <2 x i64> %21225}1226 1227define <4 x i64> @min_le_v4i64(<4 x i64> %a, <4 x i64> %b) {1228; SSE2-LABEL: min_le_v4i64:1229; SSE2:       # %bb.0:1230; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]1231; SSE2-NEXT:    movdqa %xmm0, %xmm51232; SSE2-NEXT:    pxor %xmm4, %xmm51233; SSE2-NEXT:    movdqa %xmm2, %xmm61234; SSE2-NEXT:    pxor %xmm4, %xmm61235; SSE2-NEXT:    movdqa %xmm6, %xmm71236; SSE2-NEXT:    pcmpgtd %xmm5, %xmm71237; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]1238; SSE2-NEXT:    pcmpeqd %xmm5, %xmm61239; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]1240; SSE2-NEXT:    pand %xmm8, %xmm51241; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]1242; SSE2-NEXT:    por %xmm5, %xmm61243; SSE2-NEXT:    pand %xmm6, %xmm01244; SSE2-NEXT:    pandn %xmm2, %xmm61245; SSE2-NEXT:    por %xmm6, %xmm01246; SSE2-NEXT:    movdqa %xmm1, %xmm21247; SSE2-NEXT:    pxor %xmm4, %xmm21248; SSE2-NEXT:    pxor %xmm3, %xmm41249; SSE2-NEXT:    movdqa %xmm4, %xmm51250; SSE2-NEXT:    pcmpgtd %xmm2, %xmm51251; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]1252; SSE2-NEXT:    pcmpeqd %xmm2, %xmm41253; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]1254; SSE2-NEXT:    pand %xmm6, %xmm21255; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]1256; SSE2-NEXT:    por %xmm2, %xmm41257; SSE2-NEXT:    pand %xmm4, %xmm11258; SSE2-NEXT:    pandn %xmm3, %xmm41259; SSE2-NEXT:    por %xmm4, %xmm11260; SSE2-NEXT:    retq1261;1262; SSE41-LABEL: min_le_v4i64:1263; SSE41:       # %bb.0:1264; SSE41-NEXT:    movdqa %xmm0, %xmm41265; SSE41-NEXT:    pmovzxdq {{.*#+}} xmm5 = [2147483648,2147483648]1266; SSE41-NEXT:    pxor %xmm5, %xmm01267; SSE41-NEXT:    movdqa %xmm2, %xmm61268; SSE41-NEXT:    pxor %xmm5, %xmm61269; SSE41-NEXT:    movdqa %xmm6, %xmm71270; SSE41-NEXT:    pcmpeqd %xmm0, %xmm71271; SSE41-NEXT:    pcmpgtd %xmm0, %xmm61272; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm6[0,0,2,2]1273; SSE41-NEXT:    pand %xmm7, %xmm01274; SSE41-NEXT:    por %xmm6, %xmm01275; SSE41-NEXT:    blendvpd %xmm0, %xmm4, %xmm21276; SSE41-NEXT:    movdqa %xmm1, %xmm01277; SSE41-NEXT:    pxor %xmm5, %xmm01278; SSE41-NEXT:    pxor %xmm3, %xmm51279; SSE41-NEXT:    movdqa %xmm5, %xmm41280; SSE41-NEXT:    pcmpeqd %xmm0, %xmm41281; SSE41-NEXT:    pcmpgtd %xmm0, %xmm51282; SSE41-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[0,0,2,2]1283; SSE41-NEXT:    pand %xmm4, %xmm01284; SSE41-NEXT:    por %xmm5, %xmm01285; SSE41-NEXT:    blendvpd %xmm0, %xmm1, %xmm31286; SSE41-NEXT:    movapd %xmm2, %xmm01287; SSE41-NEXT:    movapd %xmm3, %xmm11288; SSE41-NEXT:    retq1289;1290; SSE42-LABEL: min_le_v4i64:1291; SSE42:       # %bb.0:1292; SSE42-NEXT:    movdqa %xmm0, %xmm41293; SSE42-NEXT:    movdqa %xmm2, %xmm01294; SSE42-NEXT:    pcmpgtq %xmm4, %xmm01295; SSE42-NEXT:    blendvpd %xmm0, %xmm4, %xmm21296; SSE42-NEXT:    movdqa %xmm3, %xmm01297; SSE42-NEXT:    pcmpgtq %xmm1, %xmm01298; SSE42-NEXT:    blendvpd %xmm0, %xmm1, %xmm31299; SSE42-NEXT:    movapd %xmm2, %xmm01300; SSE42-NEXT:    movapd %xmm3, %xmm11301; SSE42-NEXT:    retq1302;1303; AVX1-LABEL: min_le_v4i64:1304; AVX1:       # %bb.0:1305; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm21306; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm31307; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm21308; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm31309; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm21310; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01311; AVX1-NEXT:    retq1312;1313; AVX2-LABEL: min_le_v4i64:1314; AVX2:       # %bb.0:1315; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm1, %ymm21316; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm01317; AVX2-NEXT:    retq1318;1319; AVX512-LABEL: min_le_v4i64:1320; AVX512:       # %bb.0:1321; AVX512-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm11322; AVX512-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm01323; AVX512-NEXT:    vpminsq %zmm1, %zmm0, %zmm01324; AVX512-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01325; AVX512-NEXT:    retq1326  %1 = icmp sle <4 x i64> %a, %b1327  %2 = select <4 x i1> %1, <4 x i64> %a, <4 x i64> %b1328  ret <4 x i64> %21329}1330 1331define <4 x i32> @min_le_v4i32(<4 x i32> %a, <4 x i32> %b) {1332; SSE2-LABEL: min_le_v4i32:1333; SSE2:       # %bb.0:1334; SSE2-NEXT:    movdqa %xmm1, %xmm21335; SSE2-NEXT:    pcmpgtd %xmm0, %xmm21336; SSE2-NEXT:    pand %xmm2, %xmm01337; SSE2-NEXT:    pandn %xmm1, %xmm21338; SSE2-NEXT:    por %xmm2, %xmm01339; SSE2-NEXT:    retq1340;1341; SSE41-LABEL: min_le_v4i32:1342; SSE41:       # %bb.0:1343; SSE41-NEXT:    pminsd %xmm1, %xmm01344; SSE41-NEXT:    retq1345;1346; SSE42-LABEL: min_le_v4i32:1347; SSE42:       # %bb.0:1348; SSE42-NEXT:    pminsd %xmm1, %xmm01349; SSE42-NEXT:    retq1350;1351; AVX-LABEL: min_le_v4i32:1352; AVX:       # %bb.0:1353; AVX-NEXT:    vpminsd %xmm1, %xmm0, %xmm01354; AVX-NEXT:    retq1355  %1 = icmp sle <4 x i32> %a, %b1356  %2 = select <4 x i1> %1, <4 x i32> %a, <4 x i32> %b1357  ret <4 x i32> %21358}1359 1360define <8 x i32> @min_le_v8i32(<8 x i32> %a, <8 x i32> %b) {1361; SSE2-LABEL: min_le_v8i32:1362; SSE2:       # %bb.0:1363; SSE2-NEXT:    movdqa %xmm2, %xmm41364; SSE2-NEXT:    pcmpgtd %xmm0, %xmm41365; SSE2-NEXT:    pand %xmm4, %xmm01366; SSE2-NEXT:    pandn %xmm2, %xmm41367; SSE2-NEXT:    por %xmm4, %xmm01368; SSE2-NEXT:    movdqa %xmm3, %xmm21369; SSE2-NEXT:    pcmpgtd %xmm1, %xmm21370; SSE2-NEXT:    pand %xmm2, %xmm11371; SSE2-NEXT:    pandn %xmm3, %xmm21372; SSE2-NEXT:    por %xmm2, %xmm11373; SSE2-NEXT:    retq1374;1375; SSE41-LABEL: min_le_v8i32:1376; SSE41:       # %bb.0:1377; SSE41-NEXT:    pminsd %xmm2, %xmm01378; SSE41-NEXT:    pminsd %xmm3, %xmm11379; SSE41-NEXT:    retq1380;1381; SSE42-LABEL: min_le_v8i32:1382; SSE42:       # %bb.0:1383; SSE42-NEXT:    pminsd %xmm2, %xmm01384; SSE42-NEXT:    pminsd %xmm3, %xmm11385; SSE42-NEXT:    retq1386;1387; AVX1-LABEL: min_le_v8i32:1388; AVX1:       # %bb.0:1389; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21390; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31391; AVX1-NEXT:    vpminsd %xmm2, %xmm3, %xmm21392; AVX1-NEXT:    vpminsd %xmm1, %xmm0, %xmm01393; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01394; AVX1-NEXT:    retq1395;1396; AVX2-LABEL: min_le_v8i32:1397; AVX2:       # %bb.0:1398; AVX2-NEXT:    vpminsd %ymm1, %ymm0, %ymm01399; AVX2-NEXT:    retq1400;1401; AVX512-LABEL: min_le_v8i32:1402; AVX512:       # %bb.0:1403; AVX512-NEXT:    vpminsd %ymm1, %ymm0, %ymm01404; AVX512-NEXT:    retq1405  %1 = icmp sle <8 x i32> %a, %b1406  %2 = select <8 x i1> %1, <8 x i32> %a, <8 x i32> %b1407  ret <8 x i32> %21408}1409 1410define <8 x i16> @min_le_v8i16(<8 x i16> %a, <8 x i16> %b) {1411; SSE-LABEL: min_le_v8i16:1412; SSE:       # %bb.0:1413; SSE-NEXT:    pminsw %xmm1, %xmm01414; SSE-NEXT:    retq1415;1416; AVX-LABEL: min_le_v8i16:1417; AVX:       # %bb.0:1418; AVX-NEXT:    vpminsw %xmm1, %xmm0, %xmm01419; AVX-NEXT:    retq1420  %1 = icmp sle <8 x i16> %a, %b1421  %2 = select <8 x i1> %1, <8 x i16> %a, <8 x i16> %b1422  ret <8 x i16> %21423}1424 1425define <16 x i16> @min_le_v16i16(<16 x i16> %a, <16 x i16> %b) {1426; SSE-LABEL: min_le_v16i16:1427; SSE:       # %bb.0:1428; SSE-NEXT:    pminsw %xmm2, %xmm01429; SSE-NEXT:    pminsw %xmm3, %xmm11430; SSE-NEXT:    retq1431;1432; AVX1-LABEL: min_le_v16i16:1433; AVX1:       # %bb.0:1434; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21435; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31436; AVX1-NEXT:    vpminsw %xmm2, %xmm3, %xmm21437; AVX1-NEXT:    vpminsw %xmm1, %xmm0, %xmm01438; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01439; AVX1-NEXT:    retq1440;1441; AVX2-LABEL: min_le_v16i16:1442; AVX2:       # %bb.0:1443; AVX2-NEXT:    vpminsw %ymm1, %ymm0, %ymm01444; AVX2-NEXT:    retq1445;1446; AVX512-LABEL: min_le_v16i16:1447; AVX512:       # %bb.0:1448; AVX512-NEXT:    vpminsw %ymm1, %ymm0, %ymm01449; AVX512-NEXT:    retq1450  %1 = icmp sle <16 x i16> %a, %b1451  %2 = select <16 x i1> %1, <16 x i16> %a, <16 x i16> %b1452  ret <16 x i16> %21453}1454 1455define <16 x i8> @min_le_v16i8(<16 x i8> %a, <16 x i8> %b) {1456; SSE2-LABEL: min_le_v16i8:1457; SSE2:       # %bb.0:1458; SSE2-NEXT:    movdqa %xmm1, %xmm21459; SSE2-NEXT:    pcmpgtb %xmm0, %xmm21460; SSE2-NEXT:    pand %xmm2, %xmm01461; SSE2-NEXT:    pandn %xmm1, %xmm21462; SSE2-NEXT:    por %xmm2, %xmm01463; SSE2-NEXT:    retq1464;1465; SSE41-LABEL: min_le_v16i8:1466; SSE41:       # %bb.0:1467; SSE41-NEXT:    pminsb %xmm1, %xmm01468; SSE41-NEXT:    retq1469;1470; SSE42-LABEL: min_le_v16i8:1471; SSE42:       # %bb.0:1472; SSE42-NEXT:    pminsb %xmm1, %xmm01473; SSE42-NEXT:    retq1474;1475; AVX-LABEL: min_le_v16i8:1476; AVX:       # %bb.0:1477; AVX-NEXT:    vpminsb %xmm1, %xmm0, %xmm01478; AVX-NEXT:    retq1479  %1 = icmp sle <16 x i8> %a, %b1480  %2 = select <16 x i1> %1, <16 x i8> %a, <16 x i8> %b1481  ret <16 x i8> %21482}1483 1484define <32 x i8> @min_le_v32i8(<32 x i8> %a, <32 x i8> %b) {1485; SSE2-LABEL: min_le_v32i8:1486; SSE2:       # %bb.0:1487; SSE2-NEXT:    movdqa %xmm2, %xmm41488; SSE2-NEXT:    pcmpgtb %xmm0, %xmm41489; SSE2-NEXT:    pand %xmm4, %xmm01490; SSE2-NEXT:    pandn %xmm2, %xmm41491; SSE2-NEXT:    por %xmm4, %xmm01492; SSE2-NEXT:    movdqa %xmm3, %xmm21493; SSE2-NEXT:    pcmpgtb %xmm1, %xmm21494; SSE2-NEXT:    pand %xmm2, %xmm11495; SSE2-NEXT:    pandn %xmm3, %xmm21496; SSE2-NEXT:    por %xmm2, %xmm11497; SSE2-NEXT:    retq1498;1499; SSE41-LABEL: min_le_v32i8:1500; SSE41:       # %bb.0:1501; SSE41-NEXT:    pminsb %xmm2, %xmm01502; SSE41-NEXT:    pminsb %xmm3, %xmm11503; SSE41-NEXT:    retq1504;1505; SSE42-LABEL: min_le_v32i8:1506; SSE42:       # %bb.0:1507; SSE42-NEXT:    pminsb %xmm2, %xmm01508; SSE42-NEXT:    pminsb %xmm3, %xmm11509; SSE42-NEXT:    retq1510;1511; AVX1-LABEL: min_le_v32i8:1512; AVX1:       # %bb.0:1513; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21514; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31515; AVX1-NEXT:    vpminsb %xmm2, %xmm3, %xmm21516; AVX1-NEXT:    vpminsb %xmm1, %xmm0, %xmm01517; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01518; AVX1-NEXT:    retq1519;1520; AVX2-LABEL: min_le_v32i8:1521; AVX2:       # %bb.0:1522; AVX2-NEXT:    vpminsb %ymm1, %ymm0, %ymm01523; AVX2-NEXT:    retq1524;1525; AVX512-LABEL: min_le_v32i8:1526; AVX512:       # %bb.0:1527; AVX512-NEXT:    vpminsb %ymm1, %ymm0, %ymm01528; AVX512-NEXT:    retq1529  %1 = icmp sle <32 x i8> %a, %b1530  %2 = select <32 x i1> %1, <32 x i8> %a, <32 x i8> %b1531  ret <32 x i8> %21532}1533 1534;1535; Constant Folding1536;1537 1538define <2 x i64> @max_gt_v2i64c() {1539; SSE-LABEL: max_gt_v2i64c:1540; SSE:       # %bb.0:1541; SSE-NEXT:    movaps {{.*#+}} xmm0 = [18446744073709551615,7]1542; SSE-NEXT:    retq1543;1544; AVX1-LABEL: max_gt_v2i64c:1545; AVX1:       # %bb.0:1546; AVX1-NEXT:    vmovaps {{.*#+}} xmm0 = [18446744073709551615,7]1547; AVX1-NEXT:    retq1548;1549; AVX2-LABEL: max_gt_v2i64c:1550; AVX2:       # %bb.0:1551; AVX2-NEXT:    vmovaps {{.*#+}} xmm0 = [18446744073709551615,7]1552; AVX2-NEXT:    retq1553;1554; AVX512-LABEL: max_gt_v2i64c:1555; AVX512:       # %bb.0:1556; AVX512-NEXT:    vpmovsxbq {{.*#+}} xmm0 = [18446744073709551615,7]1557; AVX512-NEXT:    retq1558  %1 = insertelement <2 x i64> <i64 -7, i64 7>, i64 -7, i32 01559  %2 = insertelement <2 x i64> <i64 -1, i64 1>, i64 -1, i32 01560  %3 = icmp sgt <2 x i64> %1, %21561  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %21562  ret <2 x i64> %41563}1564 1565define <4 x i64> @max_gt_v4i64c() {1566; SSE-LABEL: max_gt_v4i64c:1567; SSE:       # %bb.0:1568; SSE-NEXT:    movaps {{.*#+}} xmm1 = [7,7]1569; SSE-NEXT:    pcmpeqd %xmm0, %xmm01570; SSE-NEXT:    retq1571;1572; AVX1-LABEL: max_gt_v4i64c:1573; AVX1:       # %bb.0:1574; AVX1-NEXT:    vmovaps {{.*#+}} ymm0 = [18446744073709551615,18446744073709551615,7,7]1575; AVX1-NEXT:    retq1576;1577; AVX2-LABEL: max_gt_v4i64c:1578; AVX2:       # %bb.0:1579; AVX2-NEXT:    vmovaps {{.*#+}} ymm0 = [18446744073709551615,18446744073709551615,7,7]1580; AVX2-NEXT:    retq1581;1582; AVX512-LABEL: max_gt_v4i64c:1583; AVX512:       # %bb.0:1584; AVX512-NEXT:    vpmovsxbq {{.*#+}} ymm0 = [18446744073709551615,18446744073709551615,7,7]1585; AVX512-NEXT:    retq1586  %1 = insertelement <4 x i64> <i64 -7, i64 -1, i64 1, i64 7>, i64 -7, i32 01587  %2 = insertelement <4 x i64> <i64 -1, i64 -7, i64 7, i64 1>, i64 -1, i32 01588  %3 = icmp sgt <4 x i64> %1, %21589  %4 = select <4 x i1> %3, <4 x i64> %1, <4 x i64> %21590  ret <4 x i64> %41591}1592 1593define <4 x i32> @max_gt_v4i32c() {1594; SSE-LABEL: max_gt_v4i32c:1595; SSE:       # %bb.0:1596; SSE-NEXT:    movaps {{.*#+}} xmm0 = [4294967295,4294967295,7,7]1597; SSE-NEXT:    retq1598;1599; AVX1-LABEL: max_gt_v4i32c:1600; AVX1:       # %bb.0:1601; AVX1-NEXT:    vmovaps {{.*#+}} xmm0 = [4294967295,4294967295,7,7]1602; AVX1-NEXT:    retq1603;1604; AVX2-LABEL: max_gt_v4i32c:1605; AVX2:       # %bb.0:1606; AVX2-NEXT:    vmovaps {{.*#+}} xmm0 = [4294967295,4294967295,7,7]1607; AVX2-NEXT:    retq1608;1609; AVX512-LABEL: max_gt_v4i32c:1610; AVX512:       # %bb.0:1611; AVX512-NEXT:    vpmovsxbd {{.*#+}} xmm0 = [4294967295,4294967295,7,7]1612; AVX512-NEXT:    retq1613  %1 = insertelement <4 x i32> <i32 -7, i32 -1, i32 1, i32 7>, i32 -7, i32 01614  %2 = insertelement <4 x i32> <i32 -1, i32 -7, i32 7, i32 1>, i32 -1, i32 01615  %3 = icmp sgt <4 x i32> %1, %21616  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %21617  ret <4 x i32> %41618}1619 1620define <8 x i32> @max_gt_v8i32c() {1621; SSE-LABEL: max_gt_v8i32c:1622; SSE:       # %bb.0:1623; SSE-NEXT:    movaps {{.*#+}} xmm0 = [4294967295,4294967293,4294967293,4294967295]1624; SSE-NEXT:    movaps {{.*#+}} xmm1 = [7,5,5,7]1625; SSE-NEXT:    retq1626;1627; AVX1-LABEL: max_gt_v8i32c:1628; AVX1:       # %bb.0:1629; AVX1-NEXT:    vmovaps {{.*#+}} ymm0 = [4294967295,4294967293,4294967293,4294967295,7,5,5,7]1630; AVX1-NEXT:    retq1631;1632; AVX2-LABEL: max_gt_v8i32c:1633; AVX2:       # %bb.0:1634; AVX2-NEXT:    vmovaps {{.*#+}} ymm0 = [4294967295,4294967293,4294967293,4294967295,7,5,5,7]1635; AVX2-NEXT:    retq1636;1637; AVX512-LABEL: max_gt_v8i32c:1638; AVX512:       # %bb.0:1639; AVX512-NEXT:    vpmovsxbd {{.*#+}} ymm0 = [4294967295,4294967293,4294967293,4294967295,7,5,5,7]1640; AVX512-NEXT:    retq1641  %1 = insertelement <8 x i32> <i32 -7, i32 -5, i32 -3, i32 -1, i32 1, i32 3, i32 5, i32 7>, i32 -7, i32 01642  %2 = insertelement <8 x i32> <i32 -1, i32 -3, i32 -5, i32 -7, i32 7, i32 5, i32 3, i32 1>, i32 -1, i32 01643  %3 = icmp sgt <8 x i32> %1, %21644  %4 = select <8 x i1> %3, <8 x i32> %1, <8 x i32> %21645  ret <8 x i32> %41646}1647 1648define <8 x i16> @max_gt_v8i16c() {1649; SSE-LABEL: max_gt_v8i16c:1650; SSE:       # %bb.0:1651; SSE-NEXT:    movaps {{.*#+}} xmm0 = [65535,65533,65533,65535,7,5,5,7]1652; SSE-NEXT:    retq1653;1654; AVX-LABEL: max_gt_v8i16c:1655; AVX:       # %bb.0:1656; AVX-NEXT:    vmovaps {{.*#+}} xmm0 = [65535,65533,65533,65535,7,5,5,7]1657; AVX-NEXT:    retq1658  %1 = insertelement <8 x i16> <i16 -7, i16 -5, i16 -3, i16 -1, i16 1, i16 3, i16 5, i16 7>, i16 -7, i32 01659  %2 = insertelement <8 x i16> <i16 -1, i16 -3, i16 -5, i16 -7, i16 7, i16 5, i16 3, i16 1>, i16 -1, i32 01660  %3 = icmp sgt <8 x i16> %1, %21661  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %21662  ret <8 x i16> %41663}1664 1665define <16 x i16> @max_gt_v16i16c() {1666; SSE-LABEL: max_gt_v16i16c:1667; SSE:       # %bb.0:1668; SSE-NEXT:    movaps {{.*#+}} xmm0 = [65535,65534,65533,65532,65533,65534,65535,0]1669; SSE-NEXT:    movaps {{.*#+}} xmm1 = [7,6,5,4,5,6,7,8]1670; SSE-NEXT:    retq1671;1672; AVX-LABEL: max_gt_v16i16c:1673; AVX:       # %bb.0:1674; AVX-NEXT:    vmovaps {{.*#+}} ymm0 = [65535,65534,65533,65532,65533,65534,65535,0,7,6,5,4,5,6,7,8]1675; AVX-NEXT:    retq1676  %1 = insertelement <16 x i16> <i16 -7, i16 -6, i16 -5, i16 -4, i16 -3, i16 -2, i16 -1, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8>, i16 -7, i32 01677  %2 = insertelement <16 x i16> <i16 -1, i16 -2, i16 -3, i16 -4, i16 -5, i16 -6, i16 -7, i16 0, i16 7, i16 6, i16 5, i16 4, i16 3, i16 2, i16 1, i16 0>, i16 -1, i32 01678  %3 = icmp sgt <16 x i16> %1, %21679  %4 = select <16 x i1> %3, <16 x i16> %1, <16 x i16> %21680  ret <16 x i16> %41681}1682 1683define <16 x i8> @max_gt_v16i8c() {1684; SSE-LABEL: max_gt_v16i8c:1685; SSE:       # %bb.0:1686; SSE-NEXT:    movaps {{.*#+}} xmm0 = [255,254,253,252,253,254,255,0,7,6,5,4,5,6,7,8]1687; SSE-NEXT:    retq1688;1689; AVX-LABEL: max_gt_v16i8c:1690; AVX:       # %bb.0:1691; AVX-NEXT:    vmovaps {{.*#+}} xmm0 = [255,254,253,252,253,254,255,0,7,6,5,4,5,6,7,8]1692; AVX-NEXT:    retq1693  %1 = insertelement <16 x i8> <i8 -7, i8 -6, i8 -5, i8 -4, i8 -3, i8 -2, i8 -1, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8>, i8 -7, i32 01694  %2 = insertelement <16 x i8> <i8 -1, i8 -2, i8 -3, i8 -4, i8 -5, i8 -6, i8 -7, i8 0, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>, i8 -1, i32 01695  %3 = icmp sgt <16 x i8> %1, %21696  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %21697  ret <16 x i8> %41698}1699 1700define <2 x i64> @max_ge_v2i64c() {1701; SSE-LABEL: max_ge_v2i64c:1702; SSE:       # %bb.0:1703; SSE-NEXT:    movaps {{.*#+}} xmm0 = [18446744073709551615,7]1704; SSE-NEXT:    retq1705;1706; AVX1-LABEL: max_ge_v2i64c:1707; AVX1:       # %bb.0:1708; AVX1-NEXT:    vmovaps {{.*#+}} xmm0 = [18446744073709551615,7]1709; AVX1-NEXT:    retq1710;1711; AVX2-LABEL: max_ge_v2i64c:1712; AVX2:       # %bb.0:1713; AVX2-NEXT:    vmovaps {{.*#+}} xmm0 = [18446744073709551615,7]1714; AVX2-NEXT:    retq1715;1716; AVX512-LABEL: max_ge_v2i64c:1717; AVX512:       # %bb.0:1718; AVX512-NEXT:    vpmovsxbq {{.*#+}} xmm0 = [18446744073709551615,7]1719; AVX512-NEXT:    retq1720  %1 = insertelement <2 x i64> <i64 -7, i64 7>, i64 -7, i32 01721  %2 = insertelement <2 x i64> <i64 -1, i64 1>, i64 -1, i32 01722  %3 = icmp sge <2 x i64> %1, %21723  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %21724  ret <2 x i64> %41725}1726 1727define <4 x i64> @max_ge_v4i64c() {1728; SSE-LABEL: max_ge_v4i64c:1729; SSE:       # %bb.0:1730; SSE-NEXT:    movaps {{.*#+}} xmm1 = [7,7]1731; SSE-NEXT:    pcmpeqd %xmm0, %xmm01732; SSE-NEXT:    retq1733;1734; AVX1-LABEL: max_ge_v4i64c:1735; AVX1:       # %bb.0:1736; AVX1-NEXT:    vmovaps {{.*#+}} ymm0 = [18446744073709551615,18446744073709551615,7,7]1737; AVX1-NEXT:    retq1738;1739; AVX2-LABEL: max_ge_v4i64c:1740; AVX2:       # %bb.0:1741; AVX2-NEXT:    vmovaps {{.*#+}} ymm0 = [18446744073709551615,18446744073709551615,7,7]1742; AVX2-NEXT:    retq1743;1744; AVX512-LABEL: max_ge_v4i64c:1745; AVX512:       # %bb.0:1746; AVX512-NEXT:    vpmovsxbq {{.*#+}} ymm0 = [18446744073709551615,18446744073709551615,7,7]1747; AVX512-NEXT:    retq1748  %1 = insertelement <4 x i64> <i64 -7, i64 -1, i64 1, i64 7>, i64 -7, i32 01749  %2 = insertelement <4 x i64> <i64 -1, i64 -7, i64 7, i64 1>, i64 -1, i32 01750  %3 = icmp sge <4 x i64> %1, %21751  %4 = select <4 x i1> %3, <4 x i64> %1, <4 x i64> %21752  ret <4 x i64> %41753}1754 1755define <4 x i32> @max_ge_v4i32c() {1756; SSE-LABEL: max_ge_v4i32c:1757; SSE:       # %bb.0:1758; SSE-NEXT:    movaps {{.*#+}} xmm0 = [4294967295,4294967295,7,7]1759; SSE-NEXT:    retq1760;1761; AVX1-LABEL: max_ge_v4i32c:1762; AVX1:       # %bb.0:1763; AVX1-NEXT:    vmovaps {{.*#+}} xmm0 = [4294967295,4294967295,7,7]1764; AVX1-NEXT:    retq1765;1766; AVX2-LABEL: max_ge_v4i32c:1767; AVX2:       # %bb.0:1768; AVX2-NEXT:    vmovaps {{.*#+}} xmm0 = [4294967295,4294967295,7,7]1769; AVX2-NEXT:    retq1770;1771; AVX512-LABEL: max_ge_v4i32c:1772; AVX512:       # %bb.0:1773; AVX512-NEXT:    vpmovsxbd {{.*#+}} xmm0 = [4294967295,4294967295,7,7]1774; AVX512-NEXT:    retq1775  %1 = insertelement <4 x i32> <i32 -7, i32 -1, i32 1, i32 7>, i32 -7, i32 01776  %2 = insertelement <4 x i32> <i32 -1, i32 -7, i32 7, i32 1>, i32 -1, i32 01777  %3 = icmp sge <4 x i32> %1, %21778  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %21779  ret <4 x i32> %41780}1781 1782define <8 x i32> @max_ge_v8i32c() {1783; SSE-LABEL: max_ge_v8i32c:1784; SSE:       # %bb.0:1785; SSE-NEXT:    movaps {{.*#+}} xmm0 = [4294967295,4294967293,4294967293,4294967295]1786; SSE-NEXT:    movaps {{.*#+}} xmm1 = [7,5,5,7]1787; SSE-NEXT:    retq1788;1789; AVX1-LABEL: max_ge_v8i32c:1790; AVX1:       # %bb.0:1791; AVX1-NEXT:    vmovaps {{.*#+}} ymm0 = [4294967295,4294967293,4294967293,4294967295,7,5,5,7]1792; AVX1-NEXT:    retq1793;1794; AVX2-LABEL: max_ge_v8i32c:1795; AVX2:       # %bb.0:1796; AVX2-NEXT:    vmovaps {{.*#+}} ymm0 = [4294967295,4294967293,4294967293,4294967295,7,5,5,7]1797; AVX2-NEXT:    retq1798;1799; AVX512-LABEL: max_ge_v8i32c:1800; AVX512:       # %bb.0:1801; AVX512-NEXT:    vpmovsxbd {{.*#+}} ymm0 = [4294967295,4294967293,4294967293,4294967295,7,5,5,7]1802; AVX512-NEXT:    retq1803  %1 = insertelement <8 x i32> <i32 -7, i32 -5, i32 -3, i32 -1, i32 1, i32 3, i32 5, i32 7>, i32 -7, i32 01804  %2 = insertelement <8 x i32> <i32 -1, i32 -3, i32 -5, i32 -7, i32 7, i32 5, i32 3, i32 1>, i32 -1, i32 01805  %3 = icmp sge <8 x i32> %1, %21806  %4 = select <8 x i1> %3, <8 x i32> %1, <8 x i32> %21807  ret <8 x i32> %41808}1809 1810define <8 x i16> @max_ge_v8i16c() {1811; SSE-LABEL: max_ge_v8i16c:1812; SSE:       # %bb.0:1813; SSE-NEXT:    movaps {{.*#+}} xmm0 = [65535,65533,65533,65535,7,5,5,7]1814; SSE-NEXT:    retq1815;1816; AVX-LABEL: max_ge_v8i16c:1817; AVX:       # %bb.0:1818; AVX-NEXT:    vmovaps {{.*#+}} xmm0 = [65535,65533,65533,65535,7,5,5,7]1819; AVX-NEXT:    retq1820  %1 = insertelement <8 x i16> <i16 -7, i16 -5, i16 -3, i16 -1, i16 1, i16 3, i16 5, i16 7>, i16 -7, i32 01821  %2 = insertelement <8 x i16> <i16 -1, i16 -3, i16 -5, i16 -7, i16 7, i16 5, i16 3, i16 1>, i16 -1, i32 01822  %3 = icmp sge <8 x i16> %1, %21823  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %21824  ret <8 x i16> %41825}1826 1827define <16 x i16> @max_ge_v16i16c() {1828; SSE-LABEL: max_ge_v16i16c:1829; SSE:       # %bb.0:1830; SSE-NEXT:    movaps {{.*#+}} xmm0 = [65535,65534,65533,65532,65533,65534,65535,0]1831; SSE-NEXT:    movaps {{.*#+}} xmm1 = [7,6,5,4,5,6,7,8]1832; SSE-NEXT:    retq1833;1834; AVX-LABEL: max_ge_v16i16c:1835; AVX:       # %bb.0:1836; AVX-NEXT:    vmovaps {{.*#+}} ymm0 = [65535,65534,65533,65532,65533,65534,65535,0,7,6,5,4,5,6,7,8]1837; AVX-NEXT:    retq1838  %1 = insertelement <16 x i16> <i16 -7, i16 -6, i16 -5, i16 -4, i16 -3, i16 -2, i16 -1, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8>, i16 -7, i32 01839  %2 = insertelement <16 x i16> <i16 -1, i16 -2, i16 -3, i16 -4, i16 -5, i16 -6, i16 -7, i16 0, i16 7, i16 6, i16 5, i16 4, i16 3, i16 2, i16 1, i16 0>, i16 -1, i32 01840  %3 = icmp sge <16 x i16> %1, %21841  %4 = select <16 x i1> %3, <16 x i16> %1, <16 x i16> %21842  ret <16 x i16> %41843}1844 1845define <16 x i8> @max_ge_v16i8c() {1846; SSE-LABEL: max_ge_v16i8c:1847; SSE:       # %bb.0:1848; SSE-NEXT:    movaps {{.*#+}} xmm0 = [255,254,253,252,253,254,255,0,7,6,5,4,5,6,7,8]1849; SSE-NEXT:    retq1850;1851; AVX-LABEL: max_ge_v16i8c:1852; AVX:       # %bb.0:1853; AVX-NEXT:    vmovaps {{.*#+}} xmm0 = [255,254,253,252,253,254,255,0,7,6,5,4,5,6,7,8]1854; AVX-NEXT:    retq1855  %1 = insertelement <16 x i8> <i8 -7, i8 -6, i8 -5, i8 -4, i8 -3, i8 -2, i8 -1, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8>, i8 -7, i32 01856  %2 = insertelement <16 x i8> <i8 -1, i8 -2, i8 -3, i8 -4, i8 -5, i8 -6, i8 -7, i8 0, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>, i8 -1, i32 01857  %3 = icmp sge <16 x i8> %1, %21858  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %21859  ret <16 x i8> %41860}1861 1862define <2 x i64> @min_lt_v2i64c() {1863; SSE-LABEL: min_lt_v2i64c:1864; SSE:       # %bb.0:1865; SSE-NEXT:    movaps {{.*#+}} xmm0 = [18446744073709551609,1]1866; SSE-NEXT:    retq1867;1868; AVX1-LABEL: min_lt_v2i64c:1869; AVX1:       # %bb.0:1870; AVX1-NEXT:    vmovaps {{.*#+}} xmm0 = [18446744073709551609,1]1871; AVX1-NEXT:    retq1872;1873; AVX2-LABEL: min_lt_v2i64c:1874; AVX2:       # %bb.0:1875; AVX2-NEXT:    vmovaps {{.*#+}} xmm0 = [18446744073709551609,1]1876; AVX2-NEXT:    retq1877;1878; AVX512-LABEL: min_lt_v2i64c:1879; AVX512:       # %bb.0:1880; AVX512-NEXT:    vpmovsxbq {{.*#+}} xmm0 = [18446744073709551609,1]1881; AVX512-NEXT:    retq1882  %1 = insertelement <2 x i64> <i64 -7, i64 7>, i64 -7, i32 01883  %2 = insertelement <2 x i64> <i64 -1, i64 1>, i64 -1, i32 01884  %3 = icmp slt <2 x i64> %1, %21885  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %21886  ret <2 x i64> %41887}1888 1889define <4 x i64> @min_lt_v4i64c() {1890; SSE-LABEL: min_lt_v4i64c:1891; SSE:       # %bb.0:1892; SSE-NEXT:    movaps {{.*#+}} xmm0 = [18446744073709551609,18446744073709551609]1893; SSE-NEXT:    movaps {{.*#+}} xmm1 = [1,1]1894; SSE-NEXT:    retq1895;1896; AVX1-LABEL: min_lt_v4i64c:1897; AVX1:       # %bb.0:1898; AVX1-NEXT:    vmovaps {{.*#+}} ymm0 = [18446744073709551609,18446744073709551609,1,1]1899; AVX1-NEXT:    retq1900;1901; AVX2-LABEL: min_lt_v4i64c:1902; AVX2:       # %bb.0:1903; AVX2-NEXT:    vmovaps {{.*#+}} ymm0 = [18446744073709551609,18446744073709551609,1,1]1904; AVX2-NEXT:    retq1905;1906; AVX512-LABEL: min_lt_v4i64c:1907; AVX512:       # %bb.0:1908; AVX512-NEXT:    vpmovsxbq {{.*#+}} ymm0 = [18446744073709551609,18446744073709551609,1,1]1909; AVX512-NEXT:    retq1910  %1 = insertelement <4 x i64> <i64 -7, i64 -1, i64 1, i64 7>, i64 -7, i32 01911  %2 = insertelement <4 x i64> <i64 -1, i64 -7, i64 7, i64 1>, i64 -1, i32 01912  %3 = icmp slt <4 x i64> %1, %21913  %4 = select <4 x i1> %3, <4 x i64> %1, <4 x i64> %21914  ret <4 x i64> %41915}1916 1917define <4 x i32> @min_lt_v4i32c() {1918; SSE-LABEL: min_lt_v4i32c:1919; SSE:       # %bb.0:1920; SSE-NEXT:    movaps {{.*#+}} xmm0 = [4294967289,4294967289,1,1]1921; SSE-NEXT:    retq1922;1923; AVX1-LABEL: min_lt_v4i32c:1924; AVX1:       # %bb.0:1925; AVX1-NEXT:    vmovaps {{.*#+}} xmm0 = [4294967289,4294967289,1,1]1926; AVX1-NEXT:    retq1927;1928; AVX2-LABEL: min_lt_v4i32c:1929; AVX2:       # %bb.0:1930; AVX2-NEXT:    vmovaps {{.*#+}} xmm0 = [4294967289,4294967289,1,1]1931; AVX2-NEXT:    retq1932;1933; AVX512-LABEL: min_lt_v4i32c:1934; AVX512:       # %bb.0:1935; AVX512-NEXT:    vpmovsxbd {{.*#+}} xmm0 = [4294967289,4294967289,1,1]1936; AVX512-NEXT:    retq1937  %1 = insertelement <4 x i32> <i32 -7, i32 -1, i32 1, i32 7>, i32 -7, i32 01938  %2 = insertelement <4 x i32> <i32 -1, i32 -7, i32 7, i32 1>, i32 -1, i32 01939  %3 = icmp slt <4 x i32> %1, %21940  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %21941  ret <4 x i32> %41942}1943 1944define <8 x i32> @min_lt_v8i32c() {1945; SSE-LABEL: min_lt_v8i32c:1946; SSE:       # %bb.0:1947; SSE-NEXT:    movaps {{.*#+}} xmm0 = [4294967289,4294967291,4294967291,4294967289]1948; SSE-NEXT:    movaps {{.*#+}} xmm1 = [1,3,3,1]1949; SSE-NEXT:    retq1950;1951; AVX1-LABEL: min_lt_v8i32c:1952; AVX1:       # %bb.0:1953; AVX1-NEXT:    vmovaps {{.*#+}} ymm0 = [4294967289,4294967291,4294967291,4294967289,1,3,3,1]1954; AVX1-NEXT:    retq1955;1956; AVX2-LABEL: min_lt_v8i32c:1957; AVX2:       # %bb.0:1958; AVX2-NEXT:    vmovaps {{.*#+}} ymm0 = [4294967289,4294967291,4294967291,4294967289,1,3,3,1]1959; AVX2-NEXT:    retq1960;1961; AVX512-LABEL: min_lt_v8i32c:1962; AVX512:       # %bb.0:1963; AVX512-NEXT:    vpmovsxbd {{.*#+}} ymm0 = [4294967289,4294967291,4294967291,4294967289,1,3,3,1]1964; AVX512-NEXT:    retq1965  %1 = insertelement <8 x i32> <i32 -7, i32 -5, i32 -3, i32 -1, i32 1, i32 3, i32 5, i32 7>, i32 -7, i32 01966  %2 = insertelement <8 x i32> <i32 -1, i32 -3, i32 -5, i32 -7, i32 7, i32 5, i32 3, i32 1>, i32 -1, i32 01967  %3 = icmp slt <8 x i32> %1, %21968  %4 = select <8 x i1> %3, <8 x i32> %1, <8 x i32> %21969  ret <8 x i32> %41970}1971 1972define <8 x i16> @min_lt_v8i16c() {1973; SSE-LABEL: min_lt_v8i16c:1974; SSE:       # %bb.0:1975; SSE-NEXT:    movaps {{.*#+}} xmm0 = [65529,65531,65531,65529,1,3,3,1]1976; SSE-NEXT:    retq1977;1978; AVX-LABEL: min_lt_v8i16c:1979; AVX:       # %bb.0:1980; AVX-NEXT:    vmovaps {{.*#+}} xmm0 = [65529,65531,65531,65529,1,3,3,1]1981; AVX-NEXT:    retq1982  %1 = insertelement <8 x i16> <i16 -7, i16 -5, i16 -3, i16 -1, i16 1, i16 3, i16 5, i16 7>, i16 -7, i32 01983  %2 = insertelement <8 x i16> <i16 -1, i16 -3, i16 -5, i16 -7, i16 7, i16 5, i16 3, i16 1>, i16 -1, i32 01984  %3 = icmp slt <8 x i16> %1, %21985  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %21986  ret <8 x i16> %41987}1988 1989define <16 x i16> @min_lt_v16i16c() {1990; SSE-LABEL: min_lt_v16i16c:1991; SSE:       # %bb.0:1992; SSE-NEXT:    movaps {{.*#+}} xmm0 = [65529,65530,65531,65532,65531,65530,65529,0]1993; SSE-NEXT:    movaps {{.*#+}} xmm1 = [1,2,3,4,3,2,1,0]1994; SSE-NEXT:    retq1995;1996; AVX-LABEL: min_lt_v16i16c:1997; AVX:       # %bb.0:1998; AVX-NEXT:    vmovaps {{.*#+}} ymm0 = [65529,65530,65531,65532,65531,65530,65529,0,1,2,3,4,3,2,1,0]1999; AVX-NEXT:    retq2000  %1 = insertelement <16 x i16> <i16 -7, i16 -6, i16 -5, i16 -4, i16 -3, i16 -2, i16 -1, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8>, i16 -7, i32 02001  %2 = insertelement <16 x i16> <i16 -1, i16 -2, i16 -3, i16 -4, i16 -5, i16 -6, i16 -7, i16 0, i16 7, i16 6, i16 5, i16 4, i16 3, i16 2, i16 1, i16 0>, i16 -1, i32 02002  %3 = icmp slt <16 x i16> %1, %22003  %4 = select <16 x i1> %3, <16 x i16> %1, <16 x i16> %22004  ret <16 x i16> %42005}2006 2007define <16 x i8> @min_lt_v16i8c() {2008; SSE-LABEL: min_lt_v16i8c:2009; SSE:       # %bb.0:2010; SSE-NEXT:    movaps {{.*#+}} xmm0 = [249,250,251,252,251,250,249,0,1,2,3,4,3,2,1,0]2011; SSE-NEXT:    retq2012;2013; AVX-LABEL: min_lt_v16i8c:2014; AVX:       # %bb.0:2015; AVX-NEXT:    vmovaps {{.*#+}} xmm0 = [249,250,251,252,251,250,249,0,1,2,3,4,3,2,1,0]2016; AVX-NEXT:    retq2017  %1 = insertelement <16 x i8> <i8 -7, i8 -6, i8 -5, i8 -4, i8 -3, i8 -2, i8 -1, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8>, i8 -7, i32 02018  %2 = insertelement <16 x i8> <i8 -1, i8 -2, i8 -3, i8 -4, i8 -5, i8 -6, i8 -7, i8 0, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>, i8 -1, i32 02019  %3 = icmp slt <16 x i8> %1, %22020  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %22021  ret <16 x i8> %42022}2023 2024define <2 x i64> @min_le_v2i64c() {2025; SSE-LABEL: min_le_v2i64c:2026; SSE:       # %bb.0:2027; SSE-NEXT:    movaps {{.*#+}} xmm0 = [18446744073709551609,1]2028; SSE-NEXT:    retq2029;2030; AVX1-LABEL: min_le_v2i64c:2031; AVX1:       # %bb.0:2032; AVX1-NEXT:    vmovaps {{.*#+}} xmm0 = [18446744073709551609,1]2033; AVX1-NEXT:    retq2034;2035; AVX2-LABEL: min_le_v2i64c:2036; AVX2:       # %bb.0:2037; AVX2-NEXT:    vmovaps {{.*#+}} xmm0 = [18446744073709551609,1]2038; AVX2-NEXT:    retq2039;2040; AVX512-LABEL: min_le_v2i64c:2041; AVX512:       # %bb.0:2042; AVX512-NEXT:    vpmovsxbq {{.*#+}} xmm0 = [18446744073709551609,1]2043; AVX512-NEXT:    retq2044  %1 = insertelement <2 x i64> <i64 -7, i64 7>, i64 -7, i32 02045  %2 = insertelement <2 x i64> <i64 -1, i64 1>, i64 -1, i32 02046  %3 = icmp sle <2 x i64> %1, %22047  %4 = select <2 x i1> %3, <2 x i64> %1, <2 x i64> %22048  ret <2 x i64> %42049}2050 2051define <4 x i64> @min_le_v4i64c() {2052; SSE-LABEL: min_le_v4i64c:2053; SSE:       # %bb.0:2054; SSE-NEXT:    movaps {{.*#+}} xmm0 = [18446744073709551609,18446744073709551609]2055; SSE-NEXT:    movaps {{.*#+}} xmm1 = [1,1]2056; SSE-NEXT:    retq2057;2058; AVX1-LABEL: min_le_v4i64c:2059; AVX1:       # %bb.0:2060; AVX1-NEXT:    vmovaps {{.*#+}} ymm0 = [18446744073709551609,18446744073709551609,1,1]2061; AVX1-NEXT:    retq2062;2063; AVX2-LABEL: min_le_v4i64c:2064; AVX2:       # %bb.0:2065; AVX2-NEXT:    vmovaps {{.*#+}} ymm0 = [18446744073709551609,18446744073709551609,1,1]2066; AVX2-NEXT:    retq2067;2068; AVX512-LABEL: min_le_v4i64c:2069; AVX512:       # %bb.0:2070; AVX512-NEXT:    vpmovsxbq {{.*#+}} ymm0 = [18446744073709551609,18446744073709551609,1,1]2071; AVX512-NEXT:    retq2072  %1 = insertelement <4 x i64> <i64 -7, i64 -1, i64 1, i64 7>, i64 -7, i32 02073  %2 = insertelement <4 x i64> <i64 -1, i64 -7, i64 7, i64 1>, i64 -1, i32 02074  %3 = icmp sle <4 x i64> %1, %22075  %4 = select <4 x i1> %3, <4 x i64> %1, <4 x i64> %22076  ret <4 x i64> %42077}2078 2079define <4 x i32> @min_le_v4i32c() {2080; SSE-LABEL: min_le_v4i32c:2081; SSE:       # %bb.0:2082; SSE-NEXT:    movaps {{.*#+}} xmm0 = [4294967289,4294967289,1,1]2083; SSE-NEXT:    retq2084;2085; AVX1-LABEL: min_le_v4i32c:2086; AVX1:       # %bb.0:2087; AVX1-NEXT:    vmovaps {{.*#+}} xmm0 = [4294967289,4294967289,1,1]2088; AVX1-NEXT:    retq2089;2090; AVX2-LABEL: min_le_v4i32c:2091; AVX2:       # %bb.0:2092; AVX2-NEXT:    vmovaps {{.*#+}} xmm0 = [4294967289,4294967289,1,1]2093; AVX2-NEXT:    retq2094;2095; AVX512-LABEL: min_le_v4i32c:2096; AVX512:       # %bb.0:2097; AVX512-NEXT:    vpmovsxbd {{.*#+}} xmm0 = [4294967289,4294967289,1,1]2098; AVX512-NEXT:    retq2099  %1 = insertelement <4 x i32> <i32 -7, i32 -1, i32 1, i32 7>, i32 -7, i32 02100  %2 = insertelement <4 x i32> <i32 -1, i32 -7, i32 7, i32 1>, i32 -1, i32 02101  %3 = icmp sle <4 x i32> %1, %22102  %4 = select <4 x i1> %3, <4 x i32> %1, <4 x i32> %22103  ret <4 x i32> %42104}2105 2106define <8 x i32> @min_le_v8i32c() {2107; SSE-LABEL: min_le_v8i32c:2108; SSE:       # %bb.0:2109; SSE-NEXT:    movaps {{.*#+}} xmm0 = [4294967289,4294967291,4294967291,4294967289]2110; SSE-NEXT:    movaps {{.*#+}} xmm1 = [1,3,3,1]2111; SSE-NEXT:    retq2112;2113; AVX1-LABEL: min_le_v8i32c:2114; AVX1:       # %bb.0:2115; AVX1-NEXT:    vmovaps {{.*#+}} ymm0 = [4294967289,4294967291,4294967291,4294967289,1,3,3,1]2116; AVX1-NEXT:    retq2117;2118; AVX2-LABEL: min_le_v8i32c:2119; AVX2:       # %bb.0:2120; AVX2-NEXT:    vmovaps {{.*#+}} ymm0 = [4294967289,4294967291,4294967291,4294967289,1,3,3,1]2121; AVX2-NEXT:    retq2122;2123; AVX512-LABEL: min_le_v8i32c:2124; AVX512:       # %bb.0:2125; AVX512-NEXT:    vpmovsxbd {{.*#+}} ymm0 = [4294967289,4294967291,4294967291,4294967289,1,3,3,1]2126; AVX512-NEXT:    retq2127  %1 = insertelement <8 x i32> <i32 -7, i32 -5, i32 -3, i32 -1, i32 1, i32 3, i32 5, i32 7>, i32 -7, i32 02128  %2 = insertelement <8 x i32> <i32 -1, i32 -3, i32 -5, i32 -7, i32 7, i32 5, i32 3, i32 1>, i32 -1, i32 02129  %3 = icmp sle <8 x i32> %1, %22130  %4 = select <8 x i1> %3, <8 x i32> %1, <8 x i32> %22131  ret <8 x i32> %42132}2133 2134define <8 x i16> @min_le_v8i16c() {2135; SSE-LABEL: min_le_v8i16c:2136; SSE:       # %bb.0:2137; SSE-NEXT:    movaps {{.*#+}} xmm0 = [65529,65531,65531,65529,1,3,3,1]2138; SSE-NEXT:    retq2139;2140; AVX-LABEL: min_le_v8i16c:2141; AVX:       # %bb.0:2142; AVX-NEXT:    vmovaps {{.*#+}} xmm0 = [65529,65531,65531,65529,1,3,3,1]2143; AVX-NEXT:    retq2144  %1 = insertelement <8 x i16> <i16 -7, i16 -5, i16 -3, i16 -1, i16 1, i16 3, i16 5, i16 7>, i16 -7, i32 02145  %2 = insertelement <8 x i16> <i16 -1, i16 -3, i16 -5, i16 -7, i16 7, i16 5, i16 3, i16 1>, i16 -1, i32 02146  %3 = icmp sle <8 x i16> %1, %22147  %4 = select <8 x i1> %3, <8 x i16> %1, <8 x i16> %22148  ret <8 x i16> %42149}2150 2151define <16 x i16> @min_le_v16i16c() {2152; SSE-LABEL: min_le_v16i16c:2153; SSE:       # %bb.0:2154; SSE-NEXT:    movaps {{.*#+}} xmm0 = [65529,65530,65531,65532,65531,65530,65529,0]2155; SSE-NEXT:    movaps {{.*#+}} xmm1 = [1,2,3,4,3,2,1,0]2156; SSE-NEXT:    retq2157;2158; AVX-LABEL: min_le_v16i16c:2159; AVX:       # %bb.0:2160; AVX-NEXT:    vmovaps {{.*#+}} ymm0 = [65529,65530,65531,65532,65531,65530,65529,0,1,2,3,4,3,2,1,0]2161; AVX-NEXT:    retq2162  %1 = insertelement <16 x i16> <i16 -7, i16 -6, i16 -5, i16 -4, i16 -3, i16 -2, i16 -1, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 8>, i16 -7, i32 02163  %2 = insertelement <16 x i16> <i16 -1, i16 -2, i16 -3, i16 -4, i16 -5, i16 -6, i16 -7, i16 0, i16 7, i16 6, i16 5, i16 4, i16 3, i16 2, i16 1, i16 0>, i16 -1, i32 02164  %3 = icmp sle <16 x i16> %1, %22165  %4 = select <16 x i1> %3, <16 x i16> %1, <16 x i16> %22166  ret <16 x i16> %42167}2168 2169define <16 x i8> @min_le_v16i8c() {2170; SSE-LABEL: min_le_v16i8c:2171; SSE:       # %bb.0:2172; SSE-NEXT:    movaps {{.*#+}} xmm0 = [249,250,251,252,251,250,249,0,1,2,3,4,3,2,1,0]2173; SSE-NEXT:    retq2174;2175; AVX-LABEL: min_le_v16i8c:2176; AVX:       # %bb.0:2177; AVX-NEXT:    vmovaps {{.*#+}} xmm0 = [249,250,251,252,251,250,249,0,1,2,3,4,3,2,1,0]2178; AVX-NEXT:    retq2179  %1 = insertelement <16 x i8> <i8 -7, i8 -6, i8 -5, i8 -4, i8 -3, i8 -2, i8 -1, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8>, i8 -7, i32 02180  %2 = insertelement <16 x i8> <i8 -1, i8 -2, i8 -3, i8 -4, i8 -5, i8 -6, i8 -7, i8 0, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>, i8 -1, i32 02181  %3 = icmp sle <16 x i8> %1, %22182  %4 = select <16 x i1> %3, <16 x i8> %1, <16 x i8> %22183  ret <16 x i8> %42184}2185