brintos

brintos / llvm-project-archived public Read only

0
0
Text · 335.7 KiB · cb0542c Raw
10393 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.2 | FileCheck %s --check-prefixes=SSE,SSE44; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX15; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX26; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=knl | FileCheck %s --check-prefixes=AVX,AVX512,AVX512F7; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=skx | FileCheck %s --check-prefixes=AVX,AVX512,AVX512BW8 9define <16 x i8> @test1(<16 x i8> %a, <16 x i8> %b) {10; SSE2-LABEL: test1:11; SSE2:       # %bb.0: # %entry12; SSE2-NEXT:    movdqa %xmm1, %xmm213; SSE2-NEXT:    pcmpgtb %xmm0, %xmm214; SSE2-NEXT:    pand %xmm2, %xmm015; SSE2-NEXT:    pandn %xmm1, %xmm216; SSE2-NEXT:    por %xmm2, %xmm017; SSE2-NEXT:    retq18;19; SSE4-LABEL: test1:20; SSE4:       # %bb.0: # %entry21; SSE4-NEXT:    pminsb %xmm1, %xmm022; SSE4-NEXT:    retq23;24; AVX-LABEL: test1:25; AVX:       # %bb.0: # %entry26; AVX-NEXT:    vpminsb %xmm1, %xmm0, %xmm027; AVX-NEXT:    retq28entry:29  %cmp = icmp slt <16 x i8> %a, %b30  %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b31  ret <16 x i8> %sel32}33 34define <16 x i8> @test2(<16 x i8> %a, <16 x i8> %b) {35; SSE2-LABEL: test2:36; SSE2:       # %bb.0: # %entry37; SSE2-NEXT:    movdqa %xmm1, %xmm238; SSE2-NEXT:    pcmpgtb %xmm0, %xmm239; SSE2-NEXT:    pand %xmm2, %xmm040; SSE2-NEXT:    pandn %xmm1, %xmm241; SSE2-NEXT:    por %xmm2, %xmm042; SSE2-NEXT:    retq43;44; SSE4-LABEL: test2:45; SSE4:       # %bb.0: # %entry46; SSE4-NEXT:    pminsb %xmm1, %xmm047; SSE4-NEXT:    retq48;49; AVX-LABEL: test2:50; AVX:       # %bb.0: # %entry51; AVX-NEXT:    vpminsb %xmm1, %xmm0, %xmm052; AVX-NEXT:    retq53entry:54  %cmp = icmp sle <16 x i8> %a, %b55  %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b56  ret <16 x i8> %sel57}58 59define <16 x i8> @test3(<16 x i8> %a, <16 x i8> %b) {60; SSE2-LABEL: test3:61; SSE2:       # %bb.0: # %entry62; SSE2-NEXT:    movdqa %xmm0, %xmm263; SSE2-NEXT:    pcmpgtb %xmm1, %xmm264; SSE2-NEXT:    pand %xmm2, %xmm065; SSE2-NEXT:    pandn %xmm1, %xmm266; SSE2-NEXT:    por %xmm2, %xmm067; SSE2-NEXT:    retq68;69; SSE4-LABEL: test3:70; SSE4:       # %bb.0: # %entry71; SSE4-NEXT:    pmaxsb %xmm1, %xmm072; SSE4-NEXT:    retq73;74; AVX-LABEL: test3:75; AVX:       # %bb.0: # %entry76; AVX-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm077; AVX-NEXT:    retq78entry:79  %cmp = icmp sgt <16 x i8> %a, %b80  %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b81  ret <16 x i8> %sel82}83 84define <16 x i8> @test4(<16 x i8> %a, <16 x i8> %b) {85; SSE2-LABEL: test4:86; SSE2:       # %bb.0: # %entry87; SSE2-NEXT:    movdqa %xmm0, %xmm288; SSE2-NEXT:    pcmpgtb %xmm1, %xmm289; SSE2-NEXT:    pand %xmm2, %xmm090; SSE2-NEXT:    pandn %xmm1, %xmm291; SSE2-NEXT:    por %xmm2, %xmm092; SSE2-NEXT:    retq93;94; SSE4-LABEL: test4:95; SSE4:       # %bb.0: # %entry96; SSE4-NEXT:    pmaxsb %xmm1, %xmm097; SSE4-NEXT:    retq98;99; AVX-LABEL: test4:100; AVX:       # %bb.0: # %entry101; AVX-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm0102; AVX-NEXT:    retq103entry:104  %cmp = icmp sge <16 x i8> %a, %b105  %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b106  ret <16 x i8> %sel107}108 109define <16 x i8> @test5(<16 x i8> %a, <16 x i8> %b) {110; SSE-LABEL: test5:111; SSE:       # %bb.0: # %entry112; SSE-NEXT:    pminub %xmm1, %xmm0113; SSE-NEXT:    retq114;115; AVX-LABEL: test5:116; AVX:       # %bb.0: # %entry117; AVX-NEXT:    vpminub %xmm1, %xmm0, %xmm0118; AVX-NEXT:    retq119entry:120  %cmp = icmp ult <16 x i8> %a, %b121  %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b122  ret <16 x i8> %sel123}124 125define <16 x i8> @test6(<16 x i8> %a, <16 x i8> %b) {126; SSE-LABEL: test6:127; SSE:       # %bb.0: # %entry128; SSE-NEXT:    pminub %xmm1, %xmm0129; SSE-NEXT:    retq130;131; AVX-LABEL: test6:132; AVX:       # %bb.0: # %entry133; AVX-NEXT:    vpminub %xmm1, %xmm0, %xmm0134; AVX-NEXT:    retq135entry:136  %cmp = icmp ule <16 x i8> %a, %b137  %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b138  ret <16 x i8> %sel139}140 141define <16 x i8> @test7(<16 x i8> %a, <16 x i8> %b) {142; SSE-LABEL: test7:143; SSE:       # %bb.0: # %entry144; SSE-NEXT:    pmaxub %xmm1, %xmm0145; SSE-NEXT:    retq146;147; AVX-LABEL: test7:148; AVX:       # %bb.0: # %entry149; AVX-NEXT:    vpmaxub %xmm1, %xmm0, %xmm0150; AVX-NEXT:    retq151entry:152  %cmp = icmp ugt <16 x i8> %a, %b153  %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b154  ret <16 x i8> %sel155}156 157define <16 x i8> @test8(<16 x i8> %a, <16 x i8> %b) {158; SSE-LABEL: test8:159; SSE:       # %bb.0: # %entry160; SSE-NEXT:    pmaxub %xmm1, %xmm0161; SSE-NEXT:    retq162;163; AVX-LABEL: test8:164; AVX:       # %bb.0: # %entry165; AVX-NEXT:    vpmaxub %xmm1, %xmm0, %xmm0166; AVX-NEXT:    retq167entry:168  %cmp = icmp uge <16 x i8> %a, %b169  %sel = select <16 x i1> %cmp, <16 x i8> %a, <16 x i8> %b170  ret <16 x i8> %sel171}172 173define <8 x i16> @test9(<8 x i16> %a, <8 x i16> %b) {174; SSE-LABEL: test9:175; SSE:       # %bb.0: # %entry176; SSE-NEXT:    pminsw %xmm1, %xmm0177; SSE-NEXT:    retq178;179; AVX-LABEL: test9:180; AVX:       # %bb.0: # %entry181; AVX-NEXT:    vpminsw %xmm1, %xmm0, %xmm0182; AVX-NEXT:    retq183entry:184  %cmp = icmp slt <8 x i16> %a, %b185  %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b186  ret <8 x i16> %sel187}188 189define <8 x i16> @test10(<8 x i16> %a, <8 x i16> %b) {190; SSE-LABEL: test10:191; SSE:       # %bb.0: # %entry192; SSE-NEXT:    pminsw %xmm1, %xmm0193; SSE-NEXT:    retq194;195; AVX-LABEL: test10:196; AVX:       # %bb.0: # %entry197; AVX-NEXT:    vpminsw %xmm1, %xmm0, %xmm0198; AVX-NEXT:    retq199entry:200  %cmp = icmp sle <8 x i16> %a, %b201  %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b202  ret <8 x i16> %sel203}204 205define <8 x i16> @test11(<8 x i16> %a, <8 x i16> %b) {206; SSE-LABEL: test11:207; SSE:       # %bb.0: # %entry208; SSE-NEXT:    pmaxsw %xmm1, %xmm0209; SSE-NEXT:    retq210;211; AVX-LABEL: test11:212; AVX:       # %bb.0: # %entry213; AVX-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0214; AVX-NEXT:    retq215entry:216  %cmp = icmp sgt <8 x i16> %a, %b217  %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b218  ret <8 x i16> %sel219}220 221define <8 x i16> @test12(<8 x i16> %a, <8 x i16> %b) {222; SSE-LABEL: test12:223; SSE:       # %bb.0: # %entry224; SSE-NEXT:    pmaxsw %xmm1, %xmm0225; SSE-NEXT:    retq226;227; AVX-LABEL: test12:228; AVX:       # %bb.0: # %entry229; AVX-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0230; AVX-NEXT:    retq231entry:232  %cmp = icmp sge <8 x i16> %a, %b233  %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b234  ret <8 x i16> %sel235}236 237define <8 x i16> @test13(<8 x i16> %a, <8 x i16> %b) {238; SSE2-LABEL: test13:239; SSE2:       # %bb.0: # %entry240; SSE2-NEXT:    movdqa %xmm0, %xmm2241; SSE2-NEXT:    psubusw %xmm1, %xmm2242; SSE2-NEXT:    psubw %xmm2, %xmm0243; SSE2-NEXT:    retq244;245; SSE4-LABEL: test13:246; SSE4:       # %bb.0: # %entry247; SSE4-NEXT:    pminuw %xmm1, %xmm0248; SSE4-NEXT:    retq249;250; AVX-LABEL: test13:251; AVX:       # %bb.0: # %entry252; AVX-NEXT:    vpminuw %xmm1, %xmm0, %xmm0253; AVX-NEXT:    retq254entry:255  %cmp = icmp ult <8 x i16> %a, %b256  %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b257  ret <8 x i16> %sel258}259 260define <8 x i16> @test14(<8 x i16> %a, <8 x i16> %b) {261; SSE2-LABEL: test14:262; SSE2:       # %bb.0: # %entry263; SSE2-NEXT:    movdqa %xmm0, %xmm2264; SSE2-NEXT:    psubusw %xmm1, %xmm2265; SSE2-NEXT:    psubw %xmm2, %xmm0266; SSE2-NEXT:    retq267;268; SSE4-LABEL: test14:269; SSE4:       # %bb.0: # %entry270; SSE4-NEXT:    pminuw %xmm1, %xmm0271; SSE4-NEXT:    retq272;273; AVX-LABEL: test14:274; AVX:       # %bb.0: # %entry275; AVX-NEXT:    vpminuw %xmm1, %xmm0, %xmm0276; AVX-NEXT:    retq277entry:278  %cmp = icmp ule <8 x i16> %a, %b279  %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b280  ret <8 x i16> %sel281}282 283define <8 x i16> @test15(<8 x i16> %a, <8 x i16> %b) {284; SSE2-LABEL: test15:285; SSE2:       # %bb.0: # %entry286; SSE2-NEXT:    psubusw %xmm0, %xmm1287; SSE2-NEXT:    paddw %xmm1, %xmm0288; SSE2-NEXT:    retq289;290; SSE4-LABEL: test15:291; SSE4:       # %bb.0: # %entry292; SSE4-NEXT:    pmaxuw %xmm1, %xmm0293; SSE4-NEXT:    retq294;295; AVX-LABEL: test15:296; AVX:       # %bb.0: # %entry297; AVX-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm0298; AVX-NEXT:    retq299entry:300  %cmp = icmp ugt <8 x i16> %a, %b301  %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b302  ret <8 x i16> %sel303}304 305define <8 x i16> @test16(<8 x i16> %a, <8 x i16> %b) {306; SSE2-LABEL: test16:307; SSE2:       # %bb.0: # %entry308; SSE2-NEXT:    psubusw %xmm0, %xmm1309; SSE2-NEXT:    paddw %xmm1, %xmm0310; SSE2-NEXT:    retq311;312; SSE4-LABEL: test16:313; SSE4:       # %bb.0: # %entry314; SSE4-NEXT:    pmaxuw %xmm1, %xmm0315; SSE4-NEXT:    retq316;317; AVX-LABEL: test16:318; AVX:       # %bb.0: # %entry319; AVX-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm0320; AVX-NEXT:    retq321entry:322  %cmp = icmp uge <8 x i16> %a, %b323  %sel = select <8 x i1> %cmp, <8 x i16> %a, <8 x i16> %b324  ret <8 x i16> %sel325}326 327define <4 x i32> @test17(<4 x i32> %a, <4 x i32> %b) {328; SSE2-LABEL: test17:329; SSE2:       # %bb.0: # %entry330; SSE2-NEXT:    movdqa %xmm1, %xmm2331; SSE2-NEXT:    pcmpgtd %xmm0, %xmm2332; SSE2-NEXT:    pand %xmm2, %xmm0333; SSE2-NEXT:    pandn %xmm1, %xmm2334; SSE2-NEXT:    por %xmm2, %xmm0335; SSE2-NEXT:    retq336;337; SSE4-LABEL: test17:338; SSE4:       # %bb.0: # %entry339; SSE4-NEXT:    pminsd %xmm1, %xmm0340; SSE4-NEXT:    retq341;342; AVX-LABEL: test17:343; AVX:       # %bb.0: # %entry344; AVX-NEXT:    vpminsd %xmm1, %xmm0, %xmm0345; AVX-NEXT:    retq346entry:347  %cmp = icmp slt <4 x i32> %a, %b348  %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b349  ret <4 x i32> %sel350}351 352define <4 x i32> @test18(<4 x i32> %a, <4 x i32> %b) {353; SSE2-LABEL: test18:354; SSE2:       # %bb.0: # %entry355; SSE2-NEXT:    movdqa %xmm1, %xmm2356; SSE2-NEXT:    pcmpgtd %xmm0, %xmm2357; SSE2-NEXT:    pand %xmm2, %xmm0358; SSE2-NEXT:    pandn %xmm1, %xmm2359; SSE2-NEXT:    por %xmm2, %xmm0360; SSE2-NEXT:    retq361;362; SSE4-LABEL: test18:363; SSE4:       # %bb.0: # %entry364; SSE4-NEXT:    pminsd %xmm1, %xmm0365; SSE4-NEXT:    retq366;367; AVX-LABEL: test18:368; AVX:       # %bb.0: # %entry369; AVX-NEXT:    vpminsd %xmm1, %xmm0, %xmm0370; AVX-NEXT:    retq371entry:372  %cmp = icmp sle <4 x i32> %a, %b373  %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b374  ret <4 x i32> %sel375}376 377define <4 x i32> @test19(<4 x i32> %a, <4 x i32> %b) {378; SSE2-LABEL: test19:379; SSE2:       # %bb.0: # %entry380; SSE2-NEXT:    movdqa %xmm0, %xmm2381; SSE2-NEXT:    pcmpgtd %xmm1, %xmm2382; SSE2-NEXT:    pand %xmm2, %xmm0383; SSE2-NEXT:    pandn %xmm1, %xmm2384; SSE2-NEXT:    por %xmm2, %xmm0385; SSE2-NEXT:    retq386;387; SSE4-LABEL: test19:388; SSE4:       # %bb.0: # %entry389; SSE4-NEXT:    pmaxsd %xmm1, %xmm0390; SSE4-NEXT:    retq391;392; AVX-LABEL: test19:393; AVX:       # %bb.0: # %entry394; AVX-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm0395; AVX-NEXT:    retq396entry:397  %cmp = icmp sgt <4 x i32> %a, %b398  %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b399  ret <4 x i32> %sel400}401 402define <4 x i32> @test20(<4 x i32> %a, <4 x i32> %b) {403; SSE2-LABEL: test20:404; SSE2:       # %bb.0: # %entry405; SSE2-NEXT:    movdqa %xmm0, %xmm2406; SSE2-NEXT:    pcmpgtd %xmm1, %xmm2407; SSE2-NEXT:    pand %xmm2, %xmm0408; SSE2-NEXT:    pandn %xmm1, %xmm2409; SSE2-NEXT:    por %xmm2, %xmm0410; SSE2-NEXT:    retq411;412; SSE4-LABEL: test20:413; SSE4:       # %bb.0: # %entry414; SSE4-NEXT:    pmaxsd %xmm1, %xmm0415; SSE4-NEXT:    retq416;417; AVX-LABEL: test20:418; AVX:       # %bb.0: # %entry419; AVX-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm0420; AVX-NEXT:    retq421entry:422  %cmp = icmp sge <4 x i32> %a, %b423  %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b424  ret <4 x i32> %sel425}426 427define <4 x i32> @test21(<4 x i32> %a, <4 x i32> %b) {428; SSE2-LABEL: test21:429; SSE2:       # %bb.0: # %entry430; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]431; SSE2-NEXT:    movdqa %xmm0, %xmm3432; SSE2-NEXT:    pxor %xmm2, %xmm3433; SSE2-NEXT:    pxor %xmm1, %xmm2434; SSE2-NEXT:    pcmpgtd %xmm3, %xmm2435; SSE2-NEXT:    pand %xmm2, %xmm0436; SSE2-NEXT:    pandn %xmm1, %xmm2437; SSE2-NEXT:    por %xmm2, %xmm0438; SSE2-NEXT:    retq439;440; SSE4-LABEL: test21:441; SSE4:       # %bb.0: # %entry442; SSE4-NEXT:    pminud %xmm1, %xmm0443; SSE4-NEXT:    retq444;445; AVX-LABEL: test21:446; AVX:       # %bb.0: # %entry447; AVX-NEXT:    vpminud %xmm1, %xmm0, %xmm0448; AVX-NEXT:    retq449entry:450  %cmp = icmp ult <4 x i32> %a, %b451  %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b452  ret <4 x i32> %sel453}454 455define <4 x i32> @test22(<4 x i32> %a, <4 x i32> %b) {456; SSE2-LABEL: test22:457; SSE2:       # %bb.0: # %entry458; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]459; SSE2-NEXT:    movdqa %xmm0, %xmm3460; SSE2-NEXT:    pxor %xmm2, %xmm3461; SSE2-NEXT:    pxor %xmm1, %xmm2462; SSE2-NEXT:    pcmpgtd %xmm3, %xmm2463; SSE2-NEXT:    pand %xmm2, %xmm0464; SSE2-NEXT:    pandn %xmm1, %xmm2465; SSE2-NEXT:    por %xmm2, %xmm0466; SSE2-NEXT:    retq467;468; SSE4-LABEL: test22:469; SSE4:       # %bb.0: # %entry470; SSE4-NEXT:    pminud %xmm1, %xmm0471; SSE4-NEXT:    retq472;473; AVX-LABEL: test22:474; AVX:       # %bb.0: # %entry475; AVX-NEXT:    vpminud %xmm1, %xmm0, %xmm0476; AVX-NEXT:    retq477entry:478  %cmp = icmp ule <4 x i32> %a, %b479  %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b480  ret <4 x i32> %sel481}482 483define <4 x i32> @test23(<4 x i32> %a, <4 x i32> %b) {484; SSE2-LABEL: test23:485; SSE2:       # %bb.0: # %entry486; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]487; SSE2-NEXT:    movdqa %xmm1, %xmm3488; SSE2-NEXT:    pxor %xmm2, %xmm3489; SSE2-NEXT:    pxor %xmm0, %xmm2490; SSE2-NEXT:    pcmpgtd %xmm3, %xmm2491; SSE2-NEXT:    pand %xmm2, %xmm0492; SSE2-NEXT:    pandn %xmm1, %xmm2493; SSE2-NEXT:    por %xmm2, %xmm0494; SSE2-NEXT:    retq495;496; SSE4-LABEL: test23:497; SSE4:       # %bb.0: # %entry498; SSE4-NEXT:    pmaxud %xmm1, %xmm0499; SSE4-NEXT:    retq500;501; AVX-LABEL: test23:502; AVX:       # %bb.0: # %entry503; AVX-NEXT:    vpmaxud %xmm1, %xmm0, %xmm0504; AVX-NEXT:    retq505entry:506  %cmp = icmp ugt <4 x i32> %a, %b507  %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b508  ret <4 x i32> %sel509}510 511define <4 x i32> @test24(<4 x i32> %a, <4 x i32> %b) {512; SSE2-LABEL: test24:513; SSE2:       # %bb.0: # %entry514; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]515; SSE2-NEXT:    movdqa %xmm1, %xmm3516; SSE2-NEXT:    pxor %xmm2, %xmm3517; SSE2-NEXT:    pxor %xmm0, %xmm2518; SSE2-NEXT:    pcmpgtd %xmm3, %xmm2519; SSE2-NEXT:    pand %xmm2, %xmm0520; SSE2-NEXT:    pandn %xmm1, %xmm2521; SSE2-NEXT:    por %xmm2, %xmm0522; SSE2-NEXT:    retq523;524; SSE4-LABEL: test24:525; SSE4:       # %bb.0: # %entry526; SSE4-NEXT:    pmaxud %xmm1, %xmm0527; SSE4-NEXT:    retq528;529; AVX-LABEL: test24:530; AVX:       # %bb.0: # %entry531; AVX-NEXT:    vpmaxud %xmm1, %xmm0, %xmm0532; AVX-NEXT:    retq533entry:534  %cmp = icmp uge <4 x i32> %a, %b535  %sel = select <4 x i1> %cmp, <4 x i32> %a, <4 x i32> %b536  ret <4 x i32> %sel537}538 539define <32 x i8> @test25(<32 x i8> %a, <32 x i8> %b) {540; SSE2-LABEL: test25:541; SSE2:       # %bb.0: # %entry542; SSE2-NEXT:    movdqa %xmm2, %xmm4543; SSE2-NEXT:    pcmpgtb %xmm0, %xmm4544; SSE2-NEXT:    pand %xmm4, %xmm0545; SSE2-NEXT:    pandn %xmm2, %xmm4546; SSE2-NEXT:    por %xmm4, %xmm0547; SSE2-NEXT:    movdqa %xmm3, %xmm2548; SSE2-NEXT:    pcmpgtb %xmm1, %xmm2549; SSE2-NEXT:    pand %xmm2, %xmm1550; SSE2-NEXT:    pandn %xmm3, %xmm2551; SSE2-NEXT:    por %xmm2, %xmm1552; SSE2-NEXT:    retq553;554; SSE4-LABEL: test25:555; SSE4:       # %bb.0: # %entry556; SSE4-NEXT:    pminsb %xmm2, %xmm0557; SSE4-NEXT:    pminsb %xmm3, %xmm1558; SSE4-NEXT:    retq559;560; AVX1-LABEL: test25:561; AVX1:       # %bb.0: # %entry562; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2563; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3564; AVX1-NEXT:    vpminsb %xmm2, %xmm3, %xmm2565; AVX1-NEXT:    vpminsb %xmm1, %xmm0, %xmm0566; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0567; AVX1-NEXT:    retq568;569; AVX2-LABEL: test25:570; AVX2:       # %bb.0: # %entry571; AVX2-NEXT:    vpminsb %ymm1, %ymm0, %ymm0572; AVX2-NEXT:    retq573;574; AVX512-LABEL: test25:575; AVX512:       # %bb.0: # %entry576; AVX512-NEXT:    vpminsb %ymm1, %ymm0, %ymm0577; AVX512-NEXT:    retq578entry:579  %cmp = icmp slt <32 x i8> %a, %b580  %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b581  ret <32 x i8> %sel582}583 584define <32 x i8> @test26(<32 x i8> %a, <32 x i8> %b) {585; SSE2-LABEL: test26:586; SSE2:       # %bb.0: # %entry587; SSE2-NEXT:    movdqa %xmm2, %xmm4588; SSE2-NEXT:    pcmpgtb %xmm0, %xmm4589; SSE2-NEXT:    pand %xmm4, %xmm0590; SSE2-NEXT:    pandn %xmm2, %xmm4591; SSE2-NEXT:    por %xmm4, %xmm0592; SSE2-NEXT:    movdqa %xmm3, %xmm2593; SSE2-NEXT:    pcmpgtb %xmm1, %xmm2594; SSE2-NEXT:    pand %xmm2, %xmm1595; SSE2-NEXT:    pandn %xmm3, %xmm2596; SSE2-NEXT:    por %xmm2, %xmm1597; SSE2-NEXT:    retq598;599; SSE4-LABEL: test26:600; SSE4:       # %bb.0: # %entry601; SSE4-NEXT:    pminsb %xmm2, %xmm0602; SSE4-NEXT:    pminsb %xmm3, %xmm1603; SSE4-NEXT:    retq604;605; AVX1-LABEL: test26:606; AVX1:       # %bb.0: # %entry607; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2608; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3609; AVX1-NEXT:    vpminsb %xmm2, %xmm3, %xmm2610; AVX1-NEXT:    vpminsb %xmm1, %xmm0, %xmm0611; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0612; AVX1-NEXT:    retq613;614; AVX2-LABEL: test26:615; AVX2:       # %bb.0: # %entry616; AVX2-NEXT:    vpminsb %ymm1, %ymm0, %ymm0617; AVX2-NEXT:    retq618;619; AVX512-LABEL: test26:620; AVX512:       # %bb.0: # %entry621; AVX512-NEXT:    vpminsb %ymm1, %ymm0, %ymm0622; AVX512-NEXT:    retq623entry:624  %cmp = icmp sle <32 x i8> %a, %b625  %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b626  ret <32 x i8> %sel627}628 629define <32 x i8> @test27(<32 x i8> %a, <32 x i8> %b) {630; SSE2-LABEL: test27:631; SSE2:       # %bb.0: # %entry632; SSE2-NEXT:    movdqa %xmm0, %xmm4633; SSE2-NEXT:    pcmpgtb %xmm2, %xmm4634; SSE2-NEXT:    pand %xmm4, %xmm0635; SSE2-NEXT:    pandn %xmm2, %xmm4636; SSE2-NEXT:    por %xmm4, %xmm0637; SSE2-NEXT:    movdqa %xmm1, %xmm2638; SSE2-NEXT:    pcmpgtb %xmm3, %xmm2639; SSE2-NEXT:    pand %xmm2, %xmm1640; SSE2-NEXT:    pandn %xmm3, %xmm2641; SSE2-NEXT:    por %xmm2, %xmm1642; SSE2-NEXT:    retq643;644; SSE4-LABEL: test27:645; SSE4:       # %bb.0: # %entry646; SSE4-NEXT:    pmaxsb %xmm2, %xmm0647; SSE4-NEXT:    pmaxsb %xmm3, %xmm1648; SSE4-NEXT:    retq649;650; AVX1-LABEL: test27:651; AVX1:       # %bb.0: # %entry652; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2653; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3654; AVX1-NEXT:    vpmaxsb %xmm2, %xmm3, %xmm2655; AVX1-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm0656; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0657; AVX1-NEXT:    retq658;659; AVX2-LABEL: test27:660; AVX2:       # %bb.0: # %entry661; AVX2-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm0662; AVX2-NEXT:    retq663;664; AVX512-LABEL: test27:665; AVX512:       # %bb.0: # %entry666; AVX512-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm0667; AVX512-NEXT:    retq668entry:669  %cmp = icmp sgt <32 x i8> %a, %b670  %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b671  ret <32 x i8> %sel672}673 674define <32 x i8> @test28(<32 x i8> %a, <32 x i8> %b) {675; SSE2-LABEL: test28:676; SSE2:       # %bb.0: # %entry677; SSE2-NEXT:    movdqa %xmm0, %xmm4678; SSE2-NEXT:    pcmpgtb %xmm2, %xmm4679; SSE2-NEXT:    pand %xmm4, %xmm0680; SSE2-NEXT:    pandn %xmm2, %xmm4681; SSE2-NEXT:    por %xmm4, %xmm0682; SSE2-NEXT:    movdqa %xmm1, %xmm2683; SSE2-NEXT:    pcmpgtb %xmm3, %xmm2684; SSE2-NEXT:    pand %xmm2, %xmm1685; SSE2-NEXT:    pandn %xmm3, %xmm2686; SSE2-NEXT:    por %xmm2, %xmm1687; SSE2-NEXT:    retq688;689; SSE4-LABEL: test28:690; SSE4:       # %bb.0: # %entry691; SSE4-NEXT:    pmaxsb %xmm2, %xmm0692; SSE4-NEXT:    pmaxsb %xmm3, %xmm1693; SSE4-NEXT:    retq694;695; AVX1-LABEL: test28:696; AVX1:       # %bb.0: # %entry697; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2698; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3699; AVX1-NEXT:    vpmaxsb %xmm2, %xmm3, %xmm2700; AVX1-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm0701; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0702; AVX1-NEXT:    retq703;704; AVX2-LABEL: test28:705; AVX2:       # %bb.0: # %entry706; AVX2-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm0707; AVX2-NEXT:    retq708;709; AVX512-LABEL: test28:710; AVX512:       # %bb.0: # %entry711; AVX512-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm0712; AVX512-NEXT:    retq713entry:714  %cmp = icmp sge <32 x i8> %a, %b715  %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b716  ret <32 x i8> %sel717}718 719define <32 x i8> @test29(<32 x i8> %a, <32 x i8> %b) {720; SSE-LABEL: test29:721; SSE:       # %bb.0: # %entry722; SSE-NEXT:    pminub %xmm2, %xmm0723; SSE-NEXT:    pminub %xmm3, %xmm1724; SSE-NEXT:    retq725;726; AVX1-LABEL: test29:727; AVX1:       # %bb.0: # %entry728; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2729; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3730; AVX1-NEXT:    vpminub %xmm2, %xmm3, %xmm2731; AVX1-NEXT:    vpminub %xmm1, %xmm0, %xmm0732; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0733; AVX1-NEXT:    retq734;735; AVX2-LABEL: test29:736; AVX2:       # %bb.0: # %entry737; AVX2-NEXT:    vpminub %ymm1, %ymm0, %ymm0738; AVX2-NEXT:    retq739;740; AVX512-LABEL: test29:741; AVX512:       # %bb.0: # %entry742; AVX512-NEXT:    vpminub %ymm1, %ymm0, %ymm0743; AVX512-NEXT:    retq744entry:745  %cmp = icmp ult <32 x i8> %a, %b746  %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b747  ret <32 x i8> %sel748}749 750define <32 x i8> @test30(<32 x i8> %a, <32 x i8> %b) {751; SSE-LABEL: test30:752; SSE:       # %bb.0: # %entry753; SSE-NEXT:    pminub %xmm2, %xmm0754; SSE-NEXT:    pminub %xmm3, %xmm1755; SSE-NEXT:    retq756;757; AVX1-LABEL: test30:758; AVX1:       # %bb.0: # %entry759; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2760; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3761; AVX1-NEXT:    vpminub %xmm2, %xmm3, %xmm2762; AVX1-NEXT:    vpminub %xmm1, %xmm0, %xmm0763; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0764; AVX1-NEXT:    retq765;766; AVX2-LABEL: test30:767; AVX2:       # %bb.0: # %entry768; AVX2-NEXT:    vpminub %ymm1, %ymm0, %ymm0769; AVX2-NEXT:    retq770;771; AVX512-LABEL: test30:772; AVX512:       # %bb.0: # %entry773; AVX512-NEXT:    vpminub %ymm1, %ymm0, %ymm0774; AVX512-NEXT:    retq775entry:776  %cmp = icmp ule <32 x i8> %a, %b777  %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b778  ret <32 x i8> %sel779}780 781define <32 x i8> @test31(<32 x i8> %a, <32 x i8> %b) {782; SSE-LABEL: test31:783; SSE:       # %bb.0: # %entry784; SSE-NEXT:    pmaxub %xmm2, %xmm0785; SSE-NEXT:    pmaxub %xmm3, %xmm1786; SSE-NEXT:    retq787;788; AVX1-LABEL: test31:789; AVX1:       # %bb.0: # %entry790; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2791; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3792; AVX1-NEXT:    vpmaxub %xmm2, %xmm3, %xmm2793; AVX1-NEXT:    vpmaxub %xmm1, %xmm0, %xmm0794; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0795; AVX1-NEXT:    retq796;797; AVX2-LABEL: test31:798; AVX2:       # %bb.0: # %entry799; AVX2-NEXT:    vpmaxub %ymm1, %ymm0, %ymm0800; AVX2-NEXT:    retq801;802; AVX512-LABEL: test31:803; AVX512:       # %bb.0: # %entry804; AVX512-NEXT:    vpmaxub %ymm1, %ymm0, %ymm0805; AVX512-NEXT:    retq806entry:807  %cmp = icmp ugt <32 x i8> %a, %b808  %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b809  ret <32 x i8> %sel810}811 812define <32 x i8> @test32(<32 x i8> %a, <32 x i8> %b) {813; SSE-LABEL: test32:814; SSE:       # %bb.0: # %entry815; SSE-NEXT:    pmaxub %xmm2, %xmm0816; SSE-NEXT:    pmaxub %xmm3, %xmm1817; SSE-NEXT:    retq818;819; AVX1-LABEL: test32:820; AVX1:       # %bb.0: # %entry821; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2822; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3823; AVX1-NEXT:    vpmaxub %xmm2, %xmm3, %xmm2824; AVX1-NEXT:    vpmaxub %xmm1, %xmm0, %xmm0825; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0826; AVX1-NEXT:    retq827;828; AVX2-LABEL: test32:829; AVX2:       # %bb.0: # %entry830; AVX2-NEXT:    vpmaxub %ymm1, %ymm0, %ymm0831; AVX2-NEXT:    retq832;833; AVX512-LABEL: test32:834; AVX512:       # %bb.0: # %entry835; AVX512-NEXT:    vpmaxub %ymm1, %ymm0, %ymm0836; AVX512-NEXT:    retq837entry:838  %cmp = icmp uge <32 x i8> %a, %b839  %sel = select <32 x i1> %cmp, <32 x i8> %a, <32 x i8> %b840  ret <32 x i8> %sel841}842 843define <16 x i16> @test33(<16 x i16> %a, <16 x i16> %b) {844; SSE-LABEL: test33:845; SSE:       # %bb.0: # %entry846; SSE-NEXT:    pminsw %xmm2, %xmm0847; SSE-NEXT:    pminsw %xmm3, %xmm1848; SSE-NEXT:    retq849;850; AVX1-LABEL: test33:851; AVX1:       # %bb.0: # %entry852; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2853; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3854; AVX1-NEXT:    vpminsw %xmm2, %xmm3, %xmm2855; AVX1-NEXT:    vpminsw %xmm1, %xmm0, %xmm0856; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0857; AVX1-NEXT:    retq858;859; AVX2-LABEL: test33:860; AVX2:       # %bb.0: # %entry861; AVX2-NEXT:    vpminsw %ymm1, %ymm0, %ymm0862; AVX2-NEXT:    retq863;864; AVX512-LABEL: test33:865; AVX512:       # %bb.0: # %entry866; AVX512-NEXT:    vpminsw %ymm1, %ymm0, %ymm0867; AVX512-NEXT:    retq868entry:869  %cmp = icmp slt <16 x i16> %a, %b870  %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b871  ret <16 x i16> %sel872}873 874define <16 x i16> @test34(<16 x i16> %a, <16 x i16> %b) {875; SSE-LABEL: test34:876; SSE:       # %bb.0: # %entry877; SSE-NEXT:    pminsw %xmm2, %xmm0878; SSE-NEXT:    pminsw %xmm3, %xmm1879; SSE-NEXT:    retq880;881; AVX1-LABEL: test34:882; AVX1:       # %bb.0: # %entry883; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2884; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3885; AVX1-NEXT:    vpminsw %xmm2, %xmm3, %xmm2886; AVX1-NEXT:    vpminsw %xmm1, %xmm0, %xmm0887; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0888; AVX1-NEXT:    retq889;890; AVX2-LABEL: test34:891; AVX2:       # %bb.0: # %entry892; AVX2-NEXT:    vpminsw %ymm1, %ymm0, %ymm0893; AVX2-NEXT:    retq894;895; AVX512-LABEL: test34:896; AVX512:       # %bb.0: # %entry897; AVX512-NEXT:    vpminsw %ymm1, %ymm0, %ymm0898; AVX512-NEXT:    retq899entry:900  %cmp = icmp sle <16 x i16> %a, %b901  %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b902  ret <16 x i16> %sel903}904 905define <16 x i16> @test35(<16 x i16> %a, <16 x i16> %b) {906; SSE-LABEL: test35:907; SSE:       # %bb.0: # %entry908; SSE-NEXT:    pmaxsw %xmm2, %xmm0909; SSE-NEXT:    pmaxsw %xmm3, %xmm1910; SSE-NEXT:    retq911;912; AVX1-LABEL: test35:913; AVX1:       # %bb.0: # %entry914; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2915; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3916; AVX1-NEXT:    vpmaxsw %xmm2, %xmm3, %xmm2917; AVX1-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0918; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0919; AVX1-NEXT:    retq920;921; AVX2-LABEL: test35:922; AVX2:       # %bb.0: # %entry923; AVX2-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm0924; AVX2-NEXT:    retq925;926; AVX512-LABEL: test35:927; AVX512:       # %bb.0: # %entry928; AVX512-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm0929; AVX512-NEXT:    retq930entry:931  %cmp = icmp sgt <16 x i16> %a, %b932  %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b933  ret <16 x i16> %sel934}935 936define <16 x i16> @test36(<16 x i16> %a, <16 x i16> %b) {937; SSE-LABEL: test36:938; SSE:       # %bb.0: # %entry939; SSE-NEXT:    pmaxsw %xmm2, %xmm0940; SSE-NEXT:    pmaxsw %xmm3, %xmm1941; SSE-NEXT:    retq942;943; AVX1-LABEL: test36:944; AVX1:       # %bb.0: # %entry945; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2946; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3947; AVX1-NEXT:    vpmaxsw %xmm2, %xmm3, %xmm2948; AVX1-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm0949; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0950; AVX1-NEXT:    retq951;952; AVX2-LABEL: test36:953; AVX2:       # %bb.0: # %entry954; AVX2-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm0955; AVX2-NEXT:    retq956;957; AVX512-LABEL: test36:958; AVX512:       # %bb.0: # %entry959; AVX512-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm0960; AVX512-NEXT:    retq961entry:962  %cmp = icmp sge <16 x i16> %a, %b963  %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b964  ret <16 x i16> %sel965}966 967define <16 x i16> @test37(<16 x i16> %a, <16 x i16> %b) {968; SSE2-LABEL: test37:969; SSE2:       # %bb.0: # %entry970; SSE2-NEXT:    movdqa %xmm0, %xmm4971; SSE2-NEXT:    psubusw %xmm2, %xmm4972; SSE2-NEXT:    psubw %xmm4, %xmm0973; SSE2-NEXT:    movdqa %xmm1, %xmm2974; SSE2-NEXT:    psubusw %xmm3, %xmm2975; SSE2-NEXT:    psubw %xmm2, %xmm1976; SSE2-NEXT:    retq977;978; SSE4-LABEL: test37:979; SSE4:       # %bb.0: # %entry980; SSE4-NEXT:    pminuw %xmm2, %xmm0981; SSE4-NEXT:    pminuw %xmm3, %xmm1982; SSE4-NEXT:    retq983;984; AVX1-LABEL: test37:985; AVX1:       # %bb.0: # %entry986; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm2987; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm3988; AVX1-NEXT:    vpminuw %xmm2, %xmm3, %xmm2989; AVX1-NEXT:    vpminuw %xmm1, %xmm0, %xmm0990; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm0991; AVX1-NEXT:    retq992;993; AVX2-LABEL: test37:994; AVX2:       # %bb.0: # %entry995; AVX2-NEXT:    vpminuw %ymm1, %ymm0, %ymm0996; AVX2-NEXT:    retq997;998; AVX512-LABEL: test37:999; AVX512:       # %bb.0: # %entry1000; AVX512-NEXT:    vpminuw %ymm1, %ymm0, %ymm01001; AVX512-NEXT:    retq1002entry:1003  %cmp = icmp ult <16 x i16> %a, %b1004  %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b1005  ret <16 x i16> %sel1006}1007 1008define <16 x i16> @test38(<16 x i16> %a, <16 x i16> %b) {1009; SSE2-LABEL: test38:1010; SSE2:       # %bb.0: # %entry1011; SSE2-NEXT:    movdqa %xmm0, %xmm41012; SSE2-NEXT:    psubusw %xmm2, %xmm41013; SSE2-NEXT:    psubw %xmm4, %xmm01014; SSE2-NEXT:    movdqa %xmm1, %xmm21015; SSE2-NEXT:    psubusw %xmm3, %xmm21016; SSE2-NEXT:    psubw %xmm2, %xmm11017; SSE2-NEXT:    retq1018;1019; SSE4-LABEL: test38:1020; SSE4:       # %bb.0: # %entry1021; SSE4-NEXT:    pminuw %xmm2, %xmm01022; SSE4-NEXT:    pminuw %xmm3, %xmm11023; SSE4-NEXT:    retq1024;1025; AVX1-LABEL: test38:1026; AVX1:       # %bb.0: # %entry1027; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21028; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31029; AVX1-NEXT:    vpminuw %xmm2, %xmm3, %xmm21030; AVX1-NEXT:    vpminuw %xmm1, %xmm0, %xmm01031; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01032; AVX1-NEXT:    retq1033;1034; AVX2-LABEL: test38:1035; AVX2:       # %bb.0: # %entry1036; AVX2-NEXT:    vpminuw %ymm1, %ymm0, %ymm01037; AVX2-NEXT:    retq1038;1039; AVX512-LABEL: test38:1040; AVX512:       # %bb.0: # %entry1041; AVX512-NEXT:    vpminuw %ymm1, %ymm0, %ymm01042; AVX512-NEXT:    retq1043entry:1044  %cmp = icmp ule <16 x i16> %a, %b1045  %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b1046  ret <16 x i16> %sel1047}1048 1049define <16 x i16> @test39(<16 x i16> %a, <16 x i16> %b) {1050; SSE2-LABEL: test39:1051; SSE2:       # %bb.0: # %entry1052; SSE2-NEXT:    psubusw %xmm0, %xmm21053; SSE2-NEXT:    paddw %xmm2, %xmm01054; SSE2-NEXT:    psubusw %xmm1, %xmm31055; SSE2-NEXT:    paddw %xmm3, %xmm11056; SSE2-NEXT:    retq1057;1058; SSE4-LABEL: test39:1059; SSE4:       # %bb.0: # %entry1060; SSE4-NEXT:    pmaxuw %xmm2, %xmm01061; SSE4-NEXT:    pmaxuw %xmm3, %xmm11062; SSE4-NEXT:    retq1063;1064; AVX1-LABEL: test39:1065; AVX1:       # %bb.0: # %entry1066; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21067; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31068; AVX1-NEXT:    vpmaxuw %xmm2, %xmm3, %xmm21069; AVX1-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm01070; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01071; AVX1-NEXT:    retq1072;1073; AVX2-LABEL: test39:1074; AVX2:       # %bb.0: # %entry1075; AVX2-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm01076; AVX2-NEXT:    retq1077;1078; AVX512-LABEL: test39:1079; AVX512:       # %bb.0: # %entry1080; AVX512-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm01081; AVX512-NEXT:    retq1082entry:1083  %cmp = icmp ugt <16 x i16> %a, %b1084  %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b1085  ret <16 x i16> %sel1086}1087 1088define <16 x i16> @test40(<16 x i16> %a, <16 x i16> %b) {1089; SSE2-LABEL: test40:1090; SSE2:       # %bb.0: # %entry1091; SSE2-NEXT:    psubusw %xmm0, %xmm21092; SSE2-NEXT:    paddw %xmm2, %xmm01093; SSE2-NEXT:    psubusw %xmm1, %xmm31094; SSE2-NEXT:    paddw %xmm3, %xmm11095; SSE2-NEXT:    retq1096;1097; SSE4-LABEL: test40:1098; SSE4:       # %bb.0: # %entry1099; SSE4-NEXT:    pmaxuw %xmm2, %xmm01100; SSE4-NEXT:    pmaxuw %xmm3, %xmm11101; SSE4-NEXT:    retq1102;1103; AVX1-LABEL: test40:1104; AVX1:       # %bb.0: # %entry1105; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21106; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31107; AVX1-NEXT:    vpmaxuw %xmm2, %xmm3, %xmm21108; AVX1-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm01109; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01110; AVX1-NEXT:    retq1111;1112; AVX2-LABEL: test40:1113; AVX2:       # %bb.0: # %entry1114; AVX2-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm01115; AVX2-NEXT:    retq1116;1117; AVX512-LABEL: test40:1118; AVX512:       # %bb.0: # %entry1119; AVX512-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm01120; AVX512-NEXT:    retq1121entry:1122  %cmp = icmp uge <16 x i16> %a, %b1123  %sel = select <16 x i1> %cmp, <16 x i16> %a, <16 x i16> %b1124  ret <16 x i16> %sel1125}1126 1127define <8 x i32> @test41(<8 x i32> %a, <8 x i32> %b) {1128; SSE2-LABEL: test41:1129; SSE2:       # %bb.0: # %entry1130; SSE2-NEXT:    movdqa %xmm2, %xmm41131; SSE2-NEXT:    pcmpgtd %xmm0, %xmm41132; SSE2-NEXT:    pand %xmm4, %xmm01133; SSE2-NEXT:    pandn %xmm2, %xmm41134; SSE2-NEXT:    por %xmm4, %xmm01135; SSE2-NEXT:    movdqa %xmm3, %xmm21136; SSE2-NEXT:    pcmpgtd %xmm1, %xmm21137; SSE2-NEXT:    pand %xmm2, %xmm11138; SSE2-NEXT:    pandn %xmm3, %xmm21139; SSE2-NEXT:    por %xmm2, %xmm11140; SSE2-NEXT:    retq1141;1142; SSE4-LABEL: test41:1143; SSE4:       # %bb.0: # %entry1144; SSE4-NEXT:    pminsd %xmm2, %xmm01145; SSE4-NEXT:    pminsd %xmm3, %xmm11146; SSE4-NEXT:    retq1147;1148; AVX1-LABEL: test41:1149; AVX1:       # %bb.0: # %entry1150; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21151; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31152; AVX1-NEXT:    vpminsd %xmm2, %xmm3, %xmm21153; AVX1-NEXT:    vpminsd %xmm1, %xmm0, %xmm01154; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01155; AVX1-NEXT:    retq1156;1157; AVX2-LABEL: test41:1158; AVX2:       # %bb.0: # %entry1159; AVX2-NEXT:    vpminsd %ymm1, %ymm0, %ymm01160; AVX2-NEXT:    retq1161;1162; AVX512-LABEL: test41:1163; AVX512:       # %bb.0: # %entry1164; AVX512-NEXT:    vpminsd %ymm1, %ymm0, %ymm01165; AVX512-NEXT:    retq1166entry:1167  %cmp = icmp slt <8 x i32> %a, %b1168  %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b1169  ret <8 x i32> %sel1170}1171 1172define <8 x i32> @test42(<8 x i32> %a, <8 x i32> %b) {1173; SSE2-LABEL: test42:1174; SSE2:       # %bb.0: # %entry1175; SSE2-NEXT:    movdqa %xmm2, %xmm41176; SSE2-NEXT:    pcmpgtd %xmm0, %xmm41177; SSE2-NEXT:    pand %xmm4, %xmm01178; SSE2-NEXT:    pandn %xmm2, %xmm41179; SSE2-NEXT:    por %xmm4, %xmm01180; SSE2-NEXT:    movdqa %xmm3, %xmm21181; SSE2-NEXT:    pcmpgtd %xmm1, %xmm21182; SSE2-NEXT:    pand %xmm2, %xmm11183; SSE2-NEXT:    pandn %xmm3, %xmm21184; SSE2-NEXT:    por %xmm2, %xmm11185; SSE2-NEXT:    retq1186;1187; SSE4-LABEL: test42:1188; SSE4:       # %bb.0: # %entry1189; SSE4-NEXT:    pminsd %xmm2, %xmm01190; SSE4-NEXT:    pminsd %xmm3, %xmm11191; SSE4-NEXT:    retq1192;1193; AVX1-LABEL: test42:1194; AVX1:       # %bb.0: # %entry1195; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21196; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31197; AVX1-NEXT:    vpminsd %xmm2, %xmm3, %xmm21198; AVX1-NEXT:    vpminsd %xmm1, %xmm0, %xmm01199; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01200; AVX1-NEXT:    retq1201;1202; AVX2-LABEL: test42:1203; AVX2:       # %bb.0: # %entry1204; AVX2-NEXT:    vpminsd %ymm1, %ymm0, %ymm01205; AVX2-NEXT:    retq1206;1207; AVX512-LABEL: test42:1208; AVX512:       # %bb.0: # %entry1209; AVX512-NEXT:    vpminsd %ymm1, %ymm0, %ymm01210; AVX512-NEXT:    retq1211entry:1212  %cmp = icmp sle <8 x i32> %a, %b1213  %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b1214  ret <8 x i32> %sel1215}1216 1217define <8 x i32> @test43(<8 x i32> %a, <8 x i32> %b) {1218; SSE2-LABEL: test43:1219; SSE2:       # %bb.0: # %entry1220; SSE2-NEXT:    movdqa %xmm0, %xmm41221; SSE2-NEXT:    pcmpgtd %xmm2, %xmm41222; SSE2-NEXT:    pand %xmm4, %xmm01223; SSE2-NEXT:    pandn %xmm2, %xmm41224; SSE2-NEXT:    por %xmm4, %xmm01225; SSE2-NEXT:    movdqa %xmm1, %xmm21226; SSE2-NEXT:    pcmpgtd %xmm3, %xmm21227; SSE2-NEXT:    pand %xmm2, %xmm11228; SSE2-NEXT:    pandn %xmm3, %xmm21229; SSE2-NEXT:    por %xmm2, %xmm11230; SSE2-NEXT:    retq1231;1232; SSE4-LABEL: test43:1233; SSE4:       # %bb.0: # %entry1234; SSE4-NEXT:    pmaxsd %xmm2, %xmm01235; SSE4-NEXT:    pmaxsd %xmm3, %xmm11236; SSE4-NEXT:    retq1237;1238; AVX1-LABEL: test43:1239; AVX1:       # %bb.0: # %entry1240; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21241; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31242; AVX1-NEXT:    vpmaxsd %xmm2, %xmm3, %xmm21243; AVX1-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm01244; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01245; AVX1-NEXT:    retq1246;1247; AVX2-LABEL: test43:1248; AVX2:       # %bb.0: # %entry1249; AVX2-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm01250; AVX2-NEXT:    retq1251;1252; AVX512-LABEL: test43:1253; AVX512:       # %bb.0: # %entry1254; AVX512-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm01255; AVX512-NEXT:    retq1256entry:1257  %cmp = icmp sgt <8 x i32> %a, %b1258  %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b1259  ret <8 x i32> %sel1260}1261 1262define <8 x i32> @test44(<8 x i32> %a, <8 x i32> %b) {1263; SSE2-LABEL: test44:1264; SSE2:       # %bb.0: # %entry1265; SSE2-NEXT:    movdqa %xmm0, %xmm41266; SSE2-NEXT:    pcmpgtd %xmm2, %xmm41267; SSE2-NEXT:    pand %xmm4, %xmm01268; SSE2-NEXT:    pandn %xmm2, %xmm41269; SSE2-NEXT:    por %xmm4, %xmm01270; SSE2-NEXT:    movdqa %xmm1, %xmm21271; SSE2-NEXT:    pcmpgtd %xmm3, %xmm21272; SSE2-NEXT:    pand %xmm2, %xmm11273; SSE2-NEXT:    pandn %xmm3, %xmm21274; SSE2-NEXT:    por %xmm2, %xmm11275; SSE2-NEXT:    retq1276;1277; SSE4-LABEL: test44:1278; SSE4:       # %bb.0: # %entry1279; SSE4-NEXT:    pmaxsd %xmm2, %xmm01280; SSE4-NEXT:    pmaxsd %xmm3, %xmm11281; SSE4-NEXT:    retq1282;1283; AVX1-LABEL: test44:1284; AVX1:       # %bb.0: # %entry1285; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21286; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31287; AVX1-NEXT:    vpmaxsd %xmm2, %xmm3, %xmm21288; AVX1-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm01289; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01290; AVX1-NEXT:    retq1291;1292; AVX2-LABEL: test44:1293; AVX2:       # %bb.0: # %entry1294; AVX2-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm01295; AVX2-NEXT:    retq1296;1297; AVX512-LABEL: test44:1298; AVX512:       # %bb.0: # %entry1299; AVX512-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm01300; AVX512-NEXT:    retq1301entry:1302  %cmp = icmp sge <8 x i32> %a, %b1303  %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b1304  ret <8 x i32> %sel1305}1306 1307define <8 x i32> @test45(<8 x i32> %a, <8 x i32> %b) {1308; SSE2-LABEL: test45:1309; SSE2:       # %bb.0: # %entry1310; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]1311; SSE2-NEXT:    movdqa %xmm0, %xmm51312; SSE2-NEXT:    pxor %xmm4, %xmm51313; SSE2-NEXT:    movdqa %xmm2, %xmm61314; SSE2-NEXT:    pxor %xmm4, %xmm61315; SSE2-NEXT:    pcmpgtd %xmm5, %xmm61316; SSE2-NEXT:    pand %xmm6, %xmm01317; SSE2-NEXT:    pandn %xmm2, %xmm61318; SSE2-NEXT:    por %xmm6, %xmm01319; SSE2-NEXT:    movdqa %xmm1, %xmm21320; SSE2-NEXT:    pxor %xmm4, %xmm21321; SSE2-NEXT:    pxor %xmm3, %xmm41322; SSE2-NEXT:    pcmpgtd %xmm2, %xmm41323; SSE2-NEXT:    pand %xmm4, %xmm11324; SSE2-NEXT:    pandn %xmm3, %xmm41325; SSE2-NEXT:    por %xmm4, %xmm11326; SSE2-NEXT:    retq1327;1328; SSE4-LABEL: test45:1329; SSE4:       # %bb.0: # %entry1330; SSE4-NEXT:    pminud %xmm2, %xmm01331; SSE4-NEXT:    pminud %xmm3, %xmm11332; SSE4-NEXT:    retq1333;1334; AVX1-LABEL: test45:1335; AVX1:       # %bb.0: # %entry1336; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21337; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31338; AVX1-NEXT:    vpminud %xmm2, %xmm3, %xmm21339; AVX1-NEXT:    vpminud %xmm1, %xmm0, %xmm01340; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01341; AVX1-NEXT:    retq1342;1343; AVX2-LABEL: test45:1344; AVX2:       # %bb.0: # %entry1345; AVX2-NEXT:    vpminud %ymm1, %ymm0, %ymm01346; AVX2-NEXT:    retq1347;1348; AVX512-LABEL: test45:1349; AVX512:       # %bb.0: # %entry1350; AVX512-NEXT:    vpminud %ymm1, %ymm0, %ymm01351; AVX512-NEXT:    retq1352entry:1353  %cmp = icmp ult <8 x i32> %a, %b1354  %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b1355  ret <8 x i32> %sel1356}1357 1358define <8 x i32> @test46(<8 x i32> %a, <8 x i32> %b) {1359; SSE2-LABEL: test46:1360; SSE2:       # %bb.0: # %entry1361; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]1362; SSE2-NEXT:    movdqa %xmm0, %xmm51363; SSE2-NEXT:    pxor %xmm4, %xmm51364; SSE2-NEXT:    movdqa %xmm2, %xmm61365; SSE2-NEXT:    pxor %xmm4, %xmm61366; SSE2-NEXT:    pcmpgtd %xmm5, %xmm61367; SSE2-NEXT:    pand %xmm6, %xmm01368; SSE2-NEXT:    pandn %xmm2, %xmm61369; SSE2-NEXT:    por %xmm6, %xmm01370; SSE2-NEXT:    movdqa %xmm1, %xmm21371; SSE2-NEXT:    pxor %xmm4, %xmm21372; SSE2-NEXT:    pxor %xmm3, %xmm41373; SSE2-NEXT:    pcmpgtd %xmm2, %xmm41374; SSE2-NEXT:    pand %xmm4, %xmm11375; SSE2-NEXT:    pandn %xmm3, %xmm41376; SSE2-NEXT:    por %xmm4, %xmm11377; SSE2-NEXT:    retq1378;1379; SSE4-LABEL: test46:1380; SSE4:       # %bb.0: # %entry1381; SSE4-NEXT:    pminud %xmm2, %xmm01382; SSE4-NEXT:    pminud %xmm3, %xmm11383; SSE4-NEXT:    retq1384;1385; AVX1-LABEL: test46:1386; AVX1:       # %bb.0: # %entry1387; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21388; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31389; AVX1-NEXT:    vpminud %xmm2, %xmm3, %xmm21390; AVX1-NEXT:    vpminud %xmm1, %xmm0, %xmm01391; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01392; AVX1-NEXT:    retq1393;1394; AVX2-LABEL: test46:1395; AVX2:       # %bb.0: # %entry1396; AVX2-NEXT:    vpminud %ymm1, %ymm0, %ymm01397; AVX2-NEXT:    retq1398;1399; AVX512-LABEL: test46:1400; AVX512:       # %bb.0: # %entry1401; AVX512-NEXT:    vpminud %ymm1, %ymm0, %ymm01402; AVX512-NEXT:    retq1403entry:1404  %cmp = icmp ule <8 x i32> %a, %b1405  %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b1406  ret <8 x i32> %sel1407}1408 1409define <8 x i32> @test47(<8 x i32> %a, <8 x i32> %b) {1410; SSE2-LABEL: test47:1411; SSE2:       # %bb.0: # %entry1412; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]1413; SSE2-NEXT:    movdqa %xmm2, %xmm51414; SSE2-NEXT:    pxor %xmm4, %xmm51415; SSE2-NEXT:    movdqa %xmm0, %xmm61416; SSE2-NEXT:    pxor %xmm4, %xmm61417; SSE2-NEXT:    pcmpgtd %xmm5, %xmm61418; SSE2-NEXT:    pand %xmm6, %xmm01419; SSE2-NEXT:    pandn %xmm2, %xmm61420; SSE2-NEXT:    por %xmm6, %xmm01421; SSE2-NEXT:    movdqa %xmm3, %xmm21422; SSE2-NEXT:    pxor %xmm4, %xmm21423; SSE2-NEXT:    pxor %xmm1, %xmm41424; SSE2-NEXT:    pcmpgtd %xmm2, %xmm41425; SSE2-NEXT:    pand %xmm4, %xmm11426; SSE2-NEXT:    pandn %xmm3, %xmm41427; SSE2-NEXT:    por %xmm4, %xmm11428; SSE2-NEXT:    retq1429;1430; SSE4-LABEL: test47:1431; SSE4:       # %bb.0: # %entry1432; SSE4-NEXT:    pmaxud %xmm2, %xmm01433; SSE4-NEXT:    pmaxud %xmm3, %xmm11434; SSE4-NEXT:    retq1435;1436; AVX1-LABEL: test47:1437; AVX1:       # %bb.0: # %entry1438; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21439; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31440; AVX1-NEXT:    vpmaxud %xmm2, %xmm3, %xmm21441; AVX1-NEXT:    vpmaxud %xmm1, %xmm0, %xmm01442; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01443; AVX1-NEXT:    retq1444;1445; AVX2-LABEL: test47:1446; AVX2:       # %bb.0: # %entry1447; AVX2-NEXT:    vpmaxud %ymm1, %ymm0, %ymm01448; AVX2-NEXT:    retq1449;1450; AVX512-LABEL: test47:1451; AVX512:       # %bb.0: # %entry1452; AVX512-NEXT:    vpmaxud %ymm1, %ymm0, %ymm01453; AVX512-NEXT:    retq1454entry:1455  %cmp = icmp ugt <8 x i32> %a, %b1456  %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b1457  ret <8 x i32> %sel1458}1459 1460define <8 x i32> @test48(<8 x i32> %a, <8 x i32> %b) {1461; SSE2-LABEL: test48:1462; SSE2:       # %bb.0: # %entry1463; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]1464; SSE2-NEXT:    movdqa %xmm2, %xmm51465; SSE2-NEXT:    pxor %xmm4, %xmm51466; SSE2-NEXT:    movdqa %xmm0, %xmm61467; SSE2-NEXT:    pxor %xmm4, %xmm61468; SSE2-NEXT:    pcmpgtd %xmm5, %xmm61469; SSE2-NEXT:    pand %xmm6, %xmm01470; SSE2-NEXT:    pandn %xmm2, %xmm61471; SSE2-NEXT:    por %xmm6, %xmm01472; SSE2-NEXT:    movdqa %xmm3, %xmm21473; SSE2-NEXT:    pxor %xmm4, %xmm21474; SSE2-NEXT:    pxor %xmm1, %xmm41475; SSE2-NEXT:    pcmpgtd %xmm2, %xmm41476; SSE2-NEXT:    pand %xmm4, %xmm11477; SSE2-NEXT:    pandn %xmm3, %xmm41478; SSE2-NEXT:    por %xmm4, %xmm11479; SSE2-NEXT:    retq1480;1481; SSE4-LABEL: test48:1482; SSE4:       # %bb.0: # %entry1483; SSE4-NEXT:    pmaxud %xmm2, %xmm01484; SSE4-NEXT:    pmaxud %xmm3, %xmm11485; SSE4-NEXT:    retq1486;1487; AVX1-LABEL: test48:1488; AVX1:       # %bb.0: # %entry1489; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm21490; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm31491; AVX1-NEXT:    vpmaxud %xmm2, %xmm3, %xmm21492; AVX1-NEXT:    vpmaxud %xmm1, %xmm0, %xmm01493; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm01494; AVX1-NEXT:    retq1495;1496; AVX2-LABEL: test48:1497; AVX2:       # %bb.0: # %entry1498; AVX2-NEXT:    vpmaxud %ymm1, %ymm0, %ymm01499; AVX2-NEXT:    retq1500;1501; AVX512-LABEL: test48:1502; AVX512:       # %bb.0: # %entry1503; AVX512-NEXT:    vpmaxud %ymm1, %ymm0, %ymm01504; AVX512-NEXT:    retq1505entry:1506  %cmp = icmp uge <8 x i32> %a, %b1507  %sel = select <8 x i1> %cmp, <8 x i32> %a, <8 x i32> %b1508  ret <8 x i32> %sel1509}1510 1511define <16 x i8> @test49(<16 x i8> %a, <16 x i8> %b) {1512; SSE2-LABEL: test49:1513; SSE2:       # %bb.0: # %entry1514; SSE2-NEXT:    movdqa %xmm0, %xmm21515; SSE2-NEXT:    pcmpgtb %xmm1, %xmm21516; SSE2-NEXT:    pand %xmm2, %xmm01517; SSE2-NEXT:    pandn %xmm1, %xmm21518; SSE2-NEXT:    por %xmm2, %xmm01519; SSE2-NEXT:    retq1520;1521; SSE4-LABEL: test49:1522; SSE4:       # %bb.0: # %entry1523; SSE4-NEXT:    pmaxsb %xmm1, %xmm01524; SSE4-NEXT:    retq1525;1526; AVX-LABEL: test49:1527; AVX:       # %bb.0: # %entry1528; AVX-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm01529; AVX-NEXT:    retq1530entry:1531  %cmp = icmp slt <16 x i8> %a, %b1532  %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a1533  ret <16 x i8> %sel1534}1535 1536define <16 x i8> @test50(<16 x i8> %a, <16 x i8> %b) {1537; SSE2-LABEL: test50:1538; SSE2:       # %bb.0: # %entry1539; SSE2-NEXT:    movdqa %xmm0, %xmm21540; SSE2-NEXT:    pcmpgtb %xmm1, %xmm21541; SSE2-NEXT:    pand %xmm2, %xmm01542; SSE2-NEXT:    pandn %xmm1, %xmm21543; SSE2-NEXT:    por %xmm2, %xmm01544; SSE2-NEXT:    retq1545;1546; SSE4-LABEL: test50:1547; SSE4:       # %bb.0: # %entry1548; SSE4-NEXT:    pmaxsb %xmm1, %xmm01549; SSE4-NEXT:    retq1550;1551; AVX-LABEL: test50:1552; AVX:       # %bb.0: # %entry1553; AVX-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm01554; AVX-NEXT:    retq1555entry:1556  %cmp = icmp sle <16 x i8> %a, %b1557  %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a1558  ret <16 x i8> %sel1559}1560 1561define <16 x i8> @test51(<16 x i8> %a, <16 x i8> %b) {1562; SSE2-LABEL: test51:1563; SSE2:       # %bb.0: # %entry1564; SSE2-NEXT:    movdqa %xmm1, %xmm21565; SSE2-NEXT:    pcmpgtb %xmm0, %xmm21566; SSE2-NEXT:    pand %xmm2, %xmm01567; SSE2-NEXT:    pandn %xmm1, %xmm21568; SSE2-NEXT:    por %xmm2, %xmm01569; SSE2-NEXT:    retq1570;1571; SSE4-LABEL: test51:1572; SSE4:       # %bb.0: # %entry1573; SSE4-NEXT:    pminsb %xmm1, %xmm01574; SSE4-NEXT:    retq1575;1576; AVX-LABEL: test51:1577; AVX:       # %bb.0: # %entry1578; AVX-NEXT:    vpminsb %xmm1, %xmm0, %xmm01579; AVX-NEXT:    retq1580entry:1581  %cmp = icmp sgt <16 x i8> %a, %b1582  %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a1583  ret <16 x i8> %sel1584}1585 1586define <16 x i8> @test52(<16 x i8> %a, <16 x i8> %b) {1587; SSE2-LABEL: test52:1588; SSE2:       # %bb.0: # %entry1589; SSE2-NEXT:    movdqa %xmm1, %xmm21590; SSE2-NEXT:    pcmpgtb %xmm0, %xmm21591; SSE2-NEXT:    pand %xmm2, %xmm01592; SSE2-NEXT:    pandn %xmm1, %xmm21593; SSE2-NEXT:    por %xmm2, %xmm01594; SSE2-NEXT:    retq1595;1596; SSE4-LABEL: test52:1597; SSE4:       # %bb.0: # %entry1598; SSE4-NEXT:    pminsb %xmm1, %xmm01599; SSE4-NEXT:    retq1600;1601; AVX-LABEL: test52:1602; AVX:       # %bb.0: # %entry1603; AVX-NEXT:    vpminsb %xmm1, %xmm0, %xmm01604; AVX-NEXT:    retq1605entry:1606  %cmp = icmp sge <16 x i8> %a, %b1607  %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a1608  ret <16 x i8> %sel1609}1610 1611define <16 x i8> @test53(<16 x i8> %a, <16 x i8> %b) {1612; SSE-LABEL: test53:1613; SSE:       # %bb.0: # %entry1614; SSE-NEXT:    pmaxub %xmm1, %xmm01615; SSE-NEXT:    retq1616;1617; AVX-LABEL: test53:1618; AVX:       # %bb.0: # %entry1619; AVX-NEXT:    vpmaxub %xmm1, %xmm0, %xmm01620; AVX-NEXT:    retq1621entry:1622  %cmp = icmp ult <16 x i8> %a, %b1623  %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a1624  ret <16 x i8> %sel1625}1626 1627define <16 x i8> @test54(<16 x i8> %a, <16 x i8> %b) {1628; SSE-LABEL: test54:1629; SSE:       # %bb.0: # %entry1630; SSE-NEXT:    pmaxub %xmm1, %xmm01631; SSE-NEXT:    retq1632;1633; AVX-LABEL: test54:1634; AVX:       # %bb.0: # %entry1635; AVX-NEXT:    vpmaxub %xmm1, %xmm0, %xmm01636; AVX-NEXT:    retq1637entry:1638  %cmp = icmp ule <16 x i8> %a, %b1639  %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a1640  ret <16 x i8> %sel1641}1642 1643define <16 x i8> @test55(<16 x i8> %a, <16 x i8> %b) {1644; SSE-LABEL: test55:1645; SSE:       # %bb.0: # %entry1646; SSE-NEXT:    pminub %xmm1, %xmm01647; SSE-NEXT:    retq1648;1649; AVX-LABEL: test55:1650; AVX:       # %bb.0: # %entry1651; AVX-NEXT:    vpminub %xmm1, %xmm0, %xmm01652; AVX-NEXT:    retq1653entry:1654  %cmp = icmp ugt <16 x i8> %a, %b1655  %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a1656  ret <16 x i8> %sel1657}1658 1659define <16 x i8> @test56(<16 x i8> %a, <16 x i8> %b) {1660; SSE-LABEL: test56:1661; SSE:       # %bb.0: # %entry1662; SSE-NEXT:    pminub %xmm1, %xmm01663; SSE-NEXT:    retq1664;1665; AVX-LABEL: test56:1666; AVX:       # %bb.0: # %entry1667; AVX-NEXT:    vpminub %xmm1, %xmm0, %xmm01668; AVX-NEXT:    retq1669entry:1670  %cmp = icmp uge <16 x i8> %a, %b1671  %sel = select <16 x i1> %cmp, <16 x i8> %b, <16 x i8> %a1672  ret <16 x i8> %sel1673}1674 1675define <8 x i16> @test57(<8 x i16> %a, <8 x i16> %b) {1676; SSE-LABEL: test57:1677; SSE:       # %bb.0: # %entry1678; SSE-NEXT:    pmaxsw %xmm1, %xmm01679; SSE-NEXT:    retq1680;1681; AVX-LABEL: test57:1682; AVX:       # %bb.0: # %entry1683; AVX-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm01684; AVX-NEXT:    retq1685entry:1686  %cmp = icmp slt <8 x i16> %a, %b1687  %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a1688  ret <8 x i16> %sel1689}1690 1691define <8 x i16> @test58(<8 x i16> %a, <8 x i16> %b) {1692; SSE-LABEL: test58:1693; SSE:       # %bb.0: # %entry1694; SSE-NEXT:    pmaxsw %xmm1, %xmm01695; SSE-NEXT:    retq1696;1697; AVX-LABEL: test58:1698; AVX:       # %bb.0: # %entry1699; AVX-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm01700; AVX-NEXT:    retq1701entry:1702  %cmp = icmp sle <8 x i16> %a, %b1703  %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a1704  ret <8 x i16> %sel1705}1706 1707define <8 x i16> @test59(<8 x i16> %a, <8 x i16> %b) {1708; SSE-LABEL: test59:1709; SSE:       # %bb.0: # %entry1710; SSE-NEXT:    pminsw %xmm1, %xmm01711; SSE-NEXT:    retq1712;1713; AVX-LABEL: test59:1714; AVX:       # %bb.0: # %entry1715; AVX-NEXT:    vpminsw %xmm1, %xmm0, %xmm01716; AVX-NEXT:    retq1717entry:1718  %cmp = icmp sgt <8 x i16> %a, %b1719  %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a1720  ret <8 x i16> %sel1721}1722 1723define <8 x i16> @test60(<8 x i16> %a, <8 x i16> %b) {1724; SSE-LABEL: test60:1725; SSE:       # %bb.0: # %entry1726; SSE-NEXT:    pminsw %xmm1, %xmm01727; SSE-NEXT:    retq1728;1729; AVX-LABEL: test60:1730; AVX:       # %bb.0: # %entry1731; AVX-NEXT:    vpminsw %xmm1, %xmm0, %xmm01732; AVX-NEXT:    retq1733entry:1734  %cmp = icmp sge <8 x i16> %a, %b1735  %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a1736  ret <8 x i16> %sel1737}1738 1739define <8 x i16> @test61(<8 x i16> %a, <8 x i16> %b) {1740; SSE2-LABEL: test61:1741; SSE2:       # %bb.0: # %entry1742; SSE2-NEXT:    psubusw %xmm0, %xmm11743; SSE2-NEXT:    paddw %xmm1, %xmm01744; SSE2-NEXT:    retq1745;1746; SSE4-LABEL: test61:1747; SSE4:       # %bb.0: # %entry1748; SSE4-NEXT:    pmaxuw %xmm1, %xmm01749; SSE4-NEXT:    retq1750;1751; AVX-LABEL: test61:1752; AVX:       # %bb.0: # %entry1753; AVX-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm01754; AVX-NEXT:    retq1755entry:1756  %cmp = icmp ult <8 x i16> %a, %b1757  %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a1758  ret <8 x i16> %sel1759}1760 1761define <8 x i16> @test62(<8 x i16> %a, <8 x i16> %b) {1762; SSE2-LABEL: test62:1763; SSE2:       # %bb.0: # %entry1764; SSE2-NEXT:    psubusw %xmm0, %xmm11765; SSE2-NEXT:    paddw %xmm1, %xmm01766; SSE2-NEXT:    retq1767;1768; SSE4-LABEL: test62:1769; SSE4:       # %bb.0: # %entry1770; SSE4-NEXT:    pmaxuw %xmm1, %xmm01771; SSE4-NEXT:    retq1772;1773; AVX-LABEL: test62:1774; AVX:       # %bb.0: # %entry1775; AVX-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm01776; AVX-NEXT:    retq1777entry:1778  %cmp = icmp ule <8 x i16> %a, %b1779  %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a1780  ret <8 x i16> %sel1781}1782 1783define <8 x i16> @test63(<8 x i16> %a, <8 x i16> %b) {1784; SSE2-LABEL: test63:1785; SSE2:       # %bb.0: # %entry1786; SSE2-NEXT:    movdqa %xmm0, %xmm21787; SSE2-NEXT:    psubusw %xmm1, %xmm21788; SSE2-NEXT:    psubw %xmm2, %xmm01789; SSE2-NEXT:    retq1790;1791; SSE4-LABEL: test63:1792; SSE4:       # %bb.0: # %entry1793; SSE4-NEXT:    pminuw %xmm1, %xmm01794; SSE4-NEXT:    retq1795;1796; AVX-LABEL: test63:1797; AVX:       # %bb.0: # %entry1798; AVX-NEXT:    vpminuw %xmm1, %xmm0, %xmm01799; AVX-NEXT:    retq1800entry:1801  %cmp = icmp ugt <8 x i16> %a, %b1802  %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a1803  ret <8 x i16> %sel1804}1805 1806define <8 x i16> @test64(<8 x i16> %a, <8 x i16> %b) {1807; SSE2-LABEL: test64:1808; SSE2:       # %bb.0: # %entry1809; SSE2-NEXT:    movdqa %xmm0, %xmm21810; SSE2-NEXT:    psubusw %xmm1, %xmm21811; SSE2-NEXT:    psubw %xmm2, %xmm01812; SSE2-NEXT:    retq1813;1814; SSE4-LABEL: test64:1815; SSE4:       # %bb.0: # %entry1816; SSE4-NEXT:    pminuw %xmm1, %xmm01817; SSE4-NEXT:    retq1818;1819; AVX-LABEL: test64:1820; AVX:       # %bb.0: # %entry1821; AVX-NEXT:    vpminuw %xmm1, %xmm0, %xmm01822; AVX-NEXT:    retq1823entry:1824  %cmp = icmp uge <8 x i16> %a, %b1825  %sel = select <8 x i1> %cmp, <8 x i16> %b, <8 x i16> %a1826  ret <8 x i16> %sel1827}1828 1829define <4 x i32> @test65(<4 x i32> %a, <4 x i32> %b) {1830; SSE2-LABEL: test65:1831; SSE2:       # %bb.0: # %entry1832; SSE2-NEXT:    movdqa %xmm0, %xmm21833; SSE2-NEXT:    pcmpgtd %xmm1, %xmm21834; SSE2-NEXT:    pand %xmm2, %xmm01835; SSE2-NEXT:    pandn %xmm1, %xmm21836; SSE2-NEXT:    por %xmm2, %xmm01837; SSE2-NEXT:    retq1838;1839; SSE4-LABEL: test65:1840; SSE4:       # %bb.0: # %entry1841; SSE4-NEXT:    pmaxsd %xmm1, %xmm01842; SSE4-NEXT:    retq1843;1844; AVX-LABEL: test65:1845; AVX:       # %bb.0: # %entry1846; AVX-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm01847; AVX-NEXT:    retq1848entry:1849  %cmp = icmp slt <4 x i32> %a, %b1850  %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a1851  ret <4 x i32> %sel1852}1853 1854define <4 x i32> @test66(<4 x i32> %a, <4 x i32> %b) {1855; SSE2-LABEL: test66:1856; SSE2:       # %bb.0: # %entry1857; SSE2-NEXT:    movdqa %xmm0, %xmm21858; SSE2-NEXT:    pcmpgtd %xmm1, %xmm21859; SSE2-NEXT:    pand %xmm2, %xmm01860; SSE2-NEXT:    pandn %xmm1, %xmm21861; SSE2-NEXT:    por %xmm2, %xmm01862; SSE2-NEXT:    retq1863;1864; SSE4-LABEL: test66:1865; SSE4:       # %bb.0: # %entry1866; SSE4-NEXT:    pmaxsd %xmm1, %xmm01867; SSE4-NEXT:    retq1868;1869; AVX-LABEL: test66:1870; AVX:       # %bb.0: # %entry1871; AVX-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm01872; AVX-NEXT:    retq1873entry:1874  %cmp = icmp sle <4 x i32> %a, %b1875  %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a1876  ret <4 x i32> %sel1877}1878 1879define <4 x i32> @test67(<4 x i32> %a, <4 x i32> %b) {1880; SSE2-LABEL: test67:1881; SSE2:       # %bb.0: # %entry1882; SSE2-NEXT:    movdqa %xmm1, %xmm21883; SSE2-NEXT:    pcmpgtd %xmm0, %xmm21884; SSE2-NEXT:    pand %xmm2, %xmm01885; SSE2-NEXT:    pandn %xmm1, %xmm21886; SSE2-NEXT:    por %xmm2, %xmm01887; SSE2-NEXT:    retq1888;1889; SSE4-LABEL: test67:1890; SSE4:       # %bb.0: # %entry1891; SSE4-NEXT:    pminsd %xmm1, %xmm01892; SSE4-NEXT:    retq1893;1894; AVX-LABEL: test67:1895; AVX:       # %bb.0: # %entry1896; AVX-NEXT:    vpminsd %xmm1, %xmm0, %xmm01897; AVX-NEXT:    retq1898entry:1899  %cmp = icmp sgt <4 x i32> %a, %b1900  %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a1901  ret <4 x i32> %sel1902}1903 1904define <4 x i32> @test68(<4 x i32> %a, <4 x i32> %b) {1905; SSE2-LABEL: test68:1906; SSE2:       # %bb.0: # %entry1907; SSE2-NEXT:    movdqa %xmm1, %xmm21908; SSE2-NEXT:    pcmpgtd %xmm0, %xmm21909; SSE2-NEXT:    pand %xmm2, %xmm01910; SSE2-NEXT:    pandn %xmm1, %xmm21911; SSE2-NEXT:    por %xmm2, %xmm01912; SSE2-NEXT:    retq1913;1914; SSE4-LABEL: test68:1915; SSE4:       # %bb.0: # %entry1916; SSE4-NEXT:    pminsd %xmm1, %xmm01917; SSE4-NEXT:    retq1918;1919; AVX-LABEL: test68:1920; AVX:       # %bb.0: # %entry1921; AVX-NEXT:    vpminsd %xmm1, %xmm0, %xmm01922; AVX-NEXT:    retq1923entry:1924  %cmp = icmp sge <4 x i32> %a, %b1925  %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a1926  ret <4 x i32> %sel1927}1928 1929define <4 x i32> @test69(<4 x i32> %a, <4 x i32> %b) {1930; SSE2-LABEL: test69:1931; SSE2:       # %bb.0: # %entry1932; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]1933; SSE2-NEXT:    movdqa %xmm1, %xmm31934; SSE2-NEXT:    pxor %xmm2, %xmm31935; SSE2-NEXT:    pxor %xmm0, %xmm21936; SSE2-NEXT:    pcmpgtd %xmm3, %xmm21937; SSE2-NEXT:    pand %xmm2, %xmm01938; SSE2-NEXT:    pandn %xmm1, %xmm21939; SSE2-NEXT:    por %xmm2, %xmm01940; SSE2-NEXT:    retq1941;1942; SSE4-LABEL: test69:1943; SSE4:       # %bb.0: # %entry1944; SSE4-NEXT:    pmaxud %xmm1, %xmm01945; SSE4-NEXT:    retq1946;1947; AVX-LABEL: test69:1948; AVX:       # %bb.0: # %entry1949; AVX-NEXT:    vpmaxud %xmm1, %xmm0, %xmm01950; AVX-NEXT:    retq1951entry:1952  %cmp = icmp ult <4 x i32> %a, %b1953  %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a1954  ret <4 x i32> %sel1955}1956 1957define <4 x i32> @test70(<4 x i32> %a, <4 x i32> %b) {1958; SSE2-LABEL: test70:1959; SSE2:       # %bb.0: # %entry1960; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]1961; SSE2-NEXT:    movdqa %xmm1, %xmm31962; SSE2-NEXT:    pxor %xmm2, %xmm31963; SSE2-NEXT:    pxor %xmm0, %xmm21964; SSE2-NEXT:    pcmpgtd %xmm3, %xmm21965; SSE2-NEXT:    pand %xmm2, %xmm01966; SSE2-NEXT:    pandn %xmm1, %xmm21967; SSE2-NEXT:    por %xmm2, %xmm01968; SSE2-NEXT:    retq1969;1970; SSE4-LABEL: test70:1971; SSE4:       # %bb.0: # %entry1972; SSE4-NEXT:    pmaxud %xmm1, %xmm01973; SSE4-NEXT:    retq1974;1975; AVX-LABEL: test70:1976; AVX:       # %bb.0: # %entry1977; AVX-NEXT:    vpmaxud %xmm1, %xmm0, %xmm01978; AVX-NEXT:    retq1979entry:1980  %cmp = icmp ule <4 x i32> %a, %b1981  %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a1982  ret <4 x i32> %sel1983}1984 1985define <4 x i32> @test71(<4 x i32> %a, <4 x i32> %b) {1986; SSE2-LABEL: test71:1987; SSE2:       # %bb.0: # %entry1988; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]1989; SSE2-NEXT:    movdqa %xmm0, %xmm31990; SSE2-NEXT:    pxor %xmm2, %xmm31991; SSE2-NEXT:    pxor %xmm1, %xmm21992; SSE2-NEXT:    pcmpgtd %xmm3, %xmm21993; SSE2-NEXT:    pand %xmm2, %xmm01994; SSE2-NEXT:    pandn %xmm1, %xmm21995; SSE2-NEXT:    por %xmm2, %xmm01996; SSE2-NEXT:    retq1997;1998; SSE4-LABEL: test71:1999; SSE4:       # %bb.0: # %entry2000; SSE4-NEXT:    pminud %xmm1, %xmm02001; SSE4-NEXT:    retq2002;2003; AVX-LABEL: test71:2004; AVX:       # %bb.0: # %entry2005; AVX-NEXT:    vpminud %xmm1, %xmm0, %xmm02006; AVX-NEXT:    retq2007entry:2008  %cmp = icmp ugt <4 x i32> %a, %b2009  %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a2010  ret <4 x i32> %sel2011}2012 2013define <4 x i32> @test72(<4 x i32> %a, <4 x i32> %b) {2014; SSE2-LABEL: test72:2015; SSE2:       # %bb.0: # %entry2016; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648,2147483648,2147483648]2017; SSE2-NEXT:    movdqa %xmm0, %xmm32018; SSE2-NEXT:    pxor %xmm2, %xmm32019; SSE2-NEXT:    pxor %xmm1, %xmm22020; SSE2-NEXT:    pcmpgtd %xmm3, %xmm22021; SSE2-NEXT:    pand %xmm2, %xmm02022; SSE2-NEXT:    pandn %xmm1, %xmm22023; SSE2-NEXT:    por %xmm2, %xmm02024; SSE2-NEXT:    retq2025;2026; SSE4-LABEL: test72:2027; SSE4:       # %bb.0: # %entry2028; SSE4-NEXT:    pminud %xmm1, %xmm02029; SSE4-NEXT:    retq2030;2031; AVX-LABEL: test72:2032; AVX:       # %bb.0: # %entry2033; AVX-NEXT:    vpminud %xmm1, %xmm0, %xmm02034; AVX-NEXT:    retq2035entry:2036  %cmp = icmp uge <4 x i32> %a, %b2037  %sel = select <4 x i1> %cmp, <4 x i32> %b, <4 x i32> %a2038  ret <4 x i32> %sel2039}2040 2041define <32 x i8> @test73(<32 x i8> %a, <32 x i8> %b) {2042; SSE2-LABEL: test73:2043; SSE2:       # %bb.0: # %entry2044; SSE2-NEXT:    movdqa %xmm0, %xmm42045; SSE2-NEXT:    pcmpgtb %xmm2, %xmm42046; SSE2-NEXT:    pand %xmm4, %xmm02047; SSE2-NEXT:    pandn %xmm2, %xmm42048; SSE2-NEXT:    por %xmm4, %xmm02049; SSE2-NEXT:    movdqa %xmm1, %xmm22050; SSE2-NEXT:    pcmpgtb %xmm3, %xmm22051; SSE2-NEXT:    pand %xmm2, %xmm12052; SSE2-NEXT:    pandn %xmm3, %xmm22053; SSE2-NEXT:    por %xmm2, %xmm12054; SSE2-NEXT:    retq2055;2056; SSE4-LABEL: test73:2057; SSE4:       # %bb.0: # %entry2058; SSE4-NEXT:    pmaxsb %xmm2, %xmm02059; SSE4-NEXT:    pmaxsb %xmm3, %xmm12060; SSE4-NEXT:    retq2061;2062; AVX1-LABEL: test73:2063; AVX1:       # %bb.0: # %entry2064; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22065; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32066; AVX1-NEXT:    vpmaxsb %xmm2, %xmm3, %xmm22067; AVX1-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm02068; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02069; AVX1-NEXT:    retq2070;2071; AVX2-LABEL: test73:2072; AVX2:       # %bb.0: # %entry2073; AVX2-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm02074; AVX2-NEXT:    retq2075;2076; AVX512-LABEL: test73:2077; AVX512:       # %bb.0: # %entry2078; AVX512-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm02079; AVX512-NEXT:    retq2080entry:2081  %cmp = icmp slt <32 x i8> %a, %b2082  %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a2083  ret <32 x i8> %sel2084}2085 2086define <32 x i8> @test74(<32 x i8> %a, <32 x i8> %b) {2087; SSE2-LABEL: test74:2088; SSE2:       # %bb.0: # %entry2089; SSE2-NEXT:    movdqa %xmm0, %xmm42090; SSE2-NEXT:    pcmpgtb %xmm2, %xmm42091; SSE2-NEXT:    pand %xmm4, %xmm02092; SSE2-NEXT:    pandn %xmm2, %xmm42093; SSE2-NEXT:    por %xmm4, %xmm02094; SSE2-NEXT:    movdqa %xmm1, %xmm22095; SSE2-NEXT:    pcmpgtb %xmm3, %xmm22096; SSE2-NEXT:    pand %xmm2, %xmm12097; SSE2-NEXT:    pandn %xmm3, %xmm22098; SSE2-NEXT:    por %xmm2, %xmm12099; SSE2-NEXT:    retq2100;2101; SSE4-LABEL: test74:2102; SSE4:       # %bb.0: # %entry2103; SSE4-NEXT:    pmaxsb %xmm2, %xmm02104; SSE4-NEXT:    pmaxsb %xmm3, %xmm12105; SSE4-NEXT:    retq2106;2107; AVX1-LABEL: test74:2108; AVX1:       # %bb.0: # %entry2109; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22110; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32111; AVX1-NEXT:    vpmaxsb %xmm2, %xmm3, %xmm22112; AVX1-NEXT:    vpmaxsb %xmm1, %xmm0, %xmm02113; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02114; AVX1-NEXT:    retq2115;2116; AVX2-LABEL: test74:2117; AVX2:       # %bb.0: # %entry2118; AVX2-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm02119; AVX2-NEXT:    retq2120;2121; AVX512-LABEL: test74:2122; AVX512:       # %bb.0: # %entry2123; AVX512-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm02124; AVX512-NEXT:    retq2125entry:2126  %cmp = icmp sle <32 x i8> %a, %b2127  %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a2128  ret <32 x i8> %sel2129}2130 2131define <32 x i8> @test75(<32 x i8> %a, <32 x i8> %b) {2132; SSE2-LABEL: test75:2133; SSE2:       # %bb.0: # %entry2134; SSE2-NEXT:    movdqa %xmm2, %xmm42135; SSE2-NEXT:    pcmpgtb %xmm0, %xmm42136; SSE2-NEXT:    pand %xmm4, %xmm02137; SSE2-NEXT:    pandn %xmm2, %xmm42138; SSE2-NEXT:    por %xmm4, %xmm02139; SSE2-NEXT:    movdqa %xmm3, %xmm22140; SSE2-NEXT:    pcmpgtb %xmm1, %xmm22141; SSE2-NEXT:    pand %xmm2, %xmm12142; SSE2-NEXT:    pandn %xmm3, %xmm22143; SSE2-NEXT:    por %xmm2, %xmm12144; SSE2-NEXT:    retq2145;2146; SSE4-LABEL: test75:2147; SSE4:       # %bb.0: # %entry2148; SSE4-NEXT:    pminsb %xmm2, %xmm02149; SSE4-NEXT:    pminsb %xmm3, %xmm12150; SSE4-NEXT:    retq2151;2152; AVX1-LABEL: test75:2153; AVX1:       # %bb.0: # %entry2154; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22155; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32156; AVX1-NEXT:    vpminsb %xmm2, %xmm3, %xmm22157; AVX1-NEXT:    vpminsb %xmm1, %xmm0, %xmm02158; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02159; AVX1-NEXT:    retq2160;2161; AVX2-LABEL: test75:2162; AVX2:       # %bb.0: # %entry2163; AVX2-NEXT:    vpminsb %ymm1, %ymm0, %ymm02164; AVX2-NEXT:    retq2165;2166; AVX512-LABEL: test75:2167; AVX512:       # %bb.0: # %entry2168; AVX512-NEXT:    vpminsb %ymm1, %ymm0, %ymm02169; AVX512-NEXT:    retq2170entry:2171  %cmp = icmp sgt <32 x i8> %a, %b2172  %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a2173  ret <32 x i8> %sel2174}2175 2176define <32 x i8> @test76(<32 x i8> %a, <32 x i8> %b) {2177; SSE2-LABEL: test76:2178; SSE2:       # %bb.0: # %entry2179; SSE2-NEXT:    movdqa %xmm2, %xmm42180; SSE2-NEXT:    pcmpgtb %xmm0, %xmm42181; SSE2-NEXT:    pand %xmm4, %xmm02182; SSE2-NEXT:    pandn %xmm2, %xmm42183; SSE2-NEXT:    por %xmm4, %xmm02184; SSE2-NEXT:    movdqa %xmm3, %xmm22185; SSE2-NEXT:    pcmpgtb %xmm1, %xmm22186; SSE2-NEXT:    pand %xmm2, %xmm12187; SSE2-NEXT:    pandn %xmm3, %xmm22188; SSE2-NEXT:    por %xmm2, %xmm12189; SSE2-NEXT:    retq2190;2191; SSE4-LABEL: test76:2192; SSE4:       # %bb.0: # %entry2193; SSE4-NEXT:    pminsb %xmm2, %xmm02194; SSE4-NEXT:    pminsb %xmm3, %xmm12195; SSE4-NEXT:    retq2196;2197; AVX1-LABEL: test76:2198; AVX1:       # %bb.0: # %entry2199; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22200; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32201; AVX1-NEXT:    vpminsb %xmm2, %xmm3, %xmm22202; AVX1-NEXT:    vpminsb %xmm1, %xmm0, %xmm02203; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02204; AVX1-NEXT:    retq2205;2206; AVX2-LABEL: test76:2207; AVX2:       # %bb.0: # %entry2208; AVX2-NEXT:    vpminsb %ymm1, %ymm0, %ymm02209; AVX2-NEXT:    retq2210;2211; AVX512-LABEL: test76:2212; AVX512:       # %bb.0: # %entry2213; AVX512-NEXT:    vpminsb %ymm1, %ymm0, %ymm02214; AVX512-NEXT:    retq2215entry:2216  %cmp = icmp sge <32 x i8> %a, %b2217  %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a2218  ret <32 x i8> %sel2219}2220 2221define <32 x i8> @test77(<32 x i8> %a, <32 x i8> %b) {2222; SSE-LABEL: test77:2223; SSE:       # %bb.0: # %entry2224; SSE-NEXT:    pmaxub %xmm2, %xmm02225; SSE-NEXT:    pmaxub %xmm3, %xmm12226; SSE-NEXT:    retq2227;2228; AVX1-LABEL: test77:2229; AVX1:       # %bb.0: # %entry2230; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22231; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32232; AVX1-NEXT:    vpmaxub %xmm2, %xmm3, %xmm22233; AVX1-NEXT:    vpmaxub %xmm1, %xmm0, %xmm02234; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02235; AVX1-NEXT:    retq2236;2237; AVX2-LABEL: test77:2238; AVX2:       # %bb.0: # %entry2239; AVX2-NEXT:    vpmaxub %ymm1, %ymm0, %ymm02240; AVX2-NEXT:    retq2241;2242; AVX512-LABEL: test77:2243; AVX512:       # %bb.0: # %entry2244; AVX512-NEXT:    vpmaxub %ymm1, %ymm0, %ymm02245; AVX512-NEXT:    retq2246entry:2247  %cmp = icmp ult <32 x i8> %a, %b2248  %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a2249  ret <32 x i8> %sel2250}2251 2252define <32 x i8> @test78(<32 x i8> %a, <32 x i8> %b) {2253; SSE-LABEL: test78:2254; SSE:       # %bb.0: # %entry2255; SSE-NEXT:    pmaxub %xmm2, %xmm02256; SSE-NEXT:    pmaxub %xmm3, %xmm12257; SSE-NEXT:    retq2258;2259; AVX1-LABEL: test78:2260; AVX1:       # %bb.0: # %entry2261; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22262; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32263; AVX1-NEXT:    vpmaxub %xmm2, %xmm3, %xmm22264; AVX1-NEXT:    vpmaxub %xmm1, %xmm0, %xmm02265; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02266; AVX1-NEXT:    retq2267;2268; AVX2-LABEL: test78:2269; AVX2:       # %bb.0: # %entry2270; AVX2-NEXT:    vpmaxub %ymm1, %ymm0, %ymm02271; AVX2-NEXT:    retq2272;2273; AVX512-LABEL: test78:2274; AVX512:       # %bb.0: # %entry2275; AVX512-NEXT:    vpmaxub %ymm1, %ymm0, %ymm02276; AVX512-NEXT:    retq2277entry:2278  %cmp = icmp ule <32 x i8> %a, %b2279  %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a2280  ret <32 x i8> %sel2281}2282 2283define <32 x i8> @test79(<32 x i8> %a, <32 x i8> %b) {2284; SSE-LABEL: test79:2285; SSE:       # %bb.0: # %entry2286; SSE-NEXT:    pminub %xmm2, %xmm02287; SSE-NEXT:    pminub %xmm3, %xmm12288; SSE-NEXT:    retq2289;2290; AVX1-LABEL: test79:2291; AVX1:       # %bb.0: # %entry2292; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22293; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32294; AVX1-NEXT:    vpminub %xmm2, %xmm3, %xmm22295; AVX1-NEXT:    vpminub %xmm1, %xmm0, %xmm02296; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02297; AVX1-NEXT:    retq2298;2299; AVX2-LABEL: test79:2300; AVX2:       # %bb.0: # %entry2301; AVX2-NEXT:    vpminub %ymm1, %ymm0, %ymm02302; AVX2-NEXT:    retq2303;2304; AVX512-LABEL: test79:2305; AVX512:       # %bb.0: # %entry2306; AVX512-NEXT:    vpminub %ymm1, %ymm0, %ymm02307; AVX512-NEXT:    retq2308entry:2309  %cmp = icmp ugt <32 x i8> %a, %b2310  %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a2311  ret <32 x i8> %sel2312}2313 2314define <32 x i8> @test80(<32 x i8> %a, <32 x i8> %b) {2315; SSE-LABEL: test80:2316; SSE:       # %bb.0: # %entry2317; SSE-NEXT:    pminub %xmm2, %xmm02318; SSE-NEXT:    pminub %xmm3, %xmm12319; SSE-NEXT:    retq2320;2321; AVX1-LABEL: test80:2322; AVX1:       # %bb.0: # %entry2323; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22324; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32325; AVX1-NEXT:    vpminub %xmm2, %xmm3, %xmm22326; AVX1-NEXT:    vpminub %xmm1, %xmm0, %xmm02327; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02328; AVX1-NEXT:    retq2329;2330; AVX2-LABEL: test80:2331; AVX2:       # %bb.0: # %entry2332; AVX2-NEXT:    vpminub %ymm1, %ymm0, %ymm02333; AVX2-NEXT:    retq2334;2335; AVX512-LABEL: test80:2336; AVX512:       # %bb.0: # %entry2337; AVX512-NEXT:    vpminub %ymm1, %ymm0, %ymm02338; AVX512-NEXT:    retq2339entry:2340  %cmp = icmp uge <32 x i8> %a, %b2341  %sel = select <32 x i1> %cmp, <32 x i8> %b, <32 x i8> %a2342  ret <32 x i8> %sel2343}2344 2345define <16 x i16> @test81(<16 x i16> %a, <16 x i16> %b) {2346; SSE-LABEL: test81:2347; SSE:       # %bb.0: # %entry2348; SSE-NEXT:    pmaxsw %xmm2, %xmm02349; SSE-NEXT:    pmaxsw %xmm3, %xmm12350; SSE-NEXT:    retq2351;2352; AVX1-LABEL: test81:2353; AVX1:       # %bb.0: # %entry2354; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22355; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32356; AVX1-NEXT:    vpmaxsw %xmm2, %xmm3, %xmm22357; AVX1-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm02358; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02359; AVX1-NEXT:    retq2360;2361; AVX2-LABEL: test81:2362; AVX2:       # %bb.0: # %entry2363; AVX2-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm02364; AVX2-NEXT:    retq2365;2366; AVX512-LABEL: test81:2367; AVX512:       # %bb.0: # %entry2368; AVX512-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm02369; AVX512-NEXT:    retq2370entry:2371  %cmp = icmp slt <16 x i16> %a, %b2372  %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a2373  ret <16 x i16> %sel2374}2375 2376define <16 x i16> @test82(<16 x i16> %a, <16 x i16> %b) {2377; SSE-LABEL: test82:2378; SSE:       # %bb.0: # %entry2379; SSE-NEXT:    pmaxsw %xmm2, %xmm02380; SSE-NEXT:    pmaxsw %xmm3, %xmm12381; SSE-NEXT:    retq2382;2383; AVX1-LABEL: test82:2384; AVX1:       # %bb.0: # %entry2385; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22386; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32387; AVX1-NEXT:    vpmaxsw %xmm2, %xmm3, %xmm22388; AVX1-NEXT:    vpmaxsw %xmm1, %xmm0, %xmm02389; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02390; AVX1-NEXT:    retq2391;2392; AVX2-LABEL: test82:2393; AVX2:       # %bb.0: # %entry2394; AVX2-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm02395; AVX2-NEXT:    retq2396;2397; AVX512-LABEL: test82:2398; AVX512:       # %bb.0: # %entry2399; AVX512-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm02400; AVX512-NEXT:    retq2401entry:2402  %cmp = icmp sle <16 x i16> %a, %b2403  %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a2404  ret <16 x i16> %sel2405}2406 2407define <16 x i16> @test83(<16 x i16> %a, <16 x i16> %b) {2408; SSE-LABEL: test83:2409; SSE:       # %bb.0: # %entry2410; SSE-NEXT:    pminsw %xmm2, %xmm02411; SSE-NEXT:    pminsw %xmm3, %xmm12412; SSE-NEXT:    retq2413;2414; AVX1-LABEL: test83:2415; AVX1:       # %bb.0: # %entry2416; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22417; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32418; AVX1-NEXT:    vpminsw %xmm2, %xmm3, %xmm22419; AVX1-NEXT:    vpminsw %xmm1, %xmm0, %xmm02420; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02421; AVX1-NEXT:    retq2422;2423; AVX2-LABEL: test83:2424; AVX2:       # %bb.0: # %entry2425; AVX2-NEXT:    vpminsw %ymm1, %ymm0, %ymm02426; AVX2-NEXT:    retq2427;2428; AVX512-LABEL: test83:2429; AVX512:       # %bb.0: # %entry2430; AVX512-NEXT:    vpminsw %ymm1, %ymm0, %ymm02431; AVX512-NEXT:    retq2432entry:2433  %cmp = icmp sgt <16 x i16> %a, %b2434  %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a2435  ret <16 x i16> %sel2436}2437 2438define <16 x i16> @test84(<16 x i16> %a, <16 x i16> %b) {2439; SSE-LABEL: test84:2440; SSE:       # %bb.0: # %entry2441; SSE-NEXT:    pminsw %xmm2, %xmm02442; SSE-NEXT:    pminsw %xmm3, %xmm12443; SSE-NEXT:    retq2444;2445; AVX1-LABEL: test84:2446; AVX1:       # %bb.0: # %entry2447; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22448; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32449; AVX1-NEXT:    vpminsw %xmm2, %xmm3, %xmm22450; AVX1-NEXT:    vpminsw %xmm1, %xmm0, %xmm02451; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02452; AVX1-NEXT:    retq2453;2454; AVX2-LABEL: test84:2455; AVX2:       # %bb.0: # %entry2456; AVX2-NEXT:    vpminsw %ymm1, %ymm0, %ymm02457; AVX2-NEXT:    retq2458;2459; AVX512-LABEL: test84:2460; AVX512:       # %bb.0: # %entry2461; AVX512-NEXT:    vpminsw %ymm1, %ymm0, %ymm02462; AVX512-NEXT:    retq2463entry:2464  %cmp = icmp sge <16 x i16> %a, %b2465  %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a2466  ret <16 x i16> %sel2467}2468 2469define <16 x i16> @test85(<16 x i16> %a, <16 x i16> %b) {2470; SSE2-LABEL: test85:2471; SSE2:       # %bb.0: # %entry2472; SSE2-NEXT:    psubusw %xmm0, %xmm22473; SSE2-NEXT:    paddw %xmm2, %xmm02474; SSE2-NEXT:    psubusw %xmm1, %xmm32475; SSE2-NEXT:    paddw %xmm3, %xmm12476; SSE2-NEXT:    retq2477;2478; SSE4-LABEL: test85:2479; SSE4:       # %bb.0: # %entry2480; SSE4-NEXT:    pmaxuw %xmm2, %xmm02481; SSE4-NEXT:    pmaxuw %xmm3, %xmm12482; SSE4-NEXT:    retq2483;2484; AVX1-LABEL: test85:2485; AVX1:       # %bb.0: # %entry2486; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22487; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32488; AVX1-NEXT:    vpmaxuw %xmm2, %xmm3, %xmm22489; AVX1-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm02490; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02491; AVX1-NEXT:    retq2492;2493; AVX2-LABEL: test85:2494; AVX2:       # %bb.0: # %entry2495; AVX2-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm02496; AVX2-NEXT:    retq2497;2498; AVX512-LABEL: test85:2499; AVX512:       # %bb.0: # %entry2500; AVX512-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm02501; AVX512-NEXT:    retq2502entry:2503  %cmp = icmp ult <16 x i16> %a, %b2504  %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a2505  ret <16 x i16> %sel2506}2507 2508define <16 x i16> @test86(<16 x i16> %a, <16 x i16> %b) {2509; SSE2-LABEL: test86:2510; SSE2:       # %bb.0: # %entry2511; SSE2-NEXT:    psubusw %xmm0, %xmm22512; SSE2-NEXT:    paddw %xmm2, %xmm02513; SSE2-NEXT:    psubusw %xmm1, %xmm32514; SSE2-NEXT:    paddw %xmm3, %xmm12515; SSE2-NEXT:    retq2516;2517; SSE4-LABEL: test86:2518; SSE4:       # %bb.0: # %entry2519; SSE4-NEXT:    pmaxuw %xmm2, %xmm02520; SSE4-NEXT:    pmaxuw %xmm3, %xmm12521; SSE4-NEXT:    retq2522;2523; AVX1-LABEL: test86:2524; AVX1:       # %bb.0: # %entry2525; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22526; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32527; AVX1-NEXT:    vpmaxuw %xmm2, %xmm3, %xmm22528; AVX1-NEXT:    vpmaxuw %xmm1, %xmm0, %xmm02529; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02530; AVX1-NEXT:    retq2531;2532; AVX2-LABEL: test86:2533; AVX2:       # %bb.0: # %entry2534; AVX2-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm02535; AVX2-NEXT:    retq2536;2537; AVX512-LABEL: test86:2538; AVX512:       # %bb.0: # %entry2539; AVX512-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm02540; AVX512-NEXT:    retq2541entry:2542  %cmp = icmp ule <16 x i16> %a, %b2543  %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a2544  ret <16 x i16> %sel2545}2546 2547define <16 x i16> @test87(<16 x i16> %a, <16 x i16> %b) {2548; SSE2-LABEL: test87:2549; SSE2:       # %bb.0: # %entry2550; SSE2-NEXT:    movdqa %xmm0, %xmm42551; SSE2-NEXT:    psubusw %xmm2, %xmm42552; SSE2-NEXT:    psubw %xmm4, %xmm02553; SSE2-NEXT:    movdqa %xmm1, %xmm22554; SSE2-NEXT:    psubusw %xmm3, %xmm22555; SSE2-NEXT:    psubw %xmm2, %xmm12556; SSE2-NEXT:    retq2557;2558; SSE4-LABEL: test87:2559; SSE4:       # %bb.0: # %entry2560; SSE4-NEXT:    pminuw %xmm2, %xmm02561; SSE4-NEXT:    pminuw %xmm3, %xmm12562; SSE4-NEXT:    retq2563;2564; AVX1-LABEL: test87:2565; AVX1:       # %bb.0: # %entry2566; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22567; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32568; AVX1-NEXT:    vpminuw %xmm2, %xmm3, %xmm22569; AVX1-NEXT:    vpminuw %xmm1, %xmm0, %xmm02570; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02571; AVX1-NEXT:    retq2572;2573; AVX2-LABEL: test87:2574; AVX2:       # %bb.0: # %entry2575; AVX2-NEXT:    vpminuw %ymm1, %ymm0, %ymm02576; AVX2-NEXT:    retq2577;2578; AVX512-LABEL: test87:2579; AVX512:       # %bb.0: # %entry2580; AVX512-NEXT:    vpminuw %ymm1, %ymm0, %ymm02581; AVX512-NEXT:    retq2582entry:2583  %cmp = icmp ugt <16 x i16> %a, %b2584  %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a2585  ret <16 x i16> %sel2586}2587 2588define <16 x i16> @test88(<16 x i16> %a, <16 x i16> %b) {2589; SSE2-LABEL: test88:2590; SSE2:       # %bb.0: # %entry2591; SSE2-NEXT:    movdqa %xmm0, %xmm42592; SSE2-NEXT:    psubusw %xmm2, %xmm42593; SSE2-NEXT:    psubw %xmm4, %xmm02594; SSE2-NEXT:    movdqa %xmm1, %xmm22595; SSE2-NEXT:    psubusw %xmm3, %xmm22596; SSE2-NEXT:    psubw %xmm2, %xmm12597; SSE2-NEXT:    retq2598;2599; SSE4-LABEL: test88:2600; SSE4:       # %bb.0: # %entry2601; SSE4-NEXT:    pminuw %xmm2, %xmm02602; SSE4-NEXT:    pminuw %xmm3, %xmm12603; SSE4-NEXT:    retq2604;2605; AVX1-LABEL: test88:2606; AVX1:       # %bb.0: # %entry2607; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22608; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32609; AVX1-NEXT:    vpminuw %xmm2, %xmm3, %xmm22610; AVX1-NEXT:    vpminuw %xmm1, %xmm0, %xmm02611; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02612; AVX1-NEXT:    retq2613;2614; AVX2-LABEL: test88:2615; AVX2:       # %bb.0: # %entry2616; AVX2-NEXT:    vpminuw %ymm1, %ymm0, %ymm02617; AVX2-NEXT:    retq2618;2619; AVX512-LABEL: test88:2620; AVX512:       # %bb.0: # %entry2621; AVX512-NEXT:    vpminuw %ymm1, %ymm0, %ymm02622; AVX512-NEXT:    retq2623entry:2624  %cmp = icmp uge <16 x i16> %a, %b2625  %sel = select <16 x i1> %cmp, <16 x i16> %b, <16 x i16> %a2626  ret <16 x i16> %sel2627}2628 2629define <8 x i32> @test89(<8 x i32> %a, <8 x i32> %b) {2630; SSE2-LABEL: test89:2631; SSE2:       # %bb.0: # %entry2632; SSE2-NEXT:    movdqa %xmm0, %xmm42633; SSE2-NEXT:    pcmpgtd %xmm2, %xmm42634; SSE2-NEXT:    pand %xmm4, %xmm02635; SSE2-NEXT:    pandn %xmm2, %xmm42636; SSE2-NEXT:    por %xmm4, %xmm02637; SSE2-NEXT:    movdqa %xmm1, %xmm22638; SSE2-NEXT:    pcmpgtd %xmm3, %xmm22639; SSE2-NEXT:    pand %xmm2, %xmm12640; SSE2-NEXT:    pandn %xmm3, %xmm22641; SSE2-NEXT:    por %xmm2, %xmm12642; SSE2-NEXT:    retq2643;2644; SSE4-LABEL: test89:2645; SSE4:       # %bb.0: # %entry2646; SSE4-NEXT:    pmaxsd %xmm2, %xmm02647; SSE4-NEXT:    pmaxsd %xmm3, %xmm12648; SSE4-NEXT:    retq2649;2650; AVX1-LABEL: test89:2651; AVX1:       # %bb.0: # %entry2652; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22653; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32654; AVX1-NEXT:    vpmaxsd %xmm2, %xmm3, %xmm22655; AVX1-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm02656; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02657; AVX1-NEXT:    retq2658;2659; AVX2-LABEL: test89:2660; AVX2:       # %bb.0: # %entry2661; AVX2-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm02662; AVX2-NEXT:    retq2663;2664; AVX512-LABEL: test89:2665; AVX512:       # %bb.0: # %entry2666; AVX512-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm02667; AVX512-NEXT:    retq2668entry:2669  %cmp = icmp slt <8 x i32> %a, %b2670  %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a2671  ret <8 x i32> %sel2672}2673 2674define <8 x i32> @test90(<8 x i32> %a, <8 x i32> %b) {2675; SSE2-LABEL: test90:2676; SSE2:       # %bb.0: # %entry2677; SSE2-NEXT:    movdqa %xmm0, %xmm42678; SSE2-NEXT:    pcmpgtd %xmm2, %xmm42679; SSE2-NEXT:    pand %xmm4, %xmm02680; SSE2-NEXT:    pandn %xmm2, %xmm42681; SSE2-NEXT:    por %xmm4, %xmm02682; SSE2-NEXT:    movdqa %xmm1, %xmm22683; SSE2-NEXT:    pcmpgtd %xmm3, %xmm22684; SSE2-NEXT:    pand %xmm2, %xmm12685; SSE2-NEXT:    pandn %xmm3, %xmm22686; SSE2-NEXT:    por %xmm2, %xmm12687; SSE2-NEXT:    retq2688;2689; SSE4-LABEL: test90:2690; SSE4:       # %bb.0: # %entry2691; SSE4-NEXT:    pmaxsd %xmm2, %xmm02692; SSE4-NEXT:    pmaxsd %xmm3, %xmm12693; SSE4-NEXT:    retq2694;2695; AVX1-LABEL: test90:2696; AVX1:       # %bb.0: # %entry2697; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22698; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32699; AVX1-NEXT:    vpmaxsd %xmm2, %xmm3, %xmm22700; AVX1-NEXT:    vpmaxsd %xmm1, %xmm0, %xmm02701; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02702; AVX1-NEXT:    retq2703;2704; AVX2-LABEL: test90:2705; AVX2:       # %bb.0: # %entry2706; AVX2-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm02707; AVX2-NEXT:    retq2708;2709; AVX512-LABEL: test90:2710; AVX512:       # %bb.0: # %entry2711; AVX512-NEXT:    vpmaxsd %ymm1, %ymm0, %ymm02712; AVX512-NEXT:    retq2713entry:2714  %cmp = icmp sle <8 x i32> %a, %b2715  %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a2716  ret <8 x i32> %sel2717}2718 2719define <8 x i32> @test91(<8 x i32> %a, <8 x i32> %b) {2720; SSE2-LABEL: test91:2721; SSE2:       # %bb.0: # %entry2722; SSE2-NEXT:    movdqa %xmm2, %xmm42723; SSE2-NEXT:    pcmpgtd %xmm0, %xmm42724; SSE2-NEXT:    pand %xmm4, %xmm02725; SSE2-NEXT:    pandn %xmm2, %xmm42726; SSE2-NEXT:    por %xmm4, %xmm02727; SSE2-NEXT:    movdqa %xmm3, %xmm22728; SSE2-NEXT:    pcmpgtd %xmm1, %xmm22729; SSE2-NEXT:    pand %xmm2, %xmm12730; SSE2-NEXT:    pandn %xmm3, %xmm22731; SSE2-NEXT:    por %xmm2, %xmm12732; SSE2-NEXT:    retq2733;2734; SSE4-LABEL: test91:2735; SSE4:       # %bb.0: # %entry2736; SSE4-NEXT:    pminsd %xmm2, %xmm02737; SSE4-NEXT:    pminsd %xmm3, %xmm12738; SSE4-NEXT:    retq2739;2740; AVX1-LABEL: test91:2741; AVX1:       # %bb.0: # %entry2742; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22743; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32744; AVX1-NEXT:    vpminsd %xmm2, %xmm3, %xmm22745; AVX1-NEXT:    vpminsd %xmm1, %xmm0, %xmm02746; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02747; AVX1-NEXT:    retq2748;2749; AVX2-LABEL: test91:2750; AVX2:       # %bb.0: # %entry2751; AVX2-NEXT:    vpminsd %ymm1, %ymm0, %ymm02752; AVX2-NEXT:    retq2753;2754; AVX512-LABEL: test91:2755; AVX512:       # %bb.0: # %entry2756; AVX512-NEXT:    vpminsd %ymm1, %ymm0, %ymm02757; AVX512-NEXT:    retq2758entry:2759  %cmp = icmp sgt <8 x i32> %a, %b2760  %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a2761  ret <8 x i32> %sel2762}2763 2764define <8 x i32> @test92(<8 x i32> %a, <8 x i32> %b) {2765; SSE2-LABEL: test92:2766; SSE2:       # %bb.0: # %entry2767; SSE2-NEXT:    movdqa %xmm2, %xmm42768; SSE2-NEXT:    pcmpgtd %xmm0, %xmm42769; SSE2-NEXT:    pand %xmm4, %xmm02770; SSE2-NEXT:    pandn %xmm2, %xmm42771; SSE2-NEXT:    por %xmm4, %xmm02772; SSE2-NEXT:    movdqa %xmm3, %xmm22773; SSE2-NEXT:    pcmpgtd %xmm1, %xmm22774; SSE2-NEXT:    pand %xmm2, %xmm12775; SSE2-NEXT:    pandn %xmm3, %xmm22776; SSE2-NEXT:    por %xmm2, %xmm12777; SSE2-NEXT:    retq2778;2779; SSE4-LABEL: test92:2780; SSE4:       # %bb.0: # %entry2781; SSE4-NEXT:    pminsd %xmm2, %xmm02782; SSE4-NEXT:    pminsd %xmm3, %xmm12783; SSE4-NEXT:    retq2784;2785; AVX1-LABEL: test92:2786; AVX1:       # %bb.0: # %entry2787; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22788; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32789; AVX1-NEXT:    vpminsd %xmm2, %xmm3, %xmm22790; AVX1-NEXT:    vpminsd %xmm1, %xmm0, %xmm02791; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02792; AVX1-NEXT:    retq2793;2794; AVX2-LABEL: test92:2795; AVX2:       # %bb.0: # %entry2796; AVX2-NEXT:    vpminsd %ymm1, %ymm0, %ymm02797; AVX2-NEXT:    retq2798;2799; AVX512-LABEL: test92:2800; AVX512:       # %bb.0: # %entry2801; AVX512-NEXT:    vpminsd %ymm1, %ymm0, %ymm02802; AVX512-NEXT:    retq2803entry:2804  %cmp = icmp sge <8 x i32> %a, %b2805  %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a2806  ret <8 x i32> %sel2807}2808 2809define <8 x i32> @test93(<8 x i32> %a, <8 x i32> %b) {2810; SSE2-LABEL: test93:2811; SSE2:       # %bb.0: # %entry2812; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]2813; SSE2-NEXT:    movdqa %xmm2, %xmm52814; SSE2-NEXT:    pxor %xmm4, %xmm52815; SSE2-NEXT:    movdqa %xmm0, %xmm62816; SSE2-NEXT:    pxor %xmm4, %xmm62817; SSE2-NEXT:    pcmpgtd %xmm5, %xmm62818; SSE2-NEXT:    pand %xmm6, %xmm02819; SSE2-NEXT:    pandn %xmm2, %xmm62820; SSE2-NEXT:    por %xmm6, %xmm02821; SSE2-NEXT:    movdqa %xmm3, %xmm22822; SSE2-NEXT:    pxor %xmm4, %xmm22823; SSE2-NEXT:    pxor %xmm1, %xmm42824; SSE2-NEXT:    pcmpgtd %xmm2, %xmm42825; SSE2-NEXT:    pand %xmm4, %xmm12826; SSE2-NEXT:    pandn %xmm3, %xmm42827; SSE2-NEXT:    por %xmm4, %xmm12828; SSE2-NEXT:    retq2829;2830; SSE4-LABEL: test93:2831; SSE4:       # %bb.0: # %entry2832; SSE4-NEXT:    pmaxud %xmm2, %xmm02833; SSE4-NEXT:    pmaxud %xmm3, %xmm12834; SSE4-NEXT:    retq2835;2836; AVX1-LABEL: test93:2837; AVX1:       # %bb.0: # %entry2838; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22839; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32840; AVX1-NEXT:    vpmaxud %xmm2, %xmm3, %xmm22841; AVX1-NEXT:    vpmaxud %xmm1, %xmm0, %xmm02842; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02843; AVX1-NEXT:    retq2844;2845; AVX2-LABEL: test93:2846; AVX2:       # %bb.0: # %entry2847; AVX2-NEXT:    vpmaxud %ymm1, %ymm0, %ymm02848; AVX2-NEXT:    retq2849;2850; AVX512-LABEL: test93:2851; AVX512:       # %bb.0: # %entry2852; AVX512-NEXT:    vpmaxud %ymm1, %ymm0, %ymm02853; AVX512-NEXT:    retq2854entry:2855  %cmp = icmp ult <8 x i32> %a, %b2856  %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a2857  ret <8 x i32> %sel2858}2859 2860define <8 x i32> @test94(<8 x i32> %a, <8 x i32> %b) {2861; SSE2-LABEL: test94:2862; SSE2:       # %bb.0: # %entry2863; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]2864; SSE2-NEXT:    movdqa %xmm2, %xmm52865; SSE2-NEXT:    pxor %xmm4, %xmm52866; SSE2-NEXT:    movdqa %xmm0, %xmm62867; SSE2-NEXT:    pxor %xmm4, %xmm62868; SSE2-NEXT:    pcmpgtd %xmm5, %xmm62869; SSE2-NEXT:    pand %xmm6, %xmm02870; SSE2-NEXT:    pandn %xmm2, %xmm62871; SSE2-NEXT:    por %xmm6, %xmm02872; SSE2-NEXT:    movdqa %xmm3, %xmm22873; SSE2-NEXT:    pxor %xmm4, %xmm22874; SSE2-NEXT:    pxor %xmm1, %xmm42875; SSE2-NEXT:    pcmpgtd %xmm2, %xmm42876; SSE2-NEXT:    pand %xmm4, %xmm12877; SSE2-NEXT:    pandn %xmm3, %xmm42878; SSE2-NEXT:    por %xmm4, %xmm12879; SSE2-NEXT:    retq2880;2881; SSE4-LABEL: test94:2882; SSE4:       # %bb.0: # %entry2883; SSE4-NEXT:    pmaxud %xmm2, %xmm02884; SSE4-NEXT:    pmaxud %xmm3, %xmm12885; SSE4-NEXT:    retq2886;2887; AVX1-LABEL: test94:2888; AVX1:       # %bb.0: # %entry2889; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22890; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32891; AVX1-NEXT:    vpmaxud %xmm2, %xmm3, %xmm22892; AVX1-NEXT:    vpmaxud %xmm1, %xmm0, %xmm02893; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02894; AVX1-NEXT:    retq2895;2896; AVX2-LABEL: test94:2897; AVX2:       # %bb.0: # %entry2898; AVX2-NEXT:    vpmaxud %ymm1, %ymm0, %ymm02899; AVX2-NEXT:    retq2900;2901; AVX512-LABEL: test94:2902; AVX512:       # %bb.0: # %entry2903; AVX512-NEXT:    vpmaxud %ymm1, %ymm0, %ymm02904; AVX512-NEXT:    retq2905entry:2906  %cmp = icmp ule <8 x i32> %a, %b2907  %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a2908  ret <8 x i32> %sel2909}2910 2911define <8 x i32> @test95(<8 x i32> %a, <8 x i32> %b) {2912; SSE2-LABEL: test95:2913; SSE2:       # %bb.0: # %entry2914; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]2915; SSE2-NEXT:    movdqa %xmm0, %xmm52916; SSE2-NEXT:    pxor %xmm4, %xmm52917; SSE2-NEXT:    movdqa %xmm2, %xmm62918; SSE2-NEXT:    pxor %xmm4, %xmm62919; SSE2-NEXT:    pcmpgtd %xmm5, %xmm62920; SSE2-NEXT:    pand %xmm6, %xmm02921; SSE2-NEXT:    pandn %xmm2, %xmm62922; SSE2-NEXT:    por %xmm6, %xmm02923; SSE2-NEXT:    movdqa %xmm1, %xmm22924; SSE2-NEXT:    pxor %xmm4, %xmm22925; SSE2-NEXT:    pxor %xmm3, %xmm42926; SSE2-NEXT:    pcmpgtd %xmm2, %xmm42927; SSE2-NEXT:    pand %xmm4, %xmm12928; SSE2-NEXT:    pandn %xmm3, %xmm42929; SSE2-NEXT:    por %xmm4, %xmm12930; SSE2-NEXT:    retq2931;2932; SSE4-LABEL: test95:2933; SSE4:       # %bb.0: # %entry2934; SSE4-NEXT:    pminud %xmm2, %xmm02935; SSE4-NEXT:    pminud %xmm3, %xmm12936; SSE4-NEXT:    retq2937;2938; AVX1-LABEL: test95:2939; AVX1:       # %bb.0: # %entry2940; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22941; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32942; AVX1-NEXT:    vpminud %xmm2, %xmm3, %xmm22943; AVX1-NEXT:    vpminud %xmm1, %xmm0, %xmm02944; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02945; AVX1-NEXT:    retq2946;2947; AVX2-LABEL: test95:2948; AVX2:       # %bb.0: # %entry2949; AVX2-NEXT:    vpminud %ymm1, %ymm0, %ymm02950; AVX2-NEXT:    retq2951;2952; AVX512-LABEL: test95:2953; AVX512:       # %bb.0: # %entry2954; AVX512-NEXT:    vpminud %ymm1, %ymm0, %ymm02955; AVX512-NEXT:    retq2956entry:2957  %cmp = icmp ugt <8 x i32> %a, %b2958  %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a2959  ret <8 x i32> %sel2960}2961 2962define <8 x i32> @test96(<8 x i32> %a, <8 x i32> %b) {2963; SSE2-LABEL: test96:2964; SSE2:       # %bb.0: # %entry2965; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648,2147483648,2147483648]2966; SSE2-NEXT:    movdqa %xmm0, %xmm52967; SSE2-NEXT:    pxor %xmm4, %xmm52968; SSE2-NEXT:    movdqa %xmm2, %xmm62969; SSE2-NEXT:    pxor %xmm4, %xmm62970; SSE2-NEXT:    pcmpgtd %xmm5, %xmm62971; SSE2-NEXT:    pand %xmm6, %xmm02972; SSE2-NEXT:    pandn %xmm2, %xmm62973; SSE2-NEXT:    por %xmm6, %xmm02974; SSE2-NEXT:    movdqa %xmm1, %xmm22975; SSE2-NEXT:    pxor %xmm4, %xmm22976; SSE2-NEXT:    pxor %xmm3, %xmm42977; SSE2-NEXT:    pcmpgtd %xmm2, %xmm42978; SSE2-NEXT:    pand %xmm4, %xmm12979; SSE2-NEXT:    pandn %xmm3, %xmm42980; SSE2-NEXT:    por %xmm4, %xmm12981; SSE2-NEXT:    retq2982;2983; SSE4-LABEL: test96:2984; SSE4:       # %bb.0: # %entry2985; SSE4-NEXT:    pminud %xmm2, %xmm02986; SSE4-NEXT:    pminud %xmm3, %xmm12987; SSE4-NEXT:    retq2988;2989; AVX1-LABEL: test96:2990; AVX1:       # %bb.0: # %entry2991; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm22992; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm32993; AVX1-NEXT:    vpminud %xmm2, %xmm3, %xmm22994; AVX1-NEXT:    vpminud %xmm1, %xmm0, %xmm02995; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm0, %ymm02996; AVX1-NEXT:    retq2997;2998; AVX2-LABEL: test96:2999; AVX2:       # %bb.0: # %entry3000; AVX2-NEXT:    vpminud %ymm1, %ymm0, %ymm03001; AVX2-NEXT:    retq3002;3003; AVX512-LABEL: test96:3004; AVX512:       # %bb.0: # %entry3005; AVX512-NEXT:    vpminud %ymm1, %ymm0, %ymm03006; AVX512-NEXT:    retq3007entry:3008  %cmp = icmp uge <8 x i32> %a, %b3009  %sel = select <8 x i1> %cmp, <8 x i32> %b, <8 x i32> %a3010  ret <8 x i32> %sel3011}3012 3013; ----------------------------3014 3015define <64 x i8> @test97(<64 x i8> %a, <64 x i8> %b) {3016; SSE2-LABEL: test97:3017; SSE2:       # %bb.0: # %entry3018; SSE2-NEXT:    movdqa %xmm4, %xmm83019; SSE2-NEXT:    pcmpgtb %xmm0, %xmm83020; SSE2-NEXT:    pand %xmm8, %xmm03021; SSE2-NEXT:    pandn %xmm4, %xmm83022; SSE2-NEXT:    por %xmm8, %xmm03023; SSE2-NEXT:    movdqa %xmm5, %xmm43024; SSE2-NEXT:    pcmpgtb %xmm1, %xmm43025; SSE2-NEXT:    pand %xmm4, %xmm13026; SSE2-NEXT:    pandn %xmm5, %xmm43027; SSE2-NEXT:    por %xmm4, %xmm13028; SSE2-NEXT:    movdqa %xmm6, %xmm43029; SSE2-NEXT:    pcmpgtb %xmm2, %xmm43030; SSE2-NEXT:    pand %xmm4, %xmm23031; SSE2-NEXT:    pandn %xmm6, %xmm43032; SSE2-NEXT:    por %xmm4, %xmm23033; SSE2-NEXT:    movdqa %xmm7, %xmm43034; SSE2-NEXT:    pcmpgtb %xmm3, %xmm43035; SSE2-NEXT:    pand %xmm4, %xmm33036; SSE2-NEXT:    pandn %xmm7, %xmm43037; SSE2-NEXT:    por %xmm4, %xmm33038; SSE2-NEXT:    retq3039;3040; SSE4-LABEL: test97:3041; SSE4:       # %bb.0: # %entry3042; SSE4-NEXT:    pminsb %xmm4, %xmm03043; SSE4-NEXT:    pminsb %xmm5, %xmm13044; SSE4-NEXT:    pminsb %xmm6, %xmm23045; SSE4-NEXT:    pminsb %xmm7, %xmm33046; SSE4-NEXT:    retq3047;3048; AVX1-LABEL: test97:3049; AVX1:       # %bb.0: # %entry3050; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43051; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53052; AVX1-NEXT:    vpminsb %xmm4, %xmm5, %xmm43053; AVX1-NEXT:    vpminsb %xmm2, %xmm0, %xmm03054; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03055; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23056; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43057; AVX1-NEXT:    vpminsb %xmm2, %xmm4, %xmm23058; AVX1-NEXT:    vpminsb %xmm3, %xmm1, %xmm13059; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13060; AVX1-NEXT:    retq3061;3062; AVX2-LABEL: test97:3063; AVX2:       # %bb.0: # %entry3064; AVX2-NEXT:    vpminsb %ymm2, %ymm0, %ymm03065; AVX2-NEXT:    vpminsb %ymm3, %ymm1, %ymm13066; AVX2-NEXT:    retq3067;3068; AVX512F-LABEL: test97:3069; AVX512F:       # %bb.0: # %entry3070; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23071; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33072; AVX512F-NEXT:    vpminsb %ymm2, %ymm3, %ymm23073; AVX512F-NEXT:    vpminsb %ymm1, %ymm0, %ymm03074; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03075; AVX512F-NEXT:    retq3076;3077; AVX512BW-LABEL: test97:3078; AVX512BW:       # %bb.0: # %entry3079; AVX512BW-NEXT:    vpminsb %zmm1, %zmm0, %zmm03080; AVX512BW-NEXT:    retq3081entry:3082  %cmp = icmp slt <64 x i8> %a, %b3083  %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b3084  ret <64 x i8> %sel3085}3086 3087define <64 x i8> @test98(<64 x i8> %a, <64 x i8> %b) {3088; SSE2-LABEL: test98:3089; SSE2:       # %bb.0: # %entry3090; SSE2-NEXT:    movdqa %xmm4, %xmm83091; SSE2-NEXT:    pcmpgtb %xmm0, %xmm83092; SSE2-NEXT:    pand %xmm8, %xmm03093; SSE2-NEXT:    pandn %xmm4, %xmm83094; SSE2-NEXT:    por %xmm8, %xmm03095; SSE2-NEXT:    movdqa %xmm5, %xmm43096; SSE2-NEXT:    pcmpgtb %xmm1, %xmm43097; SSE2-NEXT:    pand %xmm4, %xmm13098; SSE2-NEXT:    pandn %xmm5, %xmm43099; SSE2-NEXT:    por %xmm4, %xmm13100; SSE2-NEXT:    movdqa %xmm6, %xmm43101; SSE2-NEXT:    pcmpgtb %xmm2, %xmm43102; SSE2-NEXT:    pand %xmm4, %xmm23103; SSE2-NEXT:    pandn %xmm6, %xmm43104; SSE2-NEXT:    por %xmm4, %xmm23105; SSE2-NEXT:    movdqa %xmm7, %xmm43106; SSE2-NEXT:    pcmpgtb %xmm3, %xmm43107; SSE2-NEXT:    pand %xmm4, %xmm33108; SSE2-NEXT:    pandn %xmm7, %xmm43109; SSE2-NEXT:    por %xmm4, %xmm33110; SSE2-NEXT:    retq3111;3112; SSE4-LABEL: test98:3113; SSE4:       # %bb.0: # %entry3114; SSE4-NEXT:    pminsb %xmm4, %xmm03115; SSE4-NEXT:    pminsb %xmm5, %xmm13116; SSE4-NEXT:    pminsb %xmm6, %xmm23117; SSE4-NEXT:    pminsb %xmm7, %xmm33118; SSE4-NEXT:    retq3119;3120; AVX1-LABEL: test98:3121; AVX1:       # %bb.0: # %entry3122; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43123; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53124; AVX1-NEXT:    vpminsb %xmm4, %xmm5, %xmm43125; AVX1-NEXT:    vpminsb %xmm2, %xmm0, %xmm03126; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03127; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23128; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43129; AVX1-NEXT:    vpminsb %xmm2, %xmm4, %xmm23130; AVX1-NEXT:    vpminsb %xmm3, %xmm1, %xmm13131; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13132; AVX1-NEXT:    retq3133;3134; AVX2-LABEL: test98:3135; AVX2:       # %bb.0: # %entry3136; AVX2-NEXT:    vpminsb %ymm2, %ymm0, %ymm03137; AVX2-NEXT:    vpminsb %ymm3, %ymm1, %ymm13138; AVX2-NEXT:    retq3139;3140; AVX512F-LABEL: test98:3141; AVX512F:       # %bb.0: # %entry3142; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23143; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33144; AVX512F-NEXT:    vpminsb %ymm2, %ymm3, %ymm23145; AVX512F-NEXT:    vpminsb %ymm1, %ymm0, %ymm03146; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03147; AVX512F-NEXT:    retq3148;3149; AVX512BW-LABEL: test98:3150; AVX512BW:       # %bb.0: # %entry3151; AVX512BW-NEXT:    vpminsb %zmm1, %zmm0, %zmm03152; AVX512BW-NEXT:    retq3153entry:3154  %cmp = icmp sle <64 x i8> %a, %b3155  %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b3156  ret <64 x i8> %sel3157}3158 3159define <64 x i8> @test99(<64 x i8> %a, <64 x i8> %b) {3160; SSE2-LABEL: test99:3161; SSE2:       # %bb.0: # %entry3162; SSE2-NEXT:    movdqa %xmm0, %xmm83163; SSE2-NEXT:    pcmpgtb %xmm4, %xmm83164; SSE2-NEXT:    pand %xmm8, %xmm03165; SSE2-NEXT:    pandn %xmm4, %xmm83166; SSE2-NEXT:    por %xmm8, %xmm03167; SSE2-NEXT:    movdqa %xmm1, %xmm43168; SSE2-NEXT:    pcmpgtb %xmm5, %xmm43169; SSE2-NEXT:    pand %xmm4, %xmm13170; SSE2-NEXT:    pandn %xmm5, %xmm43171; SSE2-NEXT:    por %xmm4, %xmm13172; SSE2-NEXT:    movdqa %xmm2, %xmm43173; SSE2-NEXT:    pcmpgtb %xmm6, %xmm43174; SSE2-NEXT:    pand %xmm4, %xmm23175; SSE2-NEXT:    pandn %xmm6, %xmm43176; SSE2-NEXT:    por %xmm4, %xmm23177; SSE2-NEXT:    movdqa %xmm3, %xmm43178; SSE2-NEXT:    pcmpgtb %xmm7, %xmm43179; SSE2-NEXT:    pand %xmm4, %xmm33180; SSE2-NEXT:    pandn %xmm7, %xmm43181; SSE2-NEXT:    por %xmm4, %xmm33182; SSE2-NEXT:    retq3183;3184; SSE4-LABEL: test99:3185; SSE4:       # %bb.0: # %entry3186; SSE4-NEXT:    pmaxsb %xmm4, %xmm03187; SSE4-NEXT:    pmaxsb %xmm5, %xmm13188; SSE4-NEXT:    pmaxsb %xmm6, %xmm23189; SSE4-NEXT:    pmaxsb %xmm7, %xmm33190; SSE4-NEXT:    retq3191;3192; AVX1-LABEL: test99:3193; AVX1:       # %bb.0: # %entry3194; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43195; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53196; AVX1-NEXT:    vpmaxsb %xmm4, %xmm5, %xmm43197; AVX1-NEXT:    vpmaxsb %xmm2, %xmm0, %xmm03198; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03199; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23200; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43201; AVX1-NEXT:    vpmaxsb %xmm2, %xmm4, %xmm23202; AVX1-NEXT:    vpmaxsb %xmm3, %xmm1, %xmm13203; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13204; AVX1-NEXT:    retq3205;3206; AVX2-LABEL: test99:3207; AVX2:       # %bb.0: # %entry3208; AVX2-NEXT:    vpmaxsb %ymm2, %ymm0, %ymm03209; AVX2-NEXT:    vpmaxsb %ymm3, %ymm1, %ymm13210; AVX2-NEXT:    retq3211;3212; AVX512F-LABEL: test99:3213; AVX512F:       # %bb.0: # %entry3214; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23215; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33216; AVX512F-NEXT:    vpmaxsb %ymm2, %ymm3, %ymm23217; AVX512F-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm03218; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03219; AVX512F-NEXT:    retq3220;3221; AVX512BW-LABEL: test99:3222; AVX512BW:       # %bb.0: # %entry3223; AVX512BW-NEXT:    vpmaxsb %zmm1, %zmm0, %zmm03224; AVX512BW-NEXT:    retq3225entry:3226  %cmp = icmp sgt <64 x i8> %a, %b3227  %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b3228  ret <64 x i8> %sel3229}3230 3231define <64 x i8> @test100(<64 x i8> %a, <64 x i8> %b) {3232; SSE2-LABEL: test100:3233; SSE2:       # %bb.0: # %entry3234; SSE2-NEXT:    movdqa %xmm0, %xmm83235; SSE2-NEXT:    pcmpgtb %xmm4, %xmm83236; SSE2-NEXT:    pand %xmm8, %xmm03237; SSE2-NEXT:    pandn %xmm4, %xmm83238; SSE2-NEXT:    por %xmm8, %xmm03239; SSE2-NEXT:    movdqa %xmm1, %xmm43240; SSE2-NEXT:    pcmpgtb %xmm5, %xmm43241; SSE2-NEXT:    pand %xmm4, %xmm13242; SSE2-NEXT:    pandn %xmm5, %xmm43243; SSE2-NEXT:    por %xmm4, %xmm13244; SSE2-NEXT:    movdqa %xmm2, %xmm43245; SSE2-NEXT:    pcmpgtb %xmm6, %xmm43246; SSE2-NEXT:    pand %xmm4, %xmm23247; SSE2-NEXT:    pandn %xmm6, %xmm43248; SSE2-NEXT:    por %xmm4, %xmm23249; SSE2-NEXT:    movdqa %xmm3, %xmm43250; SSE2-NEXT:    pcmpgtb %xmm7, %xmm43251; SSE2-NEXT:    pand %xmm4, %xmm33252; SSE2-NEXT:    pandn %xmm7, %xmm43253; SSE2-NEXT:    por %xmm4, %xmm33254; SSE2-NEXT:    retq3255;3256; SSE4-LABEL: test100:3257; SSE4:       # %bb.0: # %entry3258; SSE4-NEXT:    pmaxsb %xmm4, %xmm03259; SSE4-NEXT:    pmaxsb %xmm5, %xmm13260; SSE4-NEXT:    pmaxsb %xmm6, %xmm23261; SSE4-NEXT:    pmaxsb %xmm7, %xmm33262; SSE4-NEXT:    retq3263;3264; AVX1-LABEL: test100:3265; AVX1:       # %bb.0: # %entry3266; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43267; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53268; AVX1-NEXT:    vpmaxsb %xmm4, %xmm5, %xmm43269; AVX1-NEXT:    vpmaxsb %xmm2, %xmm0, %xmm03270; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03271; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23272; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43273; AVX1-NEXT:    vpmaxsb %xmm2, %xmm4, %xmm23274; AVX1-NEXT:    vpmaxsb %xmm3, %xmm1, %xmm13275; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13276; AVX1-NEXT:    retq3277;3278; AVX2-LABEL: test100:3279; AVX2:       # %bb.0: # %entry3280; AVX2-NEXT:    vpmaxsb %ymm2, %ymm0, %ymm03281; AVX2-NEXT:    vpmaxsb %ymm3, %ymm1, %ymm13282; AVX2-NEXT:    retq3283;3284; AVX512F-LABEL: test100:3285; AVX512F:       # %bb.0: # %entry3286; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23287; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33288; AVX512F-NEXT:    vpmaxsb %ymm2, %ymm3, %ymm23289; AVX512F-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm03290; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03291; AVX512F-NEXT:    retq3292;3293; AVX512BW-LABEL: test100:3294; AVX512BW:       # %bb.0: # %entry3295; AVX512BW-NEXT:    vpmaxsb %zmm1, %zmm0, %zmm03296; AVX512BW-NEXT:    retq3297entry:3298  %cmp = icmp sge <64 x i8> %a, %b3299  %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b3300  ret <64 x i8> %sel3301}3302 3303define <64 x i8> @test101(<64 x i8> %a, <64 x i8> %b) {3304; SSE-LABEL: test101:3305; SSE:       # %bb.0: # %entry3306; SSE-NEXT:    pminub %xmm4, %xmm03307; SSE-NEXT:    pminub %xmm5, %xmm13308; SSE-NEXT:    pminub %xmm6, %xmm23309; SSE-NEXT:    pminub %xmm7, %xmm33310; SSE-NEXT:    retq3311;3312; AVX1-LABEL: test101:3313; AVX1:       # %bb.0: # %entry3314; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43315; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53316; AVX1-NEXT:    vpminub %xmm4, %xmm5, %xmm43317; AVX1-NEXT:    vpminub %xmm2, %xmm0, %xmm03318; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03319; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23320; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43321; AVX1-NEXT:    vpminub %xmm2, %xmm4, %xmm23322; AVX1-NEXT:    vpminub %xmm3, %xmm1, %xmm13323; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13324; AVX1-NEXT:    retq3325;3326; AVX2-LABEL: test101:3327; AVX2:       # %bb.0: # %entry3328; AVX2-NEXT:    vpminub %ymm2, %ymm0, %ymm03329; AVX2-NEXT:    vpminub %ymm3, %ymm1, %ymm13330; AVX2-NEXT:    retq3331;3332; AVX512F-LABEL: test101:3333; AVX512F:       # %bb.0: # %entry3334; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23335; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33336; AVX512F-NEXT:    vpminub %ymm2, %ymm3, %ymm23337; AVX512F-NEXT:    vpminub %ymm1, %ymm0, %ymm03338; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03339; AVX512F-NEXT:    retq3340;3341; AVX512BW-LABEL: test101:3342; AVX512BW:       # %bb.0: # %entry3343; AVX512BW-NEXT:    vpminub %zmm1, %zmm0, %zmm03344; AVX512BW-NEXT:    retq3345entry:3346  %cmp = icmp ult <64 x i8> %a, %b3347  %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b3348  ret <64 x i8> %sel3349}3350 3351define <64 x i8> @test102(<64 x i8> %a, <64 x i8> %b) {3352; SSE-LABEL: test102:3353; SSE:       # %bb.0: # %entry3354; SSE-NEXT:    pminub %xmm4, %xmm03355; SSE-NEXT:    pminub %xmm5, %xmm13356; SSE-NEXT:    pminub %xmm6, %xmm23357; SSE-NEXT:    pminub %xmm7, %xmm33358; SSE-NEXT:    retq3359;3360; AVX1-LABEL: test102:3361; AVX1:       # %bb.0: # %entry3362; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43363; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53364; AVX1-NEXT:    vpminub %xmm4, %xmm5, %xmm43365; AVX1-NEXT:    vpminub %xmm2, %xmm0, %xmm03366; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03367; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23368; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43369; AVX1-NEXT:    vpminub %xmm2, %xmm4, %xmm23370; AVX1-NEXT:    vpminub %xmm3, %xmm1, %xmm13371; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13372; AVX1-NEXT:    retq3373;3374; AVX2-LABEL: test102:3375; AVX2:       # %bb.0: # %entry3376; AVX2-NEXT:    vpminub %ymm2, %ymm0, %ymm03377; AVX2-NEXT:    vpminub %ymm3, %ymm1, %ymm13378; AVX2-NEXT:    retq3379;3380; AVX512F-LABEL: test102:3381; AVX512F:       # %bb.0: # %entry3382; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23383; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33384; AVX512F-NEXT:    vpminub %ymm2, %ymm3, %ymm23385; AVX512F-NEXT:    vpminub %ymm1, %ymm0, %ymm03386; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03387; AVX512F-NEXT:    retq3388;3389; AVX512BW-LABEL: test102:3390; AVX512BW:       # %bb.0: # %entry3391; AVX512BW-NEXT:    vpminub %zmm1, %zmm0, %zmm03392; AVX512BW-NEXT:    retq3393entry:3394  %cmp = icmp ule <64 x i8> %a, %b3395  %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b3396  ret <64 x i8> %sel3397}3398 3399define <64 x i8> @test103(<64 x i8> %a, <64 x i8> %b) {3400; SSE-LABEL: test103:3401; SSE:       # %bb.0: # %entry3402; SSE-NEXT:    pmaxub %xmm4, %xmm03403; SSE-NEXT:    pmaxub %xmm5, %xmm13404; SSE-NEXT:    pmaxub %xmm6, %xmm23405; SSE-NEXT:    pmaxub %xmm7, %xmm33406; SSE-NEXT:    retq3407;3408; AVX1-LABEL: test103:3409; AVX1:       # %bb.0: # %entry3410; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43411; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53412; AVX1-NEXT:    vpmaxub %xmm4, %xmm5, %xmm43413; AVX1-NEXT:    vpmaxub %xmm2, %xmm0, %xmm03414; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03415; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23416; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43417; AVX1-NEXT:    vpmaxub %xmm2, %xmm4, %xmm23418; AVX1-NEXT:    vpmaxub %xmm3, %xmm1, %xmm13419; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13420; AVX1-NEXT:    retq3421;3422; AVX2-LABEL: test103:3423; AVX2:       # %bb.0: # %entry3424; AVX2-NEXT:    vpmaxub %ymm2, %ymm0, %ymm03425; AVX2-NEXT:    vpmaxub %ymm3, %ymm1, %ymm13426; AVX2-NEXT:    retq3427;3428; AVX512F-LABEL: test103:3429; AVX512F:       # %bb.0: # %entry3430; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23431; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33432; AVX512F-NEXT:    vpmaxub %ymm2, %ymm3, %ymm23433; AVX512F-NEXT:    vpmaxub %ymm1, %ymm0, %ymm03434; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03435; AVX512F-NEXT:    retq3436;3437; AVX512BW-LABEL: test103:3438; AVX512BW:       # %bb.0: # %entry3439; AVX512BW-NEXT:    vpmaxub %zmm1, %zmm0, %zmm03440; AVX512BW-NEXT:    retq3441entry:3442  %cmp = icmp ugt <64 x i8> %a, %b3443  %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b3444  ret <64 x i8> %sel3445}3446 3447define <64 x i8> @test104(<64 x i8> %a, <64 x i8> %b) {3448; SSE-LABEL: test104:3449; SSE:       # %bb.0: # %entry3450; SSE-NEXT:    pmaxub %xmm4, %xmm03451; SSE-NEXT:    pmaxub %xmm5, %xmm13452; SSE-NEXT:    pmaxub %xmm6, %xmm23453; SSE-NEXT:    pmaxub %xmm7, %xmm33454; SSE-NEXT:    retq3455;3456; AVX1-LABEL: test104:3457; AVX1:       # %bb.0: # %entry3458; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43459; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53460; AVX1-NEXT:    vpmaxub %xmm4, %xmm5, %xmm43461; AVX1-NEXT:    vpmaxub %xmm2, %xmm0, %xmm03462; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03463; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23464; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43465; AVX1-NEXT:    vpmaxub %xmm2, %xmm4, %xmm23466; AVX1-NEXT:    vpmaxub %xmm3, %xmm1, %xmm13467; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13468; AVX1-NEXT:    retq3469;3470; AVX2-LABEL: test104:3471; AVX2:       # %bb.0: # %entry3472; AVX2-NEXT:    vpmaxub %ymm2, %ymm0, %ymm03473; AVX2-NEXT:    vpmaxub %ymm3, %ymm1, %ymm13474; AVX2-NEXT:    retq3475;3476; AVX512F-LABEL: test104:3477; AVX512F:       # %bb.0: # %entry3478; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23479; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33480; AVX512F-NEXT:    vpmaxub %ymm2, %ymm3, %ymm23481; AVX512F-NEXT:    vpmaxub %ymm1, %ymm0, %ymm03482; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03483; AVX512F-NEXT:    retq3484;3485; AVX512BW-LABEL: test104:3486; AVX512BW:       # %bb.0: # %entry3487; AVX512BW-NEXT:    vpmaxub %zmm1, %zmm0, %zmm03488; AVX512BW-NEXT:    retq3489entry:3490  %cmp = icmp uge <64 x i8> %a, %b3491  %sel = select <64 x i1> %cmp, <64 x i8> %a, <64 x i8> %b3492  ret <64 x i8> %sel3493}3494 3495define <32 x i16> @test105(<32 x i16> %a, <32 x i16> %b) {3496; SSE-LABEL: test105:3497; SSE:       # %bb.0: # %entry3498; SSE-NEXT:    pminsw %xmm4, %xmm03499; SSE-NEXT:    pminsw %xmm5, %xmm13500; SSE-NEXT:    pminsw %xmm6, %xmm23501; SSE-NEXT:    pminsw %xmm7, %xmm33502; SSE-NEXT:    retq3503;3504; AVX1-LABEL: test105:3505; AVX1:       # %bb.0: # %entry3506; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43507; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53508; AVX1-NEXT:    vpminsw %xmm4, %xmm5, %xmm43509; AVX1-NEXT:    vpminsw %xmm2, %xmm0, %xmm03510; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03511; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23512; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43513; AVX1-NEXT:    vpminsw %xmm2, %xmm4, %xmm23514; AVX1-NEXT:    vpminsw %xmm3, %xmm1, %xmm13515; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13516; AVX1-NEXT:    retq3517;3518; AVX2-LABEL: test105:3519; AVX2:       # %bb.0: # %entry3520; AVX2-NEXT:    vpminsw %ymm2, %ymm0, %ymm03521; AVX2-NEXT:    vpminsw %ymm3, %ymm1, %ymm13522; AVX2-NEXT:    retq3523;3524; AVX512F-LABEL: test105:3525; AVX512F:       # %bb.0: # %entry3526; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23527; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33528; AVX512F-NEXT:    vpminsw %ymm2, %ymm3, %ymm23529; AVX512F-NEXT:    vpminsw %ymm1, %ymm0, %ymm03530; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03531; AVX512F-NEXT:    retq3532;3533; AVX512BW-LABEL: test105:3534; AVX512BW:       # %bb.0: # %entry3535; AVX512BW-NEXT:    vpminsw %zmm1, %zmm0, %zmm03536; AVX512BW-NEXT:    retq3537entry:3538  %cmp = icmp slt <32 x i16> %a, %b3539  %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b3540  ret <32 x i16> %sel3541}3542 3543define <32 x i16> @test106(<32 x i16> %a, <32 x i16> %b) {3544; SSE-LABEL: test106:3545; SSE:       # %bb.0: # %entry3546; SSE-NEXT:    pminsw %xmm4, %xmm03547; SSE-NEXT:    pminsw %xmm5, %xmm13548; SSE-NEXT:    pminsw %xmm6, %xmm23549; SSE-NEXT:    pminsw %xmm7, %xmm33550; SSE-NEXT:    retq3551;3552; AVX1-LABEL: test106:3553; AVX1:       # %bb.0: # %entry3554; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43555; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53556; AVX1-NEXT:    vpminsw %xmm4, %xmm5, %xmm43557; AVX1-NEXT:    vpminsw %xmm2, %xmm0, %xmm03558; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03559; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23560; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43561; AVX1-NEXT:    vpminsw %xmm2, %xmm4, %xmm23562; AVX1-NEXT:    vpminsw %xmm3, %xmm1, %xmm13563; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13564; AVX1-NEXT:    retq3565;3566; AVX2-LABEL: test106:3567; AVX2:       # %bb.0: # %entry3568; AVX2-NEXT:    vpminsw %ymm2, %ymm0, %ymm03569; AVX2-NEXT:    vpminsw %ymm3, %ymm1, %ymm13570; AVX2-NEXT:    retq3571;3572; AVX512F-LABEL: test106:3573; AVX512F:       # %bb.0: # %entry3574; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23575; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33576; AVX512F-NEXT:    vpminsw %ymm2, %ymm3, %ymm23577; AVX512F-NEXT:    vpminsw %ymm1, %ymm0, %ymm03578; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03579; AVX512F-NEXT:    retq3580;3581; AVX512BW-LABEL: test106:3582; AVX512BW:       # %bb.0: # %entry3583; AVX512BW-NEXT:    vpminsw %zmm1, %zmm0, %zmm03584; AVX512BW-NEXT:    retq3585entry:3586  %cmp = icmp sle <32 x i16> %a, %b3587  %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b3588  ret <32 x i16> %sel3589}3590 3591define <32 x i16> @test107(<32 x i16> %a, <32 x i16> %b) {3592; SSE-LABEL: test107:3593; SSE:       # %bb.0: # %entry3594; SSE-NEXT:    pmaxsw %xmm4, %xmm03595; SSE-NEXT:    pmaxsw %xmm5, %xmm13596; SSE-NEXT:    pmaxsw %xmm6, %xmm23597; SSE-NEXT:    pmaxsw %xmm7, %xmm33598; SSE-NEXT:    retq3599;3600; AVX1-LABEL: test107:3601; AVX1:       # %bb.0: # %entry3602; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43603; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53604; AVX1-NEXT:    vpmaxsw %xmm4, %xmm5, %xmm43605; AVX1-NEXT:    vpmaxsw %xmm2, %xmm0, %xmm03606; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03607; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23608; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43609; AVX1-NEXT:    vpmaxsw %xmm2, %xmm4, %xmm23610; AVX1-NEXT:    vpmaxsw %xmm3, %xmm1, %xmm13611; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13612; AVX1-NEXT:    retq3613;3614; AVX2-LABEL: test107:3615; AVX2:       # %bb.0: # %entry3616; AVX2-NEXT:    vpmaxsw %ymm2, %ymm0, %ymm03617; AVX2-NEXT:    vpmaxsw %ymm3, %ymm1, %ymm13618; AVX2-NEXT:    retq3619;3620; AVX512F-LABEL: test107:3621; AVX512F:       # %bb.0: # %entry3622; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23623; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33624; AVX512F-NEXT:    vpmaxsw %ymm2, %ymm3, %ymm23625; AVX512F-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm03626; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03627; AVX512F-NEXT:    retq3628;3629; AVX512BW-LABEL: test107:3630; AVX512BW:       # %bb.0: # %entry3631; AVX512BW-NEXT:    vpmaxsw %zmm1, %zmm0, %zmm03632; AVX512BW-NEXT:    retq3633entry:3634  %cmp = icmp sgt <32 x i16> %a, %b3635  %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b3636  ret <32 x i16> %sel3637}3638 3639define <32 x i16> @test108(<32 x i16> %a, <32 x i16> %b) {3640; SSE-LABEL: test108:3641; SSE:       # %bb.0: # %entry3642; SSE-NEXT:    pmaxsw %xmm4, %xmm03643; SSE-NEXT:    pmaxsw %xmm5, %xmm13644; SSE-NEXT:    pmaxsw %xmm6, %xmm23645; SSE-NEXT:    pmaxsw %xmm7, %xmm33646; SSE-NEXT:    retq3647;3648; AVX1-LABEL: test108:3649; AVX1:       # %bb.0: # %entry3650; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43651; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53652; AVX1-NEXT:    vpmaxsw %xmm4, %xmm5, %xmm43653; AVX1-NEXT:    vpmaxsw %xmm2, %xmm0, %xmm03654; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03655; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23656; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43657; AVX1-NEXT:    vpmaxsw %xmm2, %xmm4, %xmm23658; AVX1-NEXT:    vpmaxsw %xmm3, %xmm1, %xmm13659; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13660; AVX1-NEXT:    retq3661;3662; AVX2-LABEL: test108:3663; AVX2:       # %bb.0: # %entry3664; AVX2-NEXT:    vpmaxsw %ymm2, %ymm0, %ymm03665; AVX2-NEXT:    vpmaxsw %ymm3, %ymm1, %ymm13666; AVX2-NEXT:    retq3667;3668; AVX512F-LABEL: test108:3669; AVX512F:       # %bb.0: # %entry3670; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23671; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33672; AVX512F-NEXT:    vpmaxsw %ymm2, %ymm3, %ymm23673; AVX512F-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm03674; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03675; AVX512F-NEXT:    retq3676;3677; AVX512BW-LABEL: test108:3678; AVX512BW:       # %bb.0: # %entry3679; AVX512BW-NEXT:    vpmaxsw %zmm1, %zmm0, %zmm03680; AVX512BW-NEXT:    retq3681entry:3682  %cmp = icmp sge <32 x i16> %a, %b3683  %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b3684  ret <32 x i16> %sel3685}3686 3687define <32 x i16> @test109(<32 x i16> %a, <32 x i16> %b) {3688; SSE2-LABEL: test109:3689; SSE2:       # %bb.0: # %entry3690; SSE2-NEXT:    movdqa %xmm0, %xmm83691; SSE2-NEXT:    psubusw %xmm4, %xmm83692; SSE2-NEXT:    psubw %xmm8, %xmm03693; SSE2-NEXT:    movdqa %xmm1, %xmm43694; SSE2-NEXT:    psubusw %xmm5, %xmm43695; SSE2-NEXT:    psubw %xmm4, %xmm13696; SSE2-NEXT:    movdqa %xmm2, %xmm43697; SSE2-NEXT:    psubusw %xmm6, %xmm43698; SSE2-NEXT:    psubw %xmm4, %xmm23699; SSE2-NEXT:    movdqa %xmm3, %xmm43700; SSE2-NEXT:    psubusw %xmm7, %xmm43701; SSE2-NEXT:    psubw %xmm4, %xmm33702; SSE2-NEXT:    retq3703;3704; SSE4-LABEL: test109:3705; SSE4:       # %bb.0: # %entry3706; SSE4-NEXT:    pminuw %xmm4, %xmm03707; SSE4-NEXT:    pminuw %xmm5, %xmm13708; SSE4-NEXT:    pminuw %xmm6, %xmm23709; SSE4-NEXT:    pminuw %xmm7, %xmm33710; SSE4-NEXT:    retq3711;3712; AVX1-LABEL: test109:3713; AVX1:       # %bb.0: # %entry3714; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43715; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53716; AVX1-NEXT:    vpminuw %xmm4, %xmm5, %xmm43717; AVX1-NEXT:    vpminuw %xmm2, %xmm0, %xmm03718; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03719; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23720; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43721; AVX1-NEXT:    vpminuw %xmm2, %xmm4, %xmm23722; AVX1-NEXT:    vpminuw %xmm3, %xmm1, %xmm13723; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13724; AVX1-NEXT:    retq3725;3726; AVX2-LABEL: test109:3727; AVX2:       # %bb.0: # %entry3728; AVX2-NEXT:    vpminuw %ymm2, %ymm0, %ymm03729; AVX2-NEXT:    vpminuw %ymm3, %ymm1, %ymm13730; AVX2-NEXT:    retq3731;3732; AVX512F-LABEL: test109:3733; AVX512F:       # %bb.0: # %entry3734; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23735; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33736; AVX512F-NEXT:    vpminuw %ymm2, %ymm3, %ymm23737; AVX512F-NEXT:    vpminuw %ymm1, %ymm0, %ymm03738; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03739; AVX512F-NEXT:    retq3740;3741; AVX512BW-LABEL: test109:3742; AVX512BW:       # %bb.0: # %entry3743; AVX512BW-NEXT:    vpminuw %zmm1, %zmm0, %zmm03744; AVX512BW-NEXT:    retq3745entry:3746  %cmp = icmp ult <32 x i16> %a, %b3747  %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b3748  ret <32 x i16> %sel3749}3750 3751define <32 x i16> @test110(<32 x i16> %a, <32 x i16> %b) {3752; SSE2-LABEL: test110:3753; SSE2:       # %bb.0: # %entry3754; SSE2-NEXT:    movdqa %xmm0, %xmm83755; SSE2-NEXT:    psubusw %xmm4, %xmm83756; SSE2-NEXT:    psubw %xmm8, %xmm03757; SSE2-NEXT:    movdqa %xmm1, %xmm43758; SSE2-NEXT:    psubusw %xmm5, %xmm43759; SSE2-NEXT:    psubw %xmm4, %xmm13760; SSE2-NEXT:    movdqa %xmm2, %xmm43761; SSE2-NEXT:    psubusw %xmm6, %xmm43762; SSE2-NEXT:    psubw %xmm4, %xmm23763; SSE2-NEXT:    movdqa %xmm3, %xmm43764; SSE2-NEXT:    psubusw %xmm7, %xmm43765; SSE2-NEXT:    psubw %xmm4, %xmm33766; SSE2-NEXT:    retq3767;3768; SSE4-LABEL: test110:3769; SSE4:       # %bb.0: # %entry3770; SSE4-NEXT:    pminuw %xmm4, %xmm03771; SSE4-NEXT:    pminuw %xmm5, %xmm13772; SSE4-NEXT:    pminuw %xmm6, %xmm23773; SSE4-NEXT:    pminuw %xmm7, %xmm33774; SSE4-NEXT:    retq3775;3776; AVX1-LABEL: test110:3777; AVX1:       # %bb.0: # %entry3778; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43779; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53780; AVX1-NEXT:    vpminuw %xmm4, %xmm5, %xmm43781; AVX1-NEXT:    vpminuw %xmm2, %xmm0, %xmm03782; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03783; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23784; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43785; AVX1-NEXT:    vpminuw %xmm2, %xmm4, %xmm23786; AVX1-NEXT:    vpminuw %xmm3, %xmm1, %xmm13787; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13788; AVX1-NEXT:    retq3789;3790; AVX2-LABEL: test110:3791; AVX2:       # %bb.0: # %entry3792; AVX2-NEXT:    vpminuw %ymm2, %ymm0, %ymm03793; AVX2-NEXT:    vpminuw %ymm3, %ymm1, %ymm13794; AVX2-NEXT:    retq3795;3796; AVX512F-LABEL: test110:3797; AVX512F:       # %bb.0: # %entry3798; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23799; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33800; AVX512F-NEXT:    vpminuw %ymm2, %ymm3, %ymm23801; AVX512F-NEXT:    vpminuw %ymm1, %ymm0, %ymm03802; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03803; AVX512F-NEXT:    retq3804;3805; AVX512BW-LABEL: test110:3806; AVX512BW:       # %bb.0: # %entry3807; AVX512BW-NEXT:    vpminuw %zmm1, %zmm0, %zmm03808; AVX512BW-NEXT:    retq3809entry:3810  %cmp = icmp ule <32 x i16> %a, %b3811  %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b3812  ret <32 x i16> %sel3813}3814 3815define <32 x i16> @test111(<32 x i16> %a, <32 x i16> %b) {3816; SSE2-LABEL: test111:3817; SSE2:       # %bb.0: # %entry3818; SSE2-NEXT:    psubusw %xmm0, %xmm43819; SSE2-NEXT:    paddw %xmm4, %xmm03820; SSE2-NEXT:    psubusw %xmm1, %xmm53821; SSE2-NEXT:    paddw %xmm5, %xmm13822; SSE2-NEXT:    psubusw %xmm2, %xmm63823; SSE2-NEXT:    paddw %xmm6, %xmm23824; SSE2-NEXT:    psubusw %xmm3, %xmm73825; SSE2-NEXT:    paddw %xmm7, %xmm33826; SSE2-NEXT:    retq3827;3828; SSE4-LABEL: test111:3829; SSE4:       # %bb.0: # %entry3830; SSE4-NEXT:    pmaxuw %xmm4, %xmm03831; SSE4-NEXT:    pmaxuw %xmm5, %xmm13832; SSE4-NEXT:    pmaxuw %xmm6, %xmm23833; SSE4-NEXT:    pmaxuw %xmm7, %xmm33834; SSE4-NEXT:    retq3835;3836; AVX1-LABEL: test111:3837; AVX1:       # %bb.0: # %entry3838; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43839; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53840; AVX1-NEXT:    vpmaxuw %xmm4, %xmm5, %xmm43841; AVX1-NEXT:    vpmaxuw %xmm2, %xmm0, %xmm03842; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03843; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23844; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43845; AVX1-NEXT:    vpmaxuw %xmm2, %xmm4, %xmm23846; AVX1-NEXT:    vpmaxuw %xmm3, %xmm1, %xmm13847; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13848; AVX1-NEXT:    retq3849;3850; AVX2-LABEL: test111:3851; AVX2:       # %bb.0: # %entry3852; AVX2-NEXT:    vpmaxuw %ymm2, %ymm0, %ymm03853; AVX2-NEXT:    vpmaxuw %ymm3, %ymm1, %ymm13854; AVX2-NEXT:    retq3855;3856; AVX512F-LABEL: test111:3857; AVX512F:       # %bb.0: # %entry3858; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23859; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33860; AVX512F-NEXT:    vpmaxuw %ymm2, %ymm3, %ymm23861; AVX512F-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm03862; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03863; AVX512F-NEXT:    retq3864;3865; AVX512BW-LABEL: test111:3866; AVX512BW:       # %bb.0: # %entry3867; AVX512BW-NEXT:    vpmaxuw %zmm1, %zmm0, %zmm03868; AVX512BW-NEXT:    retq3869entry:3870  %cmp = icmp ugt <32 x i16> %a, %b3871  %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b3872  ret <32 x i16> %sel3873}3874 3875define <32 x i16> @test112(<32 x i16> %a, <32 x i16> %b) {3876; SSE2-LABEL: test112:3877; SSE2:       # %bb.0: # %entry3878; SSE2-NEXT:    psubusw %xmm0, %xmm43879; SSE2-NEXT:    paddw %xmm4, %xmm03880; SSE2-NEXT:    psubusw %xmm1, %xmm53881; SSE2-NEXT:    paddw %xmm5, %xmm13882; SSE2-NEXT:    psubusw %xmm2, %xmm63883; SSE2-NEXT:    paddw %xmm6, %xmm23884; SSE2-NEXT:    psubusw %xmm3, %xmm73885; SSE2-NEXT:    paddw %xmm7, %xmm33886; SSE2-NEXT:    retq3887;3888; SSE4-LABEL: test112:3889; SSE4:       # %bb.0: # %entry3890; SSE4-NEXT:    pmaxuw %xmm4, %xmm03891; SSE4-NEXT:    pmaxuw %xmm5, %xmm13892; SSE4-NEXT:    pmaxuw %xmm6, %xmm23893; SSE4-NEXT:    pmaxuw %xmm7, %xmm33894; SSE4-NEXT:    retq3895;3896; AVX1-LABEL: test112:3897; AVX1:       # %bb.0: # %entry3898; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43899; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53900; AVX1-NEXT:    vpmaxuw %xmm4, %xmm5, %xmm43901; AVX1-NEXT:    vpmaxuw %xmm2, %xmm0, %xmm03902; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03903; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23904; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43905; AVX1-NEXT:    vpmaxuw %xmm2, %xmm4, %xmm23906; AVX1-NEXT:    vpmaxuw %xmm3, %xmm1, %xmm13907; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13908; AVX1-NEXT:    retq3909;3910; AVX2-LABEL: test112:3911; AVX2:       # %bb.0: # %entry3912; AVX2-NEXT:    vpmaxuw %ymm2, %ymm0, %ymm03913; AVX2-NEXT:    vpmaxuw %ymm3, %ymm1, %ymm13914; AVX2-NEXT:    retq3915;3916; AVX512F-LABEL: test112:3917; AVX512F:       # %bb.0: # %entry3918; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm23919; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm33920; AVX512F-NEXT:    vpmaxuw %ymm2, %ymm3, %ymm23921; AVX512F-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm03922; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm03923; AVX512F-NEXT:    retq3924;3925; AVX512BW-LABEL: test112:3926; AVX512BW:       # %bb.0: # %entry3927; AVX512BW-NEXT:    vpmaxuw %zmm1, %zmm0, %zmm03928; AVX512BW-NEXT:    retq3929entry:3930  %cmp = icmp uge <32 x i16> %a, %b3931  %sel = select <32 x i1> %cmp, <32 x i16> %a, <32 x i16> %b3932  ret <32 x i16> %sel3933}3934 3935define <16 x i32> @test113(<16 x i32> %a, <16 x i32> %b) {3936; SSE2-LABEL: test113:3937; SSE2:       # %bb.0: # %entry3938; SSE2-NEXT:    movdqa %xmm4, %xmm83939; SSE2-NEXT:    pcmpgtd %xmm0, %xmm83940; SSE2-NEXT:    pand %xmm8, %xmm03941; SSE2-NEXT:    pandn %xmm4, %xmm83942; SSE2-NEXT:    por %xmm8, %xmm03943; SSE2-NEXT:    movdqa %xmm5, %xmm43944; SSE2-NEXT:    pcmpgtd %xmm1, %xmm43945; SSE2-NEXT:    pand %xmm4, %xmm13946; SSE2-NEXT:    pandn %xmm5, %xmm43947; SSE2-NEXT:    por %xmm4, %xmm13948; SSE2-NEXT:    movdqa %xmm6, %xmm43949; SSE2-NEXT:    pcmpgtd %xmm2, %xmm43950; SSE2-NEXT:    pand %xmm4, %xmm23951; SSE2-NEXT:    pandn %xmm6, %xmm43952; SSE2-NEXT:    por %xmm4, %xmm23953; SSE2-NEXT:    movdqa %xmm7, %xmm43954; SSE2-NEXT:    pcmpgtd %xmm3, %xmm43955; SSE2-NEXT:    pand %xmm4, %xmm33956; SSE2-NEXT:    pandn %xmm7, %xmm43957; SSE2-NEXT:    por %xmm4, %xmm33958; SSE2-NEXT:    retq3959;3960; SSE4-LABEL: test113:3961; SSE4:       # %bb.0: # %entry3962; SSE4-NEXT:    pminsd %xmm4, %xmm03963; SSE4-NEXT:    pminsd %xmm5, %xmm13964; SSE4-NEXT:    pminsd %xmm6, %xmm23965; SSE4-NEXT:    pminsd %xmm7, %xmm33966; SSE4-NEXT:    retq3967;3968; AVX1-LABEL: test113:3969; AVX1:       # %bb.0: # %entry3970; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm43971; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm53972; AVX1-NEXT:    vpminsd %xmm4, %xmm5, %xmm43973; AVX1-NEXT:    vpminsd %xmm2, %xmm0, %xmm03974; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm03975; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm23976; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm43977; AVX1-NEXT:    vpminsd %xmm2, %xmm4, %xmm23978; AVX1-NEXT:    vpminsd %xmm3, %xmm1, %xmm13979; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm13980; AVX1-NEXT:    retq3981;3982; AVX2-LABEL: test113:3983; AVX2:       # %bb.0: # %entry3984; AVX2-NEXT:    vpminsd %ymm2, %ymm0, %ymm03985; AVX2-NEXT:    vpminsd %ymm3, %ymm1, %ymm13986; AVX2-NEXT:    retq3987;3988; AVX512-LABEL: test113:3989; AVX512:       # %bb.0: # %entry3990; AVX512-NEXT:    vpminsd %zmm1, %zmm0, %zmm03991; AVX512-NEXT:    retq3992entry:3993  %cmp = icmp slt <16 x i32> %a, %b3994  %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b3995  ret <16 x i32> %sel3996}3997 3998define <16 x i32> @test114(<16 x i32> %a, <16 x i32> %b) {3999; SSE2-LABEL: test114:4000; SSE2:       # %bb.0: # %entry4001; SSE2-NEXT:    movdqa %xmm4, %xmm84002; SSE2-NEXT:    pcmpgtd %xmm0, %xmm84003; SSE2-NEXT:    pand %xmm8, %xmm04004; SSE2-NEXT:    pandn %xmm4, %xmm84005; SSE2-NEXT:    por %xmm8, %xmm04006; SSE2-NEXT:    movdqa %xmm5, %xmm44007; SSE2-NEXT:    pcmpgtd %xmm1, %xmm44008; SSE2-NEXT:    pand %xmm4, %xmm14009; SSE2-NEXT:    pandn %xmm5, %xmm44010; SSE2-NEXT:    por %xmm4, %xmm14011; SSE2-NEXT:    movdqa %xmm6, %xmm44012; SSE2-NEXT:    pcmpgtd %xmm2, %xmm44013; SSE2-NEXT:    pand %xmm4, %xmm24014; SSE2-NEXT:    pandn %xmm6, %xmm44015; SSE2-NEXT:    por %xmm4, %xmm24016; SSE2-NEXT:    movdqa %xmm7, %xmm44017; SSE2-NEXT:    pcmpgtd %xmm3, %xmm44018; SSE2-NEXT:    pand %xmm4, %xmm34019; SSE2-NEXT:    pandn %xmm7, %xmm44020; SSE2-NEXT:    por %xmm4, %xmm34021; SSE2-NEXT:    retq4022;4023; SSE4-LABEL: test114:4024; SSE4:       # %bb.0: # %entry4025; SSE4-NEXT:    pminsd %xmm4, %xmm04026; SSE4-NEXT:    pminsd %xmm5, %xmm14027; SSE4-NEXT:    pminsd %xmm6, %xmm24028; SSE4-NEXT:    pminsd %xmm7, %xmm34029; SSE4-NEXT:    retq4030;4031; AVX1-LABEL: test114:4032; AVX1:       # %bb.0: # %entry4033; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm44034; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm54035; AVX1-NEXT:    vpminsd %xmm4, %xmm5, %xmm44036; AVX1-NEXT:    vpminsd %xmm2, %xmm0, %xmm04037; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm04038; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm24039; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm44040; AVX1-NEXT:    vpminsd %xmm2, %xmm4, %xmm24041; AVX1-NEXT:    vpminsd %xmm3, %xmm1, %xmm14042; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm14043; AVX1-NEXT:    retq4044;4045; AVX2-LABEL: test114:4046; AVX2:       # %bb.0: # %entry4047; AVX2-NEXT:    vpminsd %ymm2, %ymm0, %ymm04048; AVX2-NEXT:    vpminsd %ymm3, %ymm1, %ymm14049; AVX2-NEXT:    retq4050;4051; AVX512-LABEL: test114:4052; AVX512:       # %bb.0: # %entry4053; AVX512-NEXT:    vpminsd %zmm1, %zmm0, %zmm04054; AVX512-NEXT:    retq4055entry:4056  %cmp = icmp sle <16 x i32> %a, %b4057  %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b4058  ret <16 x i32> %sel4059}4060 4061define <16 x i32> @test115(<16 x i32> %a, <16 x i32> %b) {4062; SSE2-LABEL: test115:4063; SSE2:       # %bb.0: # %entry4064; SSE2-NEXT:    movdqa %xmm0, %xmm84065; SSE2-NEXT:    pcmpgtd %xmm4, %xmm84066; SSE2-NEXT:    pand %xmm8, %xmm04067; SSE2-NEXT:    pandn %xmm4, %xmm84068; SSE2-NEXT:    por %xmm8, %xmm04069; SSE2-NEXT:    movdqa %xmm1, %xmm44070; SSE2-NEXT:    pcmpgtd %xmm5, %xmm44071; SSE2-NEXT:    pand %xmm4, %xmm14072; SSE2-NEXT:    pandn %xmm5, %xmm44073; SSE2-NEXT:    por %xmm4, %xmm14074; SSE2-NEXT:    movdqa %xmm2, %xmm44075; SSE2-NEXT:    pcmpgtd %xmm6, %xmm44076; SSE2-NEXT:    pand %xmm4, %xmm24077; SSE2-NEXT:    pandn %xmm6, %xmm44078; SSE2-NEXT:    por %xmm4, %xmm24079; SSE2-NEXT:    movdqa %xmm3, %xmm44080; SSE2-NEXT:    pcmpgtd %xmm7, %xmm44081; SSE2-NEXT:    pand %xmm4, %xmm34082; SSE2-NEXT:    pandn %xmm7, %xmm44083; SSE2-NEXT:    por %xmm4, %xmm34084; SSE2-NEXT:    retq4085;4086; SSE4-LABEL: test115:4087; SSE4:       # %bb.0: # %entry4088; SSE4-NEXT:    pmaxsd %xmm4, %xmm04089; SSE4-NEXT:    pmaxsd %xmm5, %xmm14090; SSE4-NEXT:    pmaxsd %xmm6, %xmm24091; SSE4-NEXT:    pmaxsd %xmm7, %xmm34092; SSE4-NEXT:    retq4093;4094; AVX1-LABEL: test115:4095; AVX1:       # %bb.0: # %entry4096; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm44097; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm54098; AVX1-NEXT:    vpmaxsd %xmm4, %xmm5, %xmm44099; AVX1-NEXT:    vpmaxsd %xmm2, %xmm0, %xmm04100; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm04101; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm24102; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm44103; AVX1-NEXT:    vpmaxsd %xmm2, %xmm4, %xmm24104; AVX1-NEXT:    vpmaxsd %xmm3, %xmm1, %xmm14105; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm14106; AVX1-NEXT:    retq4107;4108; AVX2-LABEL: test115:4109; AVX2:       # %bb.0: # %entry4110; AVX2-NEXT:    vpmaxsd %ymm2, %ymm0, %ymm04111; AVX2-NEXT:    vpmaxsd %ymm3, %ymm1, %ymm14112; AVX2-NEXT:    retq4113;4114; AVX512-LABEL: test115:4115; AVX512:       # %bb.0: # %entry4116; AVX512-NEXT:    vpmaxsd %zmm1, %zmm0, %zmm04117; AVX512-NEXT:    retq4118entry:4119  %cmp = icmp sgt <16 x i32> %a, %b4120  %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b4121  ret <16 x i32> %sel4122}4123 4124define <16 x i32> @test116(<16 x i32> %a, <16 x i32> %b) {4125; SSE2-LABEL: test116:4126; SSE2:       # %bb.0: # %entry4127; SSE2-NEXT:    movdqa %xmm0, %xmm84128; SSE2-NEXT:    pcmpgtd %xmm4, %xmm84129; SSE2-NEXT:    pand %xmm8, %xmm04130; SSE2-NEXT:    pandn %xmm4, %xmm84131; SSE2-NEXT:    por %xmm8, %xmm04132; SSE2-NEXT:    movdqa %xmm1, %xmm44133; SSE2-NEXT:    pcmpgtd %xmm5, %xmm44134; SSE2-NEXT:    pand %xmm4, %xmm14135; SSE2-NEXT:    pandn %xmm5, %xmm44136; SSE2-NEXT:    por %xmm4, %xmm14137; SSE2-NEXT:    movdqa %xmm2, %xmm44138; SSE2-NEXT:    pcmpgtd %xmm6, %xmm44139; SSE2-NEXT:    pand %xmm4, %xmm24140; SSE2-NEXT:    pandn %xmm6, %xmm44141; SSE2-NEXT:    por %xmm4, %xmm24142; SSE2-NEXT:    movdqa %xmm3, %xmm44143; SSE2-NEXT:    pcmpgtd %xmm7, %xmm44144; SSE2-NEXT:    pand %xmm4, %xmm34145; SSE2-NEXT:    pandn %xmm7, %xmm44146; SSE2-NEXT:    por %xmm4, %xmm34147; SSE2-NEXT:    retq4148;4149; SSE4-LABEL: test116:4150; SSE4:       # %bb.0: # %entry4151; SSE4-NEXT:    pmaxsd %xmm4, %xmm04152; SSE4-NEXT:    pmaxsd %xmm5, %xmm14153; SSE4-NEXT:    pmaxsd %xmm6, %xmm24154; SSE4-NEXT:    pmaxsd %xmm7, %xmm34155; SSE4-NEXT:    retq4156;4157; AVX1-LABEL: test116:4158; AVX1:       # %bb.0: # %entry4159; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm44160; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm54161; AVX1-NEXT:    vpmaxsd %xmm4, %xmm5, %xmm44162; AVX1-NEXT:    vpmaxsd %xmm2, %xmm0, %xmm04163; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm04164; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm24165; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm44166; AVX1-NEXT:    vpmaxsd %xmm2, %xmm4, %xmm24167; AVX1-NEXT:    vpmaxsd %xmm3, %xmm1, %xmm14168; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm14169; AVX1-NEXT:    retq4170;4171; AVX2-LABEL: test116:4172; AVX2:       # %bb.0: # %entry4173; AVX2-NEXT:    vpmaxsd %ymm2, %ymm0, %ymm04174; AVX2-NEXT:    vpmaxsd %ymm3, %ymm1, %ymm14175; AVX2-NEXT:    retq4176;4177; AVX512-LABEL: test116:4178; AVX512:       # %bb.0: # %entry4179; AVX512-NEXT:    vpmaxsd %zmm1, %zmm0, %zmm04180; AVX512-NEXT:    retq4181entry:4182  %cmp = icmp sge <16 x i32> %a, %b4183  %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b4184  ret <16 x i32> %sel4185}4186 4187define <16 x i32> @test117(<16 x i32> %a, <16 x i32> %b) {4188; SSE2-LABEL: test117:4189; SSE2:       # %bb.0: # %entry4190; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648,2147483648,2147483648]4191; SSE2-NEXT:    movdqa %xmm0, %xmm94192; SSE2-NEXT:    pxor %xmm8, %xmm94193; SSE2-NEXT:    movdqa %xmm4, %xmm104194; SSE2-NEXT:    pxor %xmm8, %xmm104195; SSE2-NEXT:    pcmpgtd %xmm9, %xmm104196; SSE2-NEXT:    pand %xmm10, %xmm04197; SSE2-NEXT:    pandn %xmm4, %xmm104198; SSE2-NEXT:    por %xmm10, %xmm04199; SSE2-NEXT:    movdqa %xmm1, %xmm44200; SSE2-NEXT:    pxor %xmm8, %xmm44201; SSE2-NEXT:    movdqa %xmm5, %xmm94202; SSE2-NEXT:    pxor %xmm8, %xmm94203; SSE2-NEXT:    pcmpgtd %xmm4, %xmm94204; SSE2-NEXT:    pand %xmm9, %xmm14205; SSE2-NEXT:    pandn %xmm5, %xmm94206; SSE2-NEXT:    por %xmm9, %xmm14207; SSE2-NEXT:    movdqa %xmm2, %xmm44208; SSE2-NEXT:    pxor %xmm8, %xmm44209; SSE2-NEXT:    movdqa %xmm6, %xmm54210; SSE2-NEXT:    pxor %xmm8, %xmm54211; SSE2-NEXT:    pcmpgtd %xmm4, %xmm54212; SSE2-NEXT:    pand %xmm5, %xmm24213; SSE2-NEXT:    pandn %xmm6, %xmm54214; SSE2-NEXT:    por %xmm5, %xmm24215; SSE2-NEXT:    movdqa %xmm3, %xmm44216; SSE2-NEXT:    pxor %xmm8, %xmm44217; SSE2-NEXT:    pxor %xmm7, %xmm84218; SSE2-NEXT:    pcmpgtd %xmm4, %xmm84219; SSE2-NEXT:    pand %xmm8, %xmm34220; SSE2-NEXT:    pandn %xmm7, %xmm84221; SSE2-NEXT:    por %xmm8, %xmm34222; SSE2-NEXT:    retq4223;4224; SSE4-LABEL: test117:4225; SSE4:       # %bb.0: # %entry4226; SSE4-NEXT:    pminud %xmm4, %xmm04227; SSE4-NEXT:    pminud %xmm5, %xmm14228; SSE4-NEXT:    pminud %xmm6, %xmm24229; SSE4-NEXT:    pminud %xmm7, %xmm34230; SSE4-NEXT:    retq4231;4232; AVX1-LABEL: test117:4233; AVX1:       # %bb.0: # %entry4234; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm44235; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm54236; AVX1-NEXT:    vpminud %xmm4, %xmm5, %xmm44237; AVX1-NEXT:    vpminud %xmm2, %xmm0, %xmm04238; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm04239; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm24240; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm44241; AVX1-NEXT:    vpminud %xmm2, %xmm4, %xmm24242; AVX1-NEXT:    vpminud %xmm3, %xmm1, %xmm14243; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm14244; AVX1-NEXT:    retq4245;4246; AVX2-LABEL: test117:4247; AVX2:       # %bb.0: # %entry4248; AVX2-NEXT:    vpminud %ymm2, %ymm0, %ymm04249; AVX2-NEXT:    vpminud %ymm3, %ymm1, %ymm14250; AVX2-NEXT:    retq4251;4252; AVX512-LABEL: test117:4253; AVX512:       # %bb.0: # %entry4254; AVX512-NEXT:    vpminud %zmm1, %zmm0, %zmm04255; AVX512-NEXT:    retq4256entry:4257  %cmp = icmp ult <16 x i32> %a, %b4258  %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b4259  ret <16 x i32> %sel4260}4261 4262define <16 x i32> @test118(<16 x i32> %a, <16 x i32> %b) {4263; SSE2-LABEL: test118:4264; SSE2:       # %bb.0: # %entry4265; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648,2147483648,2147483648]4266; SSE2-NEXT:    movdqa %xmm0, %xmm94267; SSE2-NEXT:    pxor %xmm8, %xmm94268; SSE2-NEXT:    movdqa %xmm4, %xmm104269; SSE2-NEXT:    pxor %xmm8, %xmm104270; SSE2-NEXT:    pcmpgtd %xmm9, %xmm104271; SSE2-NEXT:    pand %xmm10, %xmm04272; SSE2-NEXT:    pandn %xmm4, %xmm104273; SSE2-NEXT:    por %xmm10, %xmm04274; SSE2-NEXT:    movdqa %xmm1, %xmm44275; SSE2-NEXT:    pxor %xmm8, %xmm44276; SSE2-NEXT:    movdqa %xmm5, %xmm94277; SSE2-NEXT:    pxor %xmm8, %xmm94278; SSE2-NEXT:    pcmpgtd %xmm4, %xmm94279; SSE2-NEXT:    pand %xmm9, %xmm14280; SSE2-NEXT:    pandn %xmm5, %xmm94281; SSE2-NEXT:    por %xmm9, %xmm14282; SSE2-NEXT:    movdqa %xmm2, %xmm44283; SSE2-NEXT:    pxor %xmm8, %xmm44284; SSE2-NEXT:    movdqa %xmm6, %xmm54285; SSE2-NEXT:    pxor %xmm8, %xmm54286; SSE2-NEXT:    pcmpgtd %xmm4, %xmm54287; SSE2-NEXT:    pand %xmm5, %xmm24288; SSE2-NEXT:    pandn %xmm6, %xmm54289; SSE2-NEXT:    por %xmm5, %xmm24290; SSE2-NEXT:    movdqa %xmm3, %xmm44291; SSE2-NEXT:    pxor %xmm8, %xmm44292; SSE2-NEXT:    pxor %xmm7, %xmm84293; SSE2-NEXT:    pcmpgtd %xmm4, %xmm84294; SSE2-NEXT:    pand %xmm8, %xmm34295; SSE2-NEXT:    pandn %xmm7, %xmm84296; SSE2-NEXT:    por %xmm8, %xmm34297; SSE2-NEXT:    retq4298;4299; SSE4-LABEL: test118:4300; SSE4:       # %bb.0: # %entry4301; SSE4-NEXT:    pminud %xmm4, %xmm04302; SSE4-NEXT:    pminud %xmm5, %xmm14303; SSE4-NEXT:    pminud %xmm6, %xmm24304; SSE4-NEXT:    pminud %xmm7, %xmm34305; SSE4-NEXT:    retq4306;4307; AVX1-LABEL: test118:4308; AVX1:       # %bb.0: # %entry4309; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm44310; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm54311; AVX1-NEXT:    vpminud %xmm4, %xmm5, %xmm44312; AVX1-NEXT:    vpminud %xmm2, %xmm0, %xmm04313; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm04314; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm24315; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm44316; AVX1-NEXT:    vpminud %xmm2, %xmm4, %xmm24317; AVX1-NEXT:    vpminud %xmm3, %xmm1, %xmm14318; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm14319; AVX1-NEXT:    retq4320;4321; AVX2-LABEL: test118:4322; AVX2:       # %bb.0: # %entry4323; AVX2-NEXT:    vpminud %ymm2, %ymm0, %ymm04324; AVX2-NEXT:    vpminud %ymm3, %ymm1, %ymm14325; AVX2-NEXT:    retq4326;4327; AVX512-LABEL: test118:4328; AVX512:       # %bb.0: # %entry4329; AVX512-NEXT:    vpminud %zmm1, %zmm0, %zmm04330; AVX512-NEXT:    retq4331entry:4332  %cmp = icmp ule <16 x i32> %a, %b4333  %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b4334  ret <16 x i32> %sel4335}4336 4337define <16 x i32> @test119(<16 x i32> %a, <16 x i32> %b) {4338; SSE2-LABEL: test119:4339; SSE2:       # %bb.0: # %entry4340; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648,2147483648,2147483648]4341; SSE2-NEXT:    movdqa %xmm4, %xmm94342; SSE2-NEXT:    pxor %xmm8, %xmm94343; SSE2-NEXT:    movdqa %xmm0, %xmm104344; SSE2-NEXT:    pxor %xmm8, %xmm104345; SSE2-NEXT:    pcmpgtd %xmm9, %xmm104346; SSE2-NEXT:    pand %xmm10, %xmm04347; SSE2-NEXT:    pandn %xmm4, %xmm104348; SSE2-NEXT:    por %xmm10, %xmm04349; SSE2-NEXT:    movdqa %xmm5, %xmm44350; SSE2-NEXT:    pxor %xmm8, %xmm44351; SSE2-NEXT:    movdqa %xmm1, %xmm94352; SSE2-NEXT:    pxor %xmm8, %xmm94353; SSE2-NEXT:    pcmpgtd %xmm4, %xmm94354; SSE2-NEXT:    pand %xmm9, %xmm14355; SSE2-NEXT:    pandn %xmm5, %xmm94356; SSE2-NEXT:    por %xmm9, %xmm14357; SSE2-NEXT:    movdqa %xmm6, %xmm44358; SSE2-NEXT:    pxor %xmm8, %xmm44359; SSE2-NEXT:    movdqa %xmm2, %xmm54360; SSE2-NEXT:    pxor %xmm8, %xmm54361; SSE2-NEXT:    pcmpgtd %xmm4, %xmm54362; SSE2-NEXT:    pand %xmm5, %xmm24363; SSE2-NEXT:    pandn %xmm6, %xmm54364; SSE2-NEXT:    por %xmm5, %xmm24365; SSE2-NEXT:    movdqa %xmm7, %xmm44366; SSE2-NEXT:    pxor %xmm8, %xmm44367; SSE2-NEXT:    pxor %xmm3, %xmm84368; SSE2-NEXT:    pcmpgtd %xmm4, %xmm84369; SSE2-NEXT:    pand %xmm8, %xmm34370; SSE2-NEXT:    pandn %xmm7, %xmm84371; SSE2-NEXT:    por %xmm8, %xmm34372; SSE2-NEXT:    retq4373;4374; SSE4-LABEL: test119:4375; SSE4:       # %bb.0: # %entry4376; SSE4-NEXT:    pmaxud %xmm4, %xmm04377; SSE4-NEXT:    pmaxud %xmm5, %xmm14378; SSE4-NEXT:    pmaxud %xmm6, %xmm24379; SSE4-NEXT:    pmaxud %xmm7, %xmm34380; SSE4-NEXT:    retq4381;4382; AVX1-LABEL: test119:4383; AVX1:       # %bb.0: # %entry4384; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm44385; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm54386; AVX1-NEXT:    vpmaxud %xmm4, %xmm5, %xmm44387; AVX1-NEXT:    vpmaxud %xmm2, %xmm0, %xmm04388; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm04389; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm24390; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm44391; AVX1-NEXT:    vpmaxud %xmm2, %xmm4, %xmm24392; AVX1-NEXT:    vpmaxud %xmm3, %xmm1, %xmm14393; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm14394; AVX1-NEXT:    retq4395;4396; AVX2-LABEL: test119:4397; AVX2:       # %bb.0: # %entry4398; AVX2-NEXT:    vpmaxud %ymm2, %ymm0, %ymm04399; AVX2-NEXT:    vpmaxud %ymm3, %ymm1, %ymm14400; AVX2-NEXT:    retq4401;4402; AVX512-LABEL: test119:4403; AVX512:       # %bb.0: # %entry4404; AVX512-NEXT:    vpmaxud %zmm1, %zmm0, %zmm04405; AVX512-NEXT:    retq4406entry:4407  %cmp = icmp ugt <16 x i32> %a, %b4408  %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b4409  ret <16 x i32> %sel4410}4411 4412define <16 x i32> @test120(<16 x i32> %a, <16 x i32> %b) {4413; SSE2-LABEL: test120:4414; SSE2:       # %bb.0: # %entry4415; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648,2147483648,2147483648]4416; SSE2-NEXT:    movdqa %xmm4, %xmm94417; SSE2-NEXT:    pxor %xmm8, %xmm94418; SSE2-NEXT:    movdqa %xmm0, %xmm104419; SSE2-NEXT:    pxor %xmm8, %xmm104420; SSE2-NEXT:    pcmpgtd %xmm9, %xmm104421; SSE2-NEXT:    pand %xmm10, %xmm04422; SSE2-NEXT:    pandn %xmm4, %xmm104423; SSE2-NEXT:    por %xmm10, %xmm04424; SSE2-NEXT:    movdqa %xmm5, %xmm44425; SSE2-NEXT:    pxor %xmm8, %xmm44426; SSE2-NEXT:    movdqa %xmm1, %xmm94427; SSE2-NEXT:    pxor %xmm8, %xmm94428; SSE2-NEXT:    pcmpgtd %xmm4, %xmm94429; SSE2-NEXT:    pand %xmm9, %xmm14430; SSE2-NEXT:    pandn %xmm5, %xmm94431; SSE2-NEXT:    por %xmm9, %xmm14432; SSE2-NEXT:    movdqa %xmm6, %xmm44433; SSE2-NEXT:    pxor %xmm8, %xmm44434; SSE2-NEXT:    movdqa %xmm2, %xmm54435; SSE2-NEXT:    pxor %xmm8, %xmm54436; SSE2-NEXT:    pcmpgtd %xmm4, %xmm54437; SSE2-NEXT:    pand %xmm5, %xmm24438; SSE2-NEXT:    pandn %xmm6, %xmm54439; SSE2-NEXT:    por %xmm5, %xmm24440; SSE2-NEXT:    movdqa %xmm7, %xmm44441; SSE2-NEXT:    pxor %xmm8, %xmm44442; SSE2-NEXT:    pxor %xmm3, %xmm84443; SSE2-NEXT:    pcmpgtd %xmm4, %xmm84444; SSE2-NEXT:    pand %xmm8, %xmm34445; SSE2-NEXT:    pandn %xmm7, %xmm84446; SSE2-NEXT:    por %xmm8, %xmm34447; SSE2-NEXT:    retq4448;4449; SSE4-LABEL: test120:4450; SSE4:       # %bb.0: # %entry4451; SSE4-NEXT:    pmaxud %xmm4, %xmm04452; SSE4-NEXT:    pmaxud %xmm5, %xmm14453; SSE4-NEXT:    pmaxud %xmm6, %xmm24454; SSE4-NEXT:    pmaxud %xmm7, %xmm34455; SSE4-NEXT:    retq4456;4457; AVX1-LABEL: test120:4458; AVX1:       # %bb.0: # %entry4459; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm44460; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm54461; AVX1-NEXT:    vpmaxud %xmm4, %xmm5, %xmm44462; AVX1-NEXT:    vpmaxud %xmm2, %xmm0, %xmm04463; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm04464; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm24465; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm44466; AVX1-NEXT:    vpmaxud %xmm2, %xmm4, %xmm24467; AVX1-NEXT:    vpmaxud %xmm3, %xmm1, %xmm14468; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm14469; AVX1-NEXT:    retq4470;4471; AVX2-LABEL: test120:4472; AVX2:       # %bb.0: # %entry4473; AVX2-NEXT:    vpmaxud %ymm2, %ymm0, %ymm04474; AVX2-NEXT:    vpmaxud %ymm3, %ymm1, %ymm14475; AVX2-NEXT:    retq4476;4477; AVX512-LABEL: test120:4478; AVX512:       # %bb.0: # %entry4479; AVX512-NEXT:    vpmaxud %zmm1, %zmm0, %zmm04480; AVX512-NEXT:    retq4481entry:4482  %cmp = icmp uge <16 x i32> %a, %b4483  %sel = select <16 x i1> %cmp, <16 x i32> %a, <16 x i32> %b4484  ret <16 x i32> %sel4485}4486 4487define <8 x i64> @test121(<8 x i64> %a, <8 x i64> %b) {4488; SSE2-LABEL: test121:4489; SSE2:       # %bb.0: # %entry4490; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648]4491; SSE2-NEXT:    movdqa %xmm0, %xmm94492; SSE2-NEXT:    pxor %xmm8, %xmm94493; SSE2-NEXT:    movdqa %xmm4, %xmm104494; SSE2-NEXT:    pxor %xmm8, %xmm104495; SSE2-NEXT:    movdqa %xmm10, %xmm114496; SSE2-NEXT:    pcmpgtd %xmm9, %xmm114497; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]4498; SSE2-NEXT:    pcmpeqd %xmm9, %xmm104499; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]4500; SSE2-NEXT:    pand %xmm12, %xmm94501; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]4502; SSE2-NEXT:    por %xmm9, %xmm104503; SSE2-NEXT:    pand %xmm10, %xmm04504; SSE2-NEXT:    pandn %xmm4, %xmm104505; SSE2-NEXT:    por %xmm10, %xmm04506; SSE2-NEXT:    movdqa %xmm1, %xmm44507; SSE2-NEXT:    pxor %xmm8, %xmm44508; SSE2-NEXT:    movdqa %xmm5, %xmm94509; SSE2-NEXT:    pxor %xmm8, %xmm94510; SSE2-NEXT:    movdqa %xmm9, %xmm104511; SSE2-NEXT:    pcmpgtd %xmm4, %xmm104512; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]4513; SSE2-NEXT:    pcmpeqd %xmm4, %xmm94514; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]4515; SSE2-NEXT:    pand %xmm11, %xmm44516; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]4517; SSE2-NEXT:    por %xmm4, %xmm94518; SSE2-NEXT:    pand %xmm9, %xmm14519; SSE2-NEXT:    pandn %xmm5, %xmm94520; SSE2-NEXT:    por %xmm9, %xmm14521; SSE2-NEXT:    movdqa %xmm2, %xmm44522; SSE2-NEXT:    pxor %xmm8, %xmm44523; SSE2-NEXT:    movdqa %xmm6, %xmm54524; SSE2-NEXT:    pxor %xmm8, %xmm54525; SSE2-NEXT:    movdqa %xmm5, %xmm94526; SSE2-NEXT:    pcmpgtd %xmm4, %xmm94527; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]4528; SSE2-NEXT:    pcmpeqd %xmm4, %xmm54529; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]4530; SSE2-NEXT:    pand %xmm10, %xmm44531; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]4532; SSE2-NEXT:    por %xmm4, %xmm54533; SSE2-NEXT:    pand %xmm5, %xmm24534; SSE2-NEXT:    pandn %xmm6, %xmm54535; SSE2-NEXT:    por %xmm5, %xmm24536; SSE2-NEXT:    movdqa %xmm3, %xmm44537; SSE2-NEXT:    pxor %xmm8, %xmm44538; SSE2-NEXT:    pxor %xmm7, %xmm84539; SSE2-NEXT:    movdqa %xmm8, %xmm54540; SSE2-NEXT:    pcmpgtd %xmm4, %xmm54541; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]4542; SSE2-NEXT:    pcmpeqd %xmm4, %xmm84543; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]4544; SSE2-NEXT:    pand %xmm6, %xmm44545; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]4546; SSE2-NEXT:    por %xmm4, %xmm54547; SSE2-NEXT:    pand %xmm5, %xmm34548; SSE2-NEXT:    pandn %xmm7, %xmm54549; SSE2-NEXT:    por %xmm5, %xmm34550; SSE2-NEXT:    retq4551;4552; SSE4-LABEL: test121:4553; SSE4:       # %bb.0: # %entry4554; SSE4-NEXT:    movdqa %xmm0, %xmm84555; SSE4-NEXT:    movdqa %xmm4, %xmm04556; SSE4-NEXT:    pcmpgtq %xmm8, %xmm04557; SSE4-NEXT:    blendvpd %xmm0, %xmm8, %xmm44558; SSE4-NEXT:    movdqa %xmm5, %xmm04559; SSE4-NEXT:    pcmpgtq %xmm1, %xmm04560; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm54561; SSE4-NEXT:    movdqa %xmm6, %xmm04562; SSE4-NEXT:    pcmpgtq %xmm2, %xmm04563; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm64564; SSE4-NEXT:    movdqa %xmm7, %xmm04565; SSE4-NEXT:    pcmpgtq %xmm3, %xmm04566; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm74567; SSE4-NEXT:    movapd %xmm4, %xmm04568; SSE4-NEXT:    movapd %xmm5, %xmm14569; SSE4-NEXT:    movapd %xmm6, %xmm24570; SSE4-NEXT:    movapd %xmm7, %xmm34571; SSE4-NEXT:    retq4572;4573; AVX1-LABEL: test121:4574; AVX1:       # %bb.0: # %entry4575; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm44576; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm54577; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm44578; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm2, %xmm54579; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm5, %ymm44580; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm04581; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24582; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm44583; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm24584; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm3, %xmm44585; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm24586; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm14587; AVX1-NEXT:    retq4588;4589; AVX2-LABEL: test121:4590; AVX2:       # %bb.0: # %entry4591; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm2, %ymm44592; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm04593; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm3, %ymm24594; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm14595; AVX2-NEXT:    retq4596;4597; AVX512-LABEL: test121:4598; AVX512:       # %bb.0: # %entry4599; AVX512-NEXT:    vpminsq %zmm1, %zmm0, %zmm04600; AVX512-NEXT:    retq4601entry:4602  %cmp = icmp slt <8 x i64> %a, %b4603  %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b4604  ret <8 x i64> %sel4605}4606 4607define <8 x i64> @test122(<8 x i64> %a, <8 x i64> %b) {4608; SSE2-LABEL: test122:4609; SSE2:       # %bb.0: # %entry4610; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648]4611; SSE2-NEXT:    movdqa %xmm0, %xmm94612; SSE2-NEXT:    pxor %xmm8, %xmm94613; SSE2-NEXT:    movdqa %xmm4, %xmm104614; SSE2-NEXT:    pxor %xmm8, %xmm104615; SSE2-NEXT:    movdqa %xmm10, %xmm114616; SSE2-NEXT:    pcmpgtd %xmm9, %xmm114617; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]4618; SSE2-NEXT:    pcmpeqd %xmm9, %xmm104619; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]4620; SSE2-NEXT:    pand %xmm12, %xmm94621; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]4622; SSE2-NEXT:    por %xmm9, %xmm104623; SSE2-NEXT:    pand %xmm10, %xmm04624; SSE2-NEXT:    pandn %xmm4, %xmm104625; SSE2-NEXT:    por %xmm10, %xmm04626; SSE2-NEXT:    movdqa %xmm1, %xmm44627; SSE2-NEXT:    pxor %xmm8, %xmm44628; SSE2-NEXT:    movdqa %xmm5, %xmm94629; SSE2-NEXT:    pxor %xmm8, %xmm94630; SSE2-NEXT:    movdqa %xmm9, %xmm104631; SSE2-NEXT:    pcmpgtd %xmm4, %xmm104632; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]4633; SSE2-NEXT:    pcmpeqd %xmm4, %xmm94634; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]4635; SSE2-NEXT:    pand %xmm11, %xmm44636; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]4637; SSE2-NEXT:    por %xmm4, %xmm94638; SSE2-NEXT:    pand %xmm9, %xmm14639; SSE2-NEXT:    pandn %xmm5, %xmm94640; SSE2-NEXT:    por %xmm9, %xmm14641; SSE2-NEXT:    movdqa %xmm2, %xmm44642; SSE2-NEXT:    pxor %xmm8, %xmm44643; SSE2-NEXT:    movdqa %xmm6, %xmm54644; SSE2-NEXT:    pxor %xmm8, %xmm54645; SSE2-NEXT:    movdqa %xmm5, %xmm94646; SSE2-NEXT:    pcmpgtd %xmm4, %xmm94647; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]4648; SSE2-NEXT:    pcmpeqd %xmm4, %xmm54649; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]4650; SSE2-NEXT:    pand %xmm10, %xmm44651; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]4652; SSE2-NEXT:    por %xmm4, %xmm54653; SSE2-NEXT:    pand %xmm5, %xmm24654; SSE2-NEXT:    pandn %xmm6, %xmm54655; SSE2-NEXT:    por %xmm5, %xmm24656; SSE2-NEXT:    movdqa %xmm3, %xmm44657; SSE2-NEXT:    pxor %xmm8, %xmm44658; SSE2-NEXT:    pxor %xmm7, %xmm84659; SSE2-NEXT:    movdqa %xmm8, %xmm54660; SSE2-NEXT:    pcmpgtd %xmm4, %xmm54661; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]4662; SSE2-NEXT:    pcmpeqd %xmm4, %xmm84663; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]4664; SSE2-NEXT:    pand %xmm6, %xmm44665; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]4666; SSE2-NEXT:    por %xmm4, %xmm54667; SSE2-NEXT:    pand %xmm5, %xmm34668; SSE2-NEXT:    pandn %xmm7, %xmm54669; SSE2-NEXT:    por %xmm5, %xmm34670; SSE2-NEXT:    retq4671;4672; SSE4-LABEL: test122:4673; SSE4:       # %bb.0: # %entry4674; SSE4-NEXT:    movdqa %xmm0, %xmm84675; SSE4-NEXT:    movdqa %xmm4, %xmm04676; SSE4-NEXT:    pcmpgtq %xmm8, %xmm04677; SSE4-NEXT:    blendvpd %xmm0, %xmm8, %xmm44678; SSE4-NEXT:    movdqa %xmm5, %xmm04679; SSE4-NEXT:    pcmpgtq %xmm1, %xmm04680; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm54681; SSE4-NEXT:    movdqa %xmm6, %xmm04682; SSE4-NEXT:    pcmpgtq %xmm2, %xmm04683; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm64684; SSE4-NEXT:    movdqa %xmm7, %xmm04685; SSE4-NEXT:    pcmpgtq %xmm3, %xmm04686; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm74687; SSE4-NEXT:    movapd %xmm4, %xmm04688; SSE4-NEXT:    movapd %xmm5, %xmm14689; SSE4-NEXT:    movapd %xmm6, %xmm24690; SSE4-NEXT:    movapd %xmm7, %xmm34691; SSE4-NEXT:    retq4692;4693; AVX1-LABEL: test122:4694; AVX1:       # %bb.0: # %entry4695; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm44696; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm54697; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm44698; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm2, %xmm54699; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm5, %ymm44700; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm04701; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm24702; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm44703; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm24704; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm3, %xmm44705; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm24706; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm14707; AVX1-NEXT:    retq4708;4709; AVX2-LABEL: test122:4710; AVX2:       # %bb.0: # %entry4711; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm2, %ymm44712; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm04713; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm3, %ymm24714; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm14715; AVX2-NEXT:    retq4716;4717; AVX512-LABEL: test122:4718; AVX512:       # %bb.0: # %entry4719; AVX512-NEXT:    vpminsq %zmm1, %zmm0, %zmm04720; AVX512-NEXT:    retq4721entry:4722  %cmp = icmp sle <8 x i64> %a, %b4723  %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b4724  ret <8 x i64> %sel4725}4726 4727define <8 x i64> @test123(<8 x i64> %a, <8 x i64> %b) {4728; SSE2-LABEL: test123:4729; SSE2:       # %bb.0: # %entry4730; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648]4731; SSE2-NEXT:    movdqa %xmm4, %xmm94732; SSE2-NEXT:    pxor %xmm8, %xmm94733; SSE2-NEXT:    movdqa %xmm0, %xmm104734; SSE2-NEXT:    pxor %xmm8, %xmm104735; SSE2-NEXT:    movdqa %xmm10, %xmm114736; SSE2-NEXT:    pcmpgtd %xmm9, %xmm114737; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]4738; SSE2-NEXT:    pcmpeqd %xmm9, %xmm104739; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]4740; SSE2-NEXT:    pand %xmm12, %xmm94741; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]4742; SSE2-NEXT:    por %xmm9, %xmm104743; SSE2-NEXT:    pand %xmm10, %xmm04744; SSE2-NEXT:    pandn %xmm4, %xmm104745; SSE2-NEXT:    por %xmm10, %xmm04746; SSE2-NEXT:    movdqa %xmm5, %xmm44747; SSE2-NEXT:    pxor %xmm8, %xmm44748; SSE2-NEXT:    movdqa %xmm1, %xmm94749; SSE2-NEXT:    pxor %xmm8, %xmm94750; SSE2-NEXT:    movdqa %xmm9, %xmm104751; SSE2-NEXT:    pcmpgtd %xmm4, %xmm104752; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]4753; SSE2-NEXT:    pcmpeqd %xmm4, %xmm94754; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]4755; SSE2-NEXT:    pand %xmm11, %xmm44756; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]4757; SSE2-NEXT:    por %xmm4, %xmm94758; SSE2-NEXT:    pand %xmm9, %xmm14759; SSE2-NEXT:    pandn %xmm5, %xmm94760; SSE2-NEXT:    por %xmm9, %xmm14761; SSE2-NEXT:    movdqa %xmm6, %xmm44762; SSE2-NEXT:    pxor %xmm8, %xmm44763; SSE2-NEXT:    movdqa %xmm2, %xmm54764; SSE2-NEXT:    pxor %xmm8, %xmm54765; SSE2-NEXT:    movdqa %xmm5, %xmm94766; SSE2-NEXT:    pcmpgtd %xmm4, %xmm94767; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]4768; SSE2-NEXT:    pcmpeqd %xmm4, %xmm54769; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]4770; SSE2-NEXT:    pand %xmm10, %xmm44771; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]4772; SSE2-NEXT:    por %xmm4, %xmm54773; SSE2-NEXT:    pand %xmm5, %xmm24774; SSE2-NEXT:    pandn %xmm6, %xmm54775; SSE2-NEXT:    por %xmm5, %xmm24776; SSE2-NEXT:    movdqa %xmm7, %xmm44777; SSE2-NEXT:    pxor %xmm8, %xmm44778; SSE2-NEXT:    pxor %xmm3, %xmm84779; SSE2-NEXT:    movdqa %xmm8, %xmm54780; SSE2-NEXT:    pcmpgtd %xmm4, %xmm54781; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]4782; SSE2-NEXT:    pcmpeqd %xmm4, %xmm84783; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]4784; SSE2-NEXT:    pand %xmm6, %xmm44785; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]4786; SSE2-NEXT:    por %xmm4, %xmm54787; SSE2-NEXT:    pand %xmm5, %xmm34788; SSE2-NEXT:    pandn %xmm7, %xmm54789; SSE2-NEXT:    por %xmm5, %xmm34790; SSE2-NEXT:    retq4791;4792; SSE4-LABEL: test123:4793; SSE4:       # %bb.0: # %entry4794; SSE4-NEXT:    movdqa %xmm0, %xmm84795; SSE4-NEXT:    pcmpgtq %xmm4, %xmm04796; SSE4-NEXT:    blendvpd %xmm0, %xmm8, %xmm44797; SSE4-NEXT:    movdqa %xmm1, %xmm04798; SSE4-NEXT:    pcmpgtq %xmm5, %xmm04799; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm54800; SSE4-NEXT:    movdqa %xmm2, %xmm04801; SSE4-NEXT:    pcmpgtq %xmm6, %xmm04802; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm64803; SSE4-NEXT:    movdqa %xmm3, %xmm04804; SSE4-NEXT:    pcmpgtq %xmm7, %xmm04805; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm74806; SSE4-NEXT:    movapd %xmm4, %xmm04807; SSE4-NEXT:    movapd %xmm5, %xmm14808; SSE4-NEXT:    movapd %xmm6, %xmm24809; SSE4-NEXT:    movapd %xmm7, %xmm34810; SSE4-NEXT:    retq4811;4812; AVX1-LABEL: test123:4813; AVX1:       # %bb.0: # %entry4814; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm44815; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm54816; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm44817; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm0, %xmm54818; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm5, %ymm44819; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm04820; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm24821; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm44822; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm24823; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm1, %xmm44824; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm24825; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm14826; AVX1-NEXT:    retq4827;4828; AVX2-LABEL: test123:4829; AVX2:       # %bb.0: # %entry4830; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm0, %ymm44831; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm04832; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm1, %ymm24833; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm14834; AVX2-NEXT:    retq4835;4836; AVX512-LABEL: test123:4837; AVX512:       # %bb.0: # %entry4838; AVX512-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm04839; AVX512-NEXT:    retq4840entry:4841  %cmp = icmp sgt <8 x i64> %a, %b4842  %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b4843  ret <8 x i64> %sel4844}4845 4846define <8 x i64> @test124(<8 x i64> %a, <8 x i64> %b) {4847; SSE2-LABEL: test124:4848; SSE2:       # %bb.0: # %entry4849; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648]4850; SSE2-NEXT:    movdqa %xmm4, %xmm94851; SSE2-NEXT:    pxor %xmm8, %xmm94852; SSE2-NEXT:    movdqa %xmm0, %xmm104853; SSE2-NEXT:    pxor %xmm8, %xmm104854; SSE2-NEXT:    movdqa %xmm10, %xmm114855; SSE2-NEXT:    pcmpgtd %xmm9, %xmm114856; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]4857; SSE2-NEXT:    pcmpeqd %xmm9, %xmm104858; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]4859; SSE2-NEXT:    pand %xmm12, %xmm94860; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]4861; SSE2-NEXT:    por %xmm9, %xmm104862; SSE2-NEXT:    pand %xmm10, %xmm04863; SSE2-NEXT:    pandn %xmm4, %xmm104864; SSE2-NEXT:    por %xmm10, %xmm04865; SSE2-NEXT:    movdqa %xmm5, %xmm44866; SSE2-NEXT:    pxor %xmm8, %xmm44867; SSE2-NEXT:    movdqa %xmm1, %xmm94868; SSE2-NEXT:    pxor %xmm8, %xmm94869; SSE2-NEXT:    movdqa %xmm9, %xmm104870; SSE2-NEXT:    pcmpgtd %xmm4, %xmm104871; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]4872; SSE2-NEXT:    pcmpeqd %xmm4, %xmm94873; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]4874; SSE2-NEXT:    pand %xmm11, %xmm44875; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]4876; SSE2-NEXT:    por %xmm4, %xmm94877; SSE2-NEXT:    pand %xmm9, %xmm14878; SSE2-NEXT:    pandn %xmm5, %xmm94879; SSE2-NEXT:    por %xmm9, %xmm14880; SSE2-NEXT:    movdqa %xmm6, %xmm44881; SSE2-NEXT:    pxor %xmm8, %xmm44882; SSE2-NEXT:    movdqa %xmm2, %xmm54883; SSE2-NEXT:    pxor %xmm8, %xmm54884; SSE2-NEXT:    movdqa %xmm5, %xmm94885; SSE2-NEXT:    pcmpgtd %xmm4, %xmm94886; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]4887; SSE2-NEXT:    pcmpeqd %xmm4, %xmm54888; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]4889; SSE2-NEXT:    pand %xmm10, %xmm44890; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]4891; SSE2-NEXT:    por %xmm4, %xmm54892; SSE2-NEXT:    pand %xmm5, %xmm24893; SSE2-NEXT:    pandn %xmm6, %xmm54894; SSE2-NEXT:    por %xmm5, %xmm24895; SSE2-NEXT:    movdqa %xmm7, %xmm44896; SSE2-NEXT:    pxor %xmm8, %xmm44897; SSE2-NEXT:    pxor %xmm3, %xmm84898; SSE2-NEXT:    movdqa %xmm8, %xmm54899; SSE2-NEXT:    pcmpgtd %xmm4, %xmm54900; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]4901; SSE2-NEXT:    pcmpeqd %xmm4, %xmm84902; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]4903; SSE2-NEXT:    pand %xmm6, %xmm44904; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]4905; SSE2-NEXT:    por %xmm4, %xmm54906; SSE2-NEXT:    pand %xmm5, %xmm34907; SSE2-NEXT:    pandn %xmm7, %xmm54908; SSE2-NEXT:    por %xmm5, %xmm34909; SSE2-NEXT:    retq4910;4911; SSE4-LABEL: test124:4912; SSE4:       # %bb.0: # %entry4913; SSE4-NEXT:    movdqa %xmm0, %xmm84914; SSE4-NEXT:    pcmpgtq %xmm4, %xmm04915; SSE4-NEXT:    blendvpd %xmm0, %xmm8, %xmm44916; SSE4-NEXT:    movdqa %xmm1, %xmm04917; SSE4-NEXT:    pcmpgtq %xmm5, %xmm04918; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm54919; SSE4-NEXT:    movdqa %xmm2, %xmm04920; SSE4-NEXT:    pcmpgtq %xmm6, %xmm04921; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm64922; SSE4-NEXT:    movdqa %xmm3, %xmm04923; SSE4-NEXT:    pcmpgtq %xmm7, %xmm04924; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm74925; SSE4-NEXT:    movapd %xmm4, %xmm04926; SSE4-NEXT:    movapd %xmm5, %xmm14927; SSE4-NEXT:    movapd %xmm6, %xmm24928; SSE4-NEXT:    movapd %xmm7, %xmm34929; SSE4-NEXT:    retq4930;4931; AVX1-LABEL: test124:4932; AVX1:       # %bb.0: # %entry4933; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm44934; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm54935; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm44936; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm0, %xmm54937; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm5, %ymm44938; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm04939; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm24940; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm44941; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm24942; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm1, %xmm44943; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm24944; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm14945; AVX1-NEXT:    retq4946;4947; AVX2-LABEL: test124:4948; AVX2:       # %bb.0: # %entry4949; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm0, %ymm44950; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm04951; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm1, %ymm24952; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm14953; AVX2-NEXT:    retq4954;4955; AVX512-LABEL: test124:4956; AVX512:       # %bb.0: # %entry4957; AVX512-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm04958; AVX512-NEXT:    retq4959entry:4960  %cmp = icmp sge <8 x i64> %a, %b4961  %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b4962  ret <8 x i64> %sel4963}4964 4965define <8 x i64> @test125(<8 x i64> %a, <8 x i64> %b) {4966; SSE2-LABEL: test125:4967; SSE2:       # %bb.0: # %entry4968; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [9223372039002259456,9223372039002259456]4969; SSE2-NEXT:    movdqa %xmm0, %xmm94970; SSE2-NEXT:    pxor %xmm8, %xmm94971; SSE2-NEXT:    movdqa %xmm4, %xmm104972; SSE2-NEXT:    pxor %xmm8, %xmm104973; SSE2-NEXT:    movdqa %xmm10, %xmm114974; SSE2-NEXT:    pcmpgtd %xmm9, %xmm114975; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]4976; SSE2-NEXT:    pcmpeqd %xmm9, %xmm104977; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]4978; SSE2-NEXT:    pand %xmm12, %xmm94979; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]4980; SSE2-NEXT:    por %xmm9, %xmm104981; SSE2-NEXT:    pand %xmm10, %xmm04982; SSE2-NEXT:    pandn %xmm4, %xmm104983; SSE2-NEXT:    por %xmm10, %xmm04984; SSE2-NEXT:    movdqa %xmm1, %xmm44985; SSE2-NEXT:    pxor %xmm8, %xmm44986; SSE2-NEXT:    movdqa %xmm5, %xmm94987; SSE2-NEXT:    pxor %xmm8, %xmm94988; SSE2-NEXT:    movdqa %xmm9, %xmm104989; SSE2-NEXT:    pcmpgtd %xmm4, %xmm104990; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]4991; SSE2-NEXT:    pcmpeqd %xmm4, %xmm94992; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]4993; SSE2-NEXT:    pand %xmm11, %xmm44994; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]4995; SSE2-NEXT:    por %xmm4, %xmm94996; SSE2-NEXT:    pand %xmm9, %xmm14997; SSE2-NEXT:    pandn %xmm5, %xmm94998; SSE2-NEXT:    por %xmm9, %xmm14999; SSE2-NEXT:    movdqa %xmm2, %xmm45000; SSE2-NEXT:    pxor %xmm8, %xmm45001; SSE2-NEXT:    movdqa %xmm6, %xmm55002; SSE2-NEXT:    pxor %xmm8, %xmm55003; SSE2-NEXT:    movdqa %xmm5, %xmm95004; SSE2-NEXT:    pcmpgtd %xmm4, %xmm95005; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]5006; SSE2-NEXT:    pcmpeqd %xmm4, %xmm55007; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]5008; SSE2-NEXT:    pand %xmm10, %xmm45009; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]5010; SSE2-NEXT:    por %xmm4, %xmm55011; SSE2-NEXT:    pand %xmm5, %xmm25012; SSE2-NEXT:    pandn %xmm6, %xmm55013; SSE2-NEXT:    por %xmm5, %xmm25014; SSE2-NEXT:    movdqa %xmm3, %xmm45015; SSE2-NEXT:    pxor %xmm8, %xmm45016; SSE2-NEXT:    pxor %xmm7, %xmm85017; SSE2-NEXT:    movdqa %xmm8, %xmm55018; SSE2-NEXT:    pcmpgtd %xmm4, %xmm55019; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]5020; SSE2-NEXT:    pcmpeqd %xmm4, %xmm85021; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]5022; SSE2-NEXT:    pand %xmm6, %xmm45023; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]5024; SSE2-NEXT:    por %xmm4, %xmm55025; SSE2-NEXT:    pand %xmm5, %xmm35026; SSE2-NEXT:    pandn %xmm7, %xmm55027; SSE2-NEXT:    por %xmm5, %xmm35028; SSE2-NEXT:    retq5029;5030; SSE4-LABEL: test125:5031; SSE4:       # %bb.0: # %entry5032; SSE4-NEXT:    movdqa %xmm0, %xmm95033; SSE4-NEXT:    movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808]5034; SSE4-NEXT:    movdqa %xmm0, %xmm105035; SSE4-NEXT:    pxor %xmm8, %xmm105036; SSE4-NEXT:    movdqa %xmm4, %xmm05037; SSE4-NEXT:    pxor %xmm8, %xmm05038; SSE4-NEXT:    pcmpgtq %xmm10, %xmm05039; SSE4-NEXT:    blendvpd %xmm0, %xmm9, %xmm45040; SSE4-NEXT:    movdqa %xmm1, %xmm95041; SSE4-NEXT:    pxor %xmm8, %xmm95042; SSE4-NEXT:    movdqa %xmm5, %xmm05043; SSE4-NEXT:    pxor %xmm8, %xmm05044; SSE4-NEXT:    pcmpgtq %xmm9, %xmm05045; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm55046; SSE4-NEXT:    movdqa %xmm2, %xmm15047; SSE4-NEXT:    pxor %xmm8, %xmm15048; SSE4-NEXT:    movdqa %xmm6, %xmm05049; SSE4-NEXT:    pxor %xmm8, %xmm05050; SSE4-NEXT:    pcmpgtq %xmm1, %xmm05051; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm65052; SSE4-NEXT:    movdqa %xmm3, %xmm05053; SSE4-NEXT:    pxor %xmm8, %xmm05054; SSE4-NEXT:    pxor %xmm7, %xmm85055; SSE4-NEXT:    pcmpgtq %xmm0, %xmm85056; SSE4-NEXT:    movdqa %xmm8, %xmm05057; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm75058; SSE4-NEXT:    movapd %xmm4, %xmm05059; SSE4-NEXT:    movapd %xmm5, %xmm15060; SSE4-NEXT:    movapd %xmm6, %xmm25061; SSE4-NEXT:    movapd %xmm7, %xmm35062; SSE4-NEXT:    retq5063;5064; AVX1-LABEL: test125:5065; AVX1:       # %bb.0: # %entry5066; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm45067; AVX1-NEXT:    vmovddup {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]5068; AVX1-NEXT:    # xmm5 = mem[0,0]5069; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm45070; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm65071; AVX1-NEXT:    vpxor %xmm5, %xmm6, %xmm65072; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm6, %xmm45073; AVX1-NEXT:    vpxor %xmm5, %xmm0, %xmm65074; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm75075; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm7, %xmm65076; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm6, %ymm45077; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm05078; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm25079; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm25080; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm45081; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm45082; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm25083; AVX1-NEXT:    vpxor %xmm5, %xmm1, %xmm45084; AVX1-NEXT:    vpxor %xmm5, %xmm3, %xmm55085; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm45086; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm25087; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm15088; AVX1-NEXT:    retq5089;5090; AVX2-LABEL: test125:5091; AVX2:       # %bb.0: # %entry5092; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]5093; AVX2-NEXT:    vpxor %ymm4, %ymm0, %ymm55094; AVX2-NEXT:    vpxor %ymm4, %ymm2, %ymm65095; AVX2-NEXT:    vpcmpgtq %ymm5, %ymm6, %ymm55096; AVX2-NEXT:    vblendvpd %ymm5, %ymm0, %ymm2, %ymm05097; AVX2-NEXT:    vpxor %ymm4, %ymm1, %ymm25098; AVX2-NEXT:    vpxor %ymm4, %ymm3, %ymm45099; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm4, %ymm25100; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm15101; AVX2-NEXT:    retq5102;5103; AVX512-LABEL: test125:5104; AVX512:       # %bb.0: # %entry5105; AVX512-NEXT:    vpminuq %zmm1, %zmm0, %zmm05106; AVX512-NEXT:    retq5107entry:5108  %cmp = icmp ult <8 x i64> %a, %b5109  %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b5110  ret <8 x i64> %sel5111}5112 5113define <8 x i64> @test126(<8 x i64> %a, <8 x i64> %b) {5114; SSE2-LABEL: test126:5115; SSE2:       # %bb.0: # %entry5116; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [9223372039002259456,9223372039002259456]5117; SSE2-NEXT:    movdqa %xmm0, %xmm95118; SSE2-NEXT:    pxor %xmm8, %xmm95119; SSE2-NEXT:    movdqa %xmm4, %xmm105120; SSE2-NEXT:    pxor %xmm8, %xmm105121; SSE2-NEXT:    movdqa %xmm10, %xmm115122; SSE2-NEXT:    pcmpgtd %xmm9, %xmm115123; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]5124; SSE2-NEXT:    pcmpeqd %xmm9, %xmm105125; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]5126; SSE2-NEXT:    pand %xmm12, %xmm95127; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]5128; SSE2-NEXT:    por %xmm9, %xmm105129; SSE2-NEXT:    pand %xmm10, %xmm05130; SSE2-NEXT:    pandn %xmm4, %xmm105131; SSE2-NEXT:    por %xmm10, %xmm05132; SSE2-NEXT:    movdqa %xmm1, %xmm45133; SSE2-NEXT:    pxor %xmm8, %xmm45134; SSE2-NEXT:    movdqa %xmm5, %xmm95135; SSE2-NEXT:    pxor %xmm8, %xmm95136; SSE2-NEXT:    movdqa %xmm9, %xmm105137; SSE2-NEXT:    pcmpgtd %xmm4, %xmm105138; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]5139; SSE2-NEXT:    pcmpeqd %xmm4, %xmm95140; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]5141; SSE2-NEXT:    pand %xmm11, %xmm45142; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]5143; SSE2-NEXT:    por %xmm4, %xmm95144; SSE2-NEXT:    pand %xmm9, %xmm15145; SSE2-NEXT:    pandn %xmm5, %xmm95146; SSE2-NEXT:    por %xmm9, %xmm15147; SSE2-NEXT:    movdqa %xmm2, %xmm45148; SSE2-NEXT:    pxor %xmm8, %xmm45149; SSE2-NEXT:    movdqa %xmm6, %xmm55150; SSE2-NEXT:    pxor %xmm8, %xmm55151; SSE2-NEXT:    movdqa %xmm5, %xmm95152; SSE2-NEXT:    pcmpgtd %xmm4, %xmm95153; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]5154; SSE2-NEXT:    pcmpeqd %xmm4, %xmm55155; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]5156; SSE2-NEXT:    pand %xmm10, %xmm45157; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]5158; SSE2-NEXT:    por %xmm4, %xmm55159; SSE2-NEXT:    pand %xmm5, %xmm25160; SSE2-NEXT:    pandn %xmm6, %xmm55161; SSE2-NEXT:    por %xmm5, %xmm25162; SSE2-NEXT:    movdqa %xmm3, %xmm45163; SSE2-NEXT:    pxor %xmm8, %xmm45164; SSE2-NEXT:    pxor %xmm7, %xmm85165; SSE2-NEXT:    movdqa %xmm8, %xmm55166; SSE2-NEXT:    pcmpgtd %xmm4, %xmm55167; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]5168; SSE2-NEXT:    pcmpeqd %xmm4, %xmm85169; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]5170; SSE2-NEXT:    pand %xmm6, %xmm45171; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]5172; SSE2-NEXT:    por %xmm4, %xmm55173; SSE2-NEXT:    pand %xmm5, %xmm35174; SSE2-NEXT:    pandn %xmm7, %xmm55175; SSE2-NEXT:    por %xmm5, %xmm35176; SSE2-NEXT:    retq5177;5178; SSE4-LABEL: test126:5179; SSE4:       # %bb.0: # %entry5180; SSE4-NEXT:    movdqa %xmm0, %xmm95181; SSE4-NEXT:    movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808]5182; SSE4-NEXT:    movdqa %xmm0, %xmm105183; SSE4-NEXT:    pxor %xmm8, %xmm105184; SSE4-NEXT:    movdqa %xmm4, %xmm05185; SSE4-NEXT:    pxor %xmm8, %xmm05186; SSE4-NEXT:    pcmpgtq %xmm10, %xmm05187; SSE4-NEXT:    blendvpd %xmm0, %xmm9, %xmm45188; SSE4-NEXT:    movdqa %xmm1, %xmm95189; SSE4-NEXT:    pxor %xmm8, %xmm95190; SSE4-NEXT:    movdqa %xmm5, %xmm05191; SSE4-NEXT:    pxor %xmm8, %xmm05192; SSE4-NEXT:    pcmpgtq %xmm9, %xmm05193; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm55194; SSE4-NEXT:    movdqa %xmm2, %xmm15195; SSE4-NEXT:    pxor %xmm8, %xmm15196; SSE4-NEXT:    movdqa %xmm6, %xmm05197; SSE4-NEXT:    pxor %xmm8, %xmm05198; SSE4-NEXT:    pcmpgtq %xmm1, %xmm05199; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm65200; SSE4-NEXT:    movdqa %xmm3, %xmm05201; SSE4-NEXT:    pxor %xmm8, %xmm05202; SSE4-NEXT:    pxor %xmm7, %xmm85203; SSE4-NEXT:    pcmpgtq %xmm0, %xmm85204; SSE4-NEXT:    movdqa %xmm8, %xmm05205; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm75206; SSE4-NEXT:    movapd %xmm4, %xmm05207; SSE4-NEXT:    movapd %xmm5, %xmm15208; SSE4-NEXT:    movapd %xmm6, %xmm25209; SSE4-NEXT:    movapd %xmm7, %xmm35210; SSE4-NEXT:    retq5211;5212; AVX1-LABEL: test126:5213; AVX1:       # %bb.0: # %entry5214; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm45215; AVX1-NEXT:    vmovddup {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]5216; AVX1-NEXT:    # xmm5 = mem[0,0]5217; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm45218; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm65219; AVX1-NEXT:    vpxor %xmm5, %xmm6, %xmm65220; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm6, %xmm45221; AVX1-NEXT:    vpxor %xmm5, %xmm0, %xmm65222; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm75223; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm7, %xmm65224; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm6, %ymm45225; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm05226; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm25227; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm25228; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm45229; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm45230; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm25231; AVX1-NEXT:    vpxor %xmm5, %xmm1, %xmm45232; AVX1-NEXT:    vpxor %xmm5, %xmm3, %xmm55233; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm45234; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm25235; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm15236; AVX1-NEXT:    retq5237;5238; AVX2-LABEL: test126:5239; AVX2:       # %bb.0: # %entry5240; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]5241; AVX2-NEXT:    vpxor %ymm4, %ymm0, %ymm55242; AVX2-NEXT:    vpxor %ymm4, %ymm2, %ymm65243; AVX2-NEXT:    vpcmpgtq %ymm5, %ymm6, %ymm55244; AVX2-NEXT:    vblendvpd %ymm5, %ymm0, %ymm2, %ymm05245; AVX2-NEXT:    vpxor %ymm4, %ymm1, %ymm25246; AVX2-NEXT:    vpxor %ymm4, %ymm3, %ymm45247; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm4, %ymm25248; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm15249; AVX2-NEXT:    retq5250;5251; AVX512-LABEL: test126:5252; AVX512:       # %bb.0: # %entry5253; AVX512-NEXT:    vpminuq %zmm1, %zmm0, %zmm05254; AVX512-NEXT:    retq5255entry:5256  %cmp = icmp ule <8 x i64> %a, %b5257  %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b5258  ret <8 x i64> %sel5259}5260 5261define <8 x i64> @test127(<8 x i64> %a, <8 x i64> %b) {5262; SSE2-LABEL: test127:5263; SSE2:       # %bb.0: # %entry5264; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [9223372039002259456,9223372039002259456]5265; SSE2-NEXT:    movdqa %xmm4, %xmm95266; SSE2-NEXT:    pxor %xmm8, %xmm95267; SSE2-NEXT:    movdqa %xmm0, %xmm105268; SSE2-NEXT:    pxor %xmm8, %xmm105269; SSE2-NEXT:    movdqa %xmm10, %xmm115270; SSE2-NEXT:    pcmpgtd %xmm9, %xmm115271; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]5272; SSE2-NEXT:    pcmpeqd %xmm9, %xmm105273; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]5274; SSE2-NEXT:    pand %xmm12, %xmm95275; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]5276; SSE2-NEXT:    por %xmm9, %xmm105277; SSE2-NEXT:    pand %xmm10, %xmm05278; SSE2-NEXT:    pandn %xmm4, %xmm105279; SSE2-NEXT:    por %xmm10, %xmm05280; SSE2-NEXT:    movdqa %xmm5, %xmm45281; SSE2-NEXT:    pxor %xmm8, %xmm45282; SSE2-NEXT:    movdqa %xmm1, %xmm95283; SSE2-NEXT:    pxor %xmm8, %xmm95284; SSE2-NEXT:    movdqa %xmm9, %xmm105285; SSE2-NEXT:    pcmpgtd %xmm4, %xmm105286; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]5287; SSE2-NEXT:    pcmpeqd %xmm4, %xmm95288; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]5289; SSE2-NEXT:    pand %xmm11, %xmm45290; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]5291; SSE2-NEXT:    por %xmm4, %xmm95292; SSE2-NEXT:    pand %xmm9, %xmm15293; SSE2-NEXT:    pandn %xmm5, %xmm95294; SSE2-NEXT:    por %xmm9, %xmm15295; SSE2-NEXT:    movdqa %xmm6, %xmm45296; SSE2-NEXT:    pxor %xmm8, %xmm45297; SSE2-NEXT:    movdqa %xmm2, %xmm55298; SSE2-NEXT:    pxor %xmm8, %xmm55299; SSE2-NEXT:    movdqa %xmm5, %xmm95300; SSE2-NEXT:    pcmpgtd %xmm4, %xmm95301; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]5302; SSE2-NEXT:    pcmpeqd %xmm4, %xmm55303; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]5304; SSE2-NEXT:    pand %xmm10, %xmm45305; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]5306; SSE2-NEXT:    por %xmm4, %xmm55307; SSE2-NEXT:    pand %xmm5, %xmm25308; SSE2-NEXT:    pandn %xmm6, %xmm55309; SSE2-NEXT:    por %xmm5, %xmm25310; SSE2-NEXT:    movdqa %xmm7, %xmm45311; SSE2-NEXT:    pxor %xmm8, %xmm45312; SSE2-NEXT:    pxor %xmm3, %xmm85313; SSE2-NEXT:    movdqa %xmm8, %xmm55314; SSE2-NEXT:    pcmpgtd %xmm4, %xmm55315; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]5316; SSE2-NEXT:    pcmpeqd %xmm4, %xmm85317; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]5318; SSE2-NEXT:    pand %xmm6, %xmm45319; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]5320; SSE2-NEXT:    por %xmm4, %xmm55321; SSE2-NEXT:    pand %xmm5, %xmm35322; SSE2-NEXT:    pandn %xmm7, %xmm55323; SSE2-NEXT:    por %xmm5, %xmm35324; SSE2-NEXT:    retq5325;5326; SSE4-LABEL: test127:5327; SSE4:       # %bb.0: # %entry5328; SSE4-NEXT:    movdqa %xmm0, %xmm95329; SSE4-NEXT:    movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808]5330; SSE4-NEXT:    movdqa %xmm4, %xmm105331; SSE4-NEXT:    pxor %xmm8, %xmm105332; SSE4-NEXT:    pxor %xmm8, %xmm05333; SSE4-NEXT:    pcmpgtq %xmm10, %xmm05334; SSE4-NEXT:    blendvpd %xmm0, %xmm9, %xmm45335; SSE4-NEXT:    movdqa %xmm5, %xmm95336; SSE4-NEXT:    pxor %xmm8, %xmm95337; SSE4-NEXT:    movdqa %xmm1, %xmm05338; SSE4-NEXT:    pxor %xmm8, %xmm05339; SSE4-NEXT:    pcmpgtq %xmm9, %xmm05340; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm55341; SSE4-NEXT:    movdqa %xmm6, %xmm15342; SSE4-NEXT:    pxor %xmm8, %xmm15343; SSE4-NEXT:    movdqa %xmm2, %xmm05344; SSE4-NEXT:    pxor %xmm8, %xmm05345; SSE4-NEXT:    pcmpgtq %xmm1, %xmm05346; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm65347; SSE4-NEXT:    movdqa %xmm7, %xmm05348; SSE4-NEXT:    pxor %xmm8, %xmm05349; SSE4-NEXT:    pxor %xmm3, %xmm85350; SSE4-NEXT:    pcmpgtq %xmm0, %xmm85351; SSE4-NEXT:    movdqa %xmm8, %xmm05352; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm75353; SSE4-NEXT:    movapd %xmm4, %xmm05354; SSE4-NEXT:    movapd %xmm5, %xmm15355; SSE4-NEXT:    movapd %xmm6, %xmm25356; SSE4-NEXT:    movapd %xmm7, %xmm35357; SSE4-NEXT:    retq5358;5359; AVX1-LABEL: test127:5360; AVX1:       # %bb.0: # %entry5361; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm45362; AVX1-NEXT:    vmovddup {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]5363; AVX1-NEXT:    # xmm5 = mem[0,0]5364; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm45365; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm65366; AVX1-NEXT:    vpxor %xmm5, %xmm6, %xmm65367; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm6, %xmm45368; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm65369; AVX1-NEXT:    vpxor %xmm5, %xmm0, %xmm75370; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm7, %xmm65371; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm6, %ymm45372; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm05373; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm25374; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm25375; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm45376; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm45377; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm25378; AVX1-NEXT:    vpxor %xmm5, %xmm3, %xmm45379; AVX1-NEXT:    vpxor %xmm5, %xmm1, %xmm55380; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm45381; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm25382; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm15383; AVX1-NEXT:    retq5384;5385; AVX2-LABEL: test127:5386; AVX2:       # %bb.0: # %entry5387; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]5388; AVX2-NEXT:    vpxor %ymm4, %ymm2, %ymm55389; AVX2-NEXT:    vpxor %ymm4, %ymm0, %ymm65390; AVX2-NEXT:    vpcmpgtq %ymm5, %ymm6, %ymm55391; AVX2-NEXT:    vblendvpd %ymm5, %ymm0, %ymm2, %ymm05392; AVX2-NEXT:    vpxor %ymm4, %ymm3, %ymm25393; AVX2-NEXT:    vpxor %ymm4, %ymm1, %ymm45394; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm4, %ymm25395; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm15396; AVX2-NEXT:    retq5397;5398; AVX512-LABEL: test127:5399; AVX512:       # %bb.0: # %entry5400; AVX512-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm05401; AVX512-NEXT:    retq5402entry:5403  %cmp = icmp ugt <8 x i64> %a, %b5404  %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b5405  ret <8 x i64> %sel5406}5407 5408define <8 x i64> @test128(<8 x i64> %a, <8 x i64> %b) {5409; SSE2-LABEL: test128:5410; SSE2:       # %bb.0: # %entry5411; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [9223372039002259456,9223372039002259456]5412; SSE2-NEXT:    movdqa %xmm4, %xmm95413; SSE2-NEXT:    pxor %xmm8, %xmm95414; SSE2-NEXT:    movdqa %xmm0, %xmm105415; SSE2-NEXT:    pxor %xmm8, %xmm105416; SSE2-NEXT:    movdqa %xmm10, %xmm115417; SSE2-NEXT:    pcmpgtd %xmm9, %xmm115418; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]5419; SSE2-NEXT:    pcmpeqd %xmm9, %xmm105420; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]5421; SSE2-NEXT:    pand %xmm12, %xmm95422; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]5423; SSE2-NEXT:    por %xmm9, %xmm105424; SSE2-NEXT:    pand %xmm10, %xmm05425; SSE2-NEXT:    pandn %xmm4, %xmm105426; SSE2-NEXT:    por %xmm10, %xmm05427; SSE2-NEXT:    movdqa %xmm5, %xmm45428; SSE2-NEXT:    pxor %xmm8, %xmm45429; SSE2-NEXT:    movdqa %xmm1, %xmm95430; SSE2-NEXT:    pxor %xmm8, %xmm95431; SSE2-NEXT:    movdqa %xmm9, %xmm105432; SSE2-NEXT:    pcmpgtd %xmm4, %xmm105433; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]5434; SSE2-NEXT:    pcmpeqd %xmm4, %xmm95435; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]5436; SSE2-NEXT:    pand %xmm11, %xmm45437; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]5438; SSE2-NEXT:    por %xmm4, %xmm95439; SSE2-NEXT:    pand %xmm9, %xmm15440; SSE2-NEXT:    pandn %xmm5, %xmm95441; SSE2-NEXT:    por %xmm9, %xmm15442; SSE2-NEXT:    movdqa %xmm6, %xmm45443; SSE2-NEXT:    pxor %xmm8, %xmm45444; SSE2-NEXT:    movdqa %xmm2, %xmm55445; SSE2-NEXT:    pxor %xmm8, %xmm55446; SSE2-NEXT:    movdqa %xmm5, %xmm95447; SSE2-NEXT:    pcmpgtd %xmm4, %xmm95448; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]5449; SSE2-NEXT:    pcmpeqd %xmm4, %xmm55450; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]5451; SSE2-NEXT:    pand %xmm10, %xmm45452; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]5453; SSE2-NEXT:    por %xmm4, %xmm55454; SSE2-NEXT:    pand %xmm5, %xmm25455; SSE2-NEXT:    pandn %xmm6, %xmm55456; SSE2-NEXT:    por %xmm5, %xmm25457; SSE2-NEXT:    movdqa %xmm7, %xmm45458; SSE2-NEXT:    pxor %xmm8, %xmm45459; SSE2-NEXT:    pxor %xmm3, %xmm85460; SSE2-NEXT:    movdqa %xmm8, %xmm55461; SSE2-NEXT:    pcmpgtd %xmm4, %xmm55462; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]5463; SSE2-NEXT:    pcmpeqd %xmm4, %xmm85464; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]5465; SSE2-NEXT:    pand %xmm6, %xmm45466; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]5467; SSE2-NEXT:    por %xmm4, %xmm55468; SSE2-NEXT:    pand %xmm5, %xmm35469; SSE2-NEXT:    pandn %xmm7, %xmm55470; SSE2-NEXT:    por %xmm5, %xmm35471; SSE2-NEXT:    retq5472;5473; SSE4-LABEL: test128:5474; SSE4:       # %bb.0: # %entry5475; SSE4-NEXT:    movdqa %xmm0, %xmm95476; SSE4-NEXT:    movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808]5477; SSE4-NEXT:    movdqa %xmm4, %xmm105478; SSE4-NEXT:    pxor %xmm8, %xmm105479; SSE4-NEXT:    pxor %xmm8, %xmm05480; SSE4-NEXT:    pcmpgtq %xmm10, %xmm05481; SSE4-NEXT:    blendvpd %xmm0, %xmm9, %xmm45482; SSE4-NEXT:    movdqa %xmm5, %xmm95483; SSE4-NEXT:    pxor %xmm8, %xmm95484; SSE4-NEXT:    movdqa %xmm1, %xmm05485; SSE4-NEXT:    pxor %xmm8, %xmm05486; SSE4-NEXT:    pcmpgtq %xmm9, %xmm05487; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm55488; SSE4-NEXT:    movdqa %xmm6, %xmm15489; SSE4-NEXT:    pxor %xmm8, %xmm15490; SSE4-NEXT:    movdqa %xmm2, %xmm05491; SSE4-NEXT:    pxor %xmm8, %xmm05492; SSE4-NEXT:    pcmpgtq %xmm1, %xmm05493; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm65494; SSE4-NEXT:    movdqa %xmm7, %xmm05495; SSE4-NEXT:    pxor %xmm8, %xmm05496; SSE4-NEXT:    pxor %xmm3, %xmm85497; SSE4-NEXT:    pcmpgtq %xmm0, %xmm85498; SSE4-NEXT:    movdqa %xmm8, %xmm05499; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm75500; SSE4-NEXT:    movapd %xmm4, %xmm05501; SSE4-NEXT:    movapd %xmm5, %xmm15502; SSE4-NEXT:    movapd %xmm6, %xmm25503; SSE4-NEXT:    movapd %xmm7, %xmm35504; SSE4-NEXT:    retq5505;5506; AVX1-LABEL: test128:5507; AVX1:       # %bb.0: # %entry5508; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm45509; AVX1-NEXT:    vmovddup {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]5510; AVX1-NEXT:    # xmm5 = mem[0,0]5511; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm45512; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm65513; AVX1-NEXT:    vpxor %xmm5, %xmm6, %xmm65514; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm6, %xmm45515; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm65516; AVX1-NEXT:    vpxor %xmm5, %xmm0, %xmm75517; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm7, %xmm65518; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm6, %ymm45519; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm05520; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm25521; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm25522; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm45523; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm45524; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm25525; AVX1-NEXT:    vpxor %xmm5, %xmm3, %xmm45526; AVX1-NEXT:    vpxor %xmm5, %xmm1, %xmm55527; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm45528; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm25529; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm15530; AVX1-NEXT:    retq5531;5532; AVX2-LABEL: test128:5533; AVX2:       # %bb.0: # %entry5534; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]5535; AVX2-NEXT:    vpxor %ymm4, %ymm2, %ymm55536; AVX2-NEXT:    vpxor %ymm4, %ymm0, %ymm65537; AVX2-NEXT:    vpcmpgtq %ymm5, %ymm6, %ymm55538; AVX2-NEXT:    vblendvpd %ymm5, %ymm0, %ymm2, %ymm05539; AVX2-NEXT:    vpxor %ymm4, %ymm3, %ymm25540; AVX2-NEXT:    vpxor %ymm4, %ymm1, %ymm45541; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm4, %ymm25542; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm15543; AVX2-NEXT:    retq5544;5545; AVX512-LABEL: test128:5546; AVX512:       # %bb.0: # %entry5547; AVX512-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm05548; AVX512-NEXT:    retq5549entry:5550  %cmp = icmp uge <8 x i64> %a, %b5551  %sel = select <8 x i1> %cmp, <8 x i64> %a, <8 x i64> %b5552  ret <8 x i64> %sel5553}5554 5555define <64 x i8> @test129(<64 x i8> %a, <64 x i8> %b) {5556; SSE2-LABEL: test129:5557; SSE2:       # %bb.0: # %entry5558; SSE2-NEXT:    movdqa %xmm0, %xmm85559; SSE2-NEXT:    pcmpgtb %xmm4, %xmm85560; SSE2-NEXT:    pand %xmm8, %xmm05561; SSE2-NEXT:    pandn %xmm4, %xmm85562; SSE2-NEXT:    por %xmm8, %xmm05563; SSE2-NEXT:    movdqa %xmm1, %xmm45564; SSE2-NEXT:    pcmpgtb %xmm5, %xmm45565; SSE2-NEXT:    pand %xmm4, %xmm15566; SSE2-NEXT:    pandn %xmm5, %xmm45567; SSE2-NEXT:    por %xmm4, %xmm15568; SSE2-NEXT:    movdqa %xmm2, %xmm45569; SSE2-NEXT:    pcmpgtb %xmm6, %xmm45570; SSE2-NEXT:    pand %xmm4, %xmm25571; SSE2-NEXT:    pandn %xmm6, %xmm45572; SSE2-NEXT:    por %xmm4, %xmm25573; SSE2-NEXT:    movdqa %xmm3, %xmm45574; SSE2-NEXT:    pcmpgtb %xmm7, %xmm45575; SSE2-NEXT:    pand %xmm4, %xmm35576; SSE2-NEXT:    pandn %xmm7, %xmm45577; SSE2-NEXT:    por %xmm4, %xmm35578; SSE2-NEXT:    retq5579;5580; SSE4-LABEL: test129:5581; SSE4:       # %bb.0: # %entry5582; SSE4-NEXT:    pmaxsb %xmm4, %xmm05583; SSE4-NEXT:    pmaxsb %xmm5, %xmm15584; SSE4-NEXT:    pmaxsb %xmm6, %xmm25585; SSE4-NEXT:    pmaxsb %xmm7, %xmm35586; SSE4-NEXT:    retq5587;5588; AVX1-LABEL: test129:5589; AVX1:       # %bb.0: # %entry5590; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm45591; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm55592; AVX1-NEXT:    vpmaxsb %xmm4, %xmm5, %xmm45593; AVX1-NEXT:    vpmaxsb %xmm2, %xmm0, %xmm05594; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm05595; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm25596; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm45597; AVX1-NEXT:    vpmaxsb %xmm2, %xmm4, %xmm25598; AVX1-NEXT:    vpmaxsb %xmm3, %xmm1, %xmm15599; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm15600; AVX1-NEXT:    retq5601;5602; AVX2-LABEL: test129:5603; AVX2:       # %bb.0: # %entry5604; AVX2-NEXT:    vpmaxsb %ymm2, %ymm0, %ymm05605; AVX2-NEXT:    vpmaxsb %ymm3, %ymm1, %ymm15606; AVX2-NEXT:    retq5607;5608; AVX512F-LABEL: test129:5609; AVX512F:       # %bb.0: # %entry5610; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm25611; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm35612; AVX512F-NEXT:    vpmaxsb %ymm2, %ymm3, %ymm25613; AVX512F-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm05614; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm05615; AVX512F-NEXT:    retq5616;5617; AVX512BW-LABEL: test129:5618; AVX512BW:       # %bb.0: # %entry5619; AVX512BW-NEXT:    vpmaxsb %zmm1, %zmm0, %zmm05620; AVX512BW-NEXT:    retq5621entry:5622  %cmp = icmp slt <64 x i8> %a, %b5623  %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a5624  ret <64 x i8> %sel5625}5626 5627define <64 x i8> @test130(<64 x i8> %a, <64 x i8> %b) {5628; SSE2-LABEL: test130:5629; SSE2:       # %bb.0: # %entry5630; SSE2-NEXT:    movdqa %xmm0, %xmm85631; SSE2-NEXT:    pcmpgtb %xmm4, %xmm85632; SSE2-NEXT:    pand %xmm8, %xmm05633; SSE2-NEXT:    pandn %xmm4, %xmm85634; SSE2-NEXT:    por %xmm8, %xmm05635; SSE2-NEXT:    movdqa %xmm1, %xmm45636; SSE2-NEXT:    pcmpgtb %xmm5, %xmm45637; SSE2-NEXT:    pand %xmm4, %xmm15638; SSE2-NEXT:    pandn %xmm5, %xmm45639; SSE2-NEXT:    por %xmm4, %xmm15640; SSE2-NEXT:    movdqa %xmm2, %xmm45641; SSE2-NEXT:    pcmpgtb %xmm6, %xmm45642; SSE2-NEXT:    pand %xmm4, %xmm25643; SSE2-NEXT:    pandn %xmm6, %xmm45644; SSE2-NEXT:    por %xmm4, %xmm25645; SSE2-NEXT:    movdqa %xmm3, %xmm45646; SSE2-NEXT:    pcmpgtb %xmm7, %xmm45647; SSE2-NEXT:    pand %xmm4, %xmm35648; SSE2-NEXT:    pandn %xmm7, %xmm45649; SSE2-NEXT:    por %xmm4, %xmm35650; SSE2-NEXT:    retq5651;5652; SSE4-LABEL: test130:5653; SSE4:       # %bb.0: # %entry5654; SSE4-NEXT:    pmaxsb %xmm4, %xmm05655; SSE4-NEXT:    pmaxsb %xmm5, %xmm15656; SSE4-NEXT:    pmaxsb %xmm6, %xmm25657; SSE4-NEXT:    pmaxsb %xmm7, %xmm35658; SSE4-NEXT:    retq5659;5660; AVX1-LABEL: test130:5661; AVX1:       # %bb.0: # %entry5662; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm45663; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm55664; AVX1-NEXT:    vpmaxsb %xmm4, %xmm5, %xmm45665; AVX1-NEXT:    vpmaxsb %xmm2, %xmm0, %xmm05666; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm05667; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm25668; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm45669; AVX1-NEXT:    vpmaxsb %xmm2, %xmm4, %xmm25670; AVX1-NEXT:    vpmaxsb %xmm3, %xmm1, %xmm15671; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm15672; AVX1-NEXT:    retq5673;5674; AVX2-LABEL: test130:5675; AVX2:       # %bb.0: # %entry5676; AVX2-NEXT:    vpmaxsb %ymm2, %ymm0, %ymm05677; AVX2-NEXT:    vpmaxsb %ymm3, %ymm1, %ymm15678; AVX2-NEXT:    retq5679;5680; AVX512F-LABEL: test130:5681; AVX512F:       # %bb.0: # %entry5682; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm25683; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm35684; AVX512F-NEXT:    vpmaxsb %ymm2, %ymm3, %ymm25685; AVX512F-NEXT:    vpmaxsb %ymm1, %ymm0, %ymm05686; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm05687; AVX512F-NEXT:    retq5688;5689; AVX512BW-LABEL: test130:5690; AVX512BW:       # %bb.0: # %entry5691; AVX512BW-NEXT:    vpmaxsb %zmm1, %zmm0, %zmm05692; AVX512BW-NEXT:    retq5693entry:5694  %cmp = icmp sle <64 x i8> %a, %b5695  %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a5696  ret <64 x i8> %sel5697}5698 5699define <64 x i8> @test131(<64 x i8> %a, <64 x i8> %b) {5700; SSE2-LABEL: test131:5701; SSE2:       # %bb.0: # %entry5702; SSE2-NEXT:    movdqa %xmm4, %xmm85703; SSE2-NEXT:    pcmpgtb %xmm0, %xmm85704; SSE2-NEXT:    pand %xmm8, %xmm05705; SSE2-NEXT:    pandn %xmm4, %xmm85706; SSE2-NEXT:    por %xmm8, %xmm05707; SSE2-NEXT:    movdqa %xmm5, %xmm45708; SSE2-NEXT:    pcmpgtb %xmm1, %xmm45709; SSE2-NEXT:    pand %xmm4, %xmm15710; SSE2-NEXT:    pandn %xmm5, %xmm45711; SSE2-NEXT:    por %xmm4, %xmm15712; SSE2-NEXT:    movdqa %xmm6, %xmm45713; SSE2-NEXT:    pcmpgtb %xmm2, %xmm45714; SSE2-NEXT:    pand %xmm4, %xmm25715; SSE2-NEXT:    pandn %xmm6, %xmm45716; SSE2-NEXT:    por %xmm4, %xmm25717; SSE2-NEXT:    movdqa %xmm7, %xmm45718; SSE2-NEXT:    pcmpgtb %xmm3, %xmm45719; SSE2-NEXT:    pand %xmm4, %xmm35720; SSE2-NEXT:    pandn %xmm7, %xmm45721; SSE2-NEXT:    por %xmm4, %xmm35722; SSE2-NEXT:    retq5723;5724; SSE4-LABEL: test131:5725; SSE4:       # %bb.0: # %entry5726; SSE4-NEXT:    pminsb %xmm4, %xmm05727; SSE4-NEXT:    pminsb %xmm5, %xmm15728; SSE4-NEXT:    pminsb %xmm6, %xmm25729; SSE4-NEXT:    pminsb %xmm7, %xmm35730; SSE4-NEXT:    retq5731;5732; AVX1-LABEL: test131:5733; AVX1:       # %bb.0: # %entry5734; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm45735; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm55736; AVX1-NEXT:    vpminsb %xmm4, %xmm5, %xmm45737; AVX1-NEXT:    vpminsb %xmm2, %xmm0, %xmm05738; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm05739; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm25740; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm45741; AVX1-NEXT:    vpminsb %xmm2, %xmm4, %xmm25742; AVX1-NEXT:    vpminsb %xmm3, %xmm1, %xmm15743; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm15744; AVX1-NEXT:    retq5745;5746; AVX2-LABEL: test131:5747; AVX2:       # %bb.0: # %entry5748; AVX2-NEXT:    vpminsb %ymm2, %ymm0, %ymm05749; AVX2-NEXT:    vpminsb %ymm3, %ymm1, %ymm15750; AVX2-NEXT:    retq5751;5752; AVX512F-LABEL: test131:5753; AVX512F:       # %bb.0: # %entry5754; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm25755; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm35756; AVX512F-NEXT:    vpminsb %ymm2, %ymm3, %ymm25757; AVX512F-NEXT:    vpminsb %ymm1, %ymm0, %ymm05758; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm05759; AVX512F-NEXT:    retq5760;5761; AVX512BW-LABEL: test131:5762; AVX512BW:       # %bb.0: # %entry5763; AVX512BW-NEXT:    vpminsb %zmm1, %zmm0, %zmm05764; AVX512BW-NEXT:    retq5765entry:5766  %cmp = icmp sgt <64 x i8> %a, %b5767  %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a5768  ret <64 x i8> %sel5769}5770 5771define <64 x i8> @test132(<64 x i8> %a, <64 x i8> %b) {5772; SSE2-LABEL: test132:5773; SSE2:       # %bb.0: # %entry5774; SSE2-NEXT:    movdqa %xmm4, %xmm85775; SSE2-NEXT:    pcmpgtb %xmm0, %xmm85776; SSE2-NEXT:    pand %xmm8, %xmm05777; SSE2-NEXT:    pandn %xmm4, %xmm85778; SSE2-NEXT:    por %xmm8, %xmm05779; SSE2-NEXT:    movdqa %xmm5, %xmm45780; SSE2-NEXT:    pcmpgtb %xmm1, %xmm45781; SSE2-NEXT:    pand %xmm4, %xmm15782; SSE2-NEXT:    pandn %xmm5, %xmm45783; SSE2-NEXT:    por %xmm4, %xmm15784; SSE2-NEXT:    movdqa %xmm6, %xmm45785; SSE2-NEXT:    pcmpgtb %xmm2, %xmm45786; SSE2-NEXT:    pand %xmm4, %xmm25787; SSE2-NEXT:    pandn %xmm6, %xmm45788; SSE2-NEXT:    por %xmm4, %xmm25789; SSE2-NEXT:    movdqa %xmm7, %xmm45790; SSE2-NEXT:    pcmpgtb %xmm3, %xmm45791; SSE2-NEXT:    pand %xmm4, %xmm35792; SSE2-NEXT:    pandn %xmm7, %xmm45793; SSE2-NEXT:    por %xmm4, %xmm35794; SSE2-NEXT:    retq5795;5796; SSE4-LABEL: test132:5797; SSE4:       # %bb.0: # %entry5798; SSE4-NEXT:    pminsb %xmm4, %xmm05799; SSE4-NEXT:    pminsb %xmm5, %xmm15800; SSE4-NEXT:    pminsb %xmm6, %xmm25801; SSE4-NEXT:    pminsb %xmm7, %xmm35802; SSE4-NEXT:    retq5803;5804; AVX1-LABEL: test132:5805; AVX1:       # %bb.0: # %entry5806; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm45807; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm55808; AVX1-NEXT:    vpminsb %xmm4, %xmm5, %xmm45809; AVX1-NEXT:    vpminsb %xmm2, %xmm0, %xmm05810; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm05811; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm25812; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm45813; AVX1-NEXT:    vpminsb %xmm2, %xmm4, %xmm25814; AVX1-NEXT:    vpminsb %xmm3, %xmm1, %xmm15815; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm15816; AVX1-NEXT:    retq5817;5818; AVX2-LABEL: test132:5819; AVX2:       # %bb.0: # %entry5820; AVX2-NEXT:    vpminsb %ymm2, %ymm0, %ymm05821; AVX2-NEXT:    vpminsb %ymm3, %ymm1, %ymm15822; AVX2-NEXT:    retq5823;5824; AVX512F-LABEL: test132:5825; AVX512F:       # %bb.0: # %entry5826; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm25827; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm35828; AVX512F-NEXT:    vpminsb %ymm2, %ymm3, %ymm25829; AVX512F-NEXT:    vpminsb %ymm1, %ymm0, %ymm05830; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm05831; AVX512F-NEXT:    retq5832;5833; AVX512BW-LABEL: test132:5834; AVX512BW:       # %bb.0: # %entry5835; AVX512BW-NEXT:    vpminsb %zmm1, %zmm0, %zmm05836; AVX512BW-NEXT:    retq5837entry:5838  %cmp = icmp sge <64 x i8> %a, %b5839  %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a5840  ret <64 x i8> %sel5841}5842 5843define <64 x i8> @test133(<64 x i8> %a, <64 x i8> %b) {5844; SSE-LABEL: test133:5845; SSE:       # %bb.0: # %entry5846; SSE-NEXT:    pmaxub %xmm4, %xmm05847; SSE-NEXT:    pmaxub %xmm5, %xmm15848; SSE-NEXT:    pmaxub %xmm6, %xmm25849; SSE-NEXT:    pmaxub %xmm7, %xmm35850; SSE-NEXT:    retq5851;5852; AVX1-LABEL: test133:5853; AVX1:       # %bb.0: # %entry5854; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm45855; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm55856; AVX1-NEXT:    vpmaxub %xmm4, %xmm5, %xmm45857; AVX1-NEXT:    vpmaxub %xmm2, %xmm0, %xmm05858; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm05859; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm25860; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm45861; AVX1-NEXT:    vpmaxub %xmm2, %xmm4, %xmm25862; AVX1-NEXT:    vpmaxub %xmm3, %xmm1, %xmm15863; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm15864; AVX1-NEXT:    retq5865;5866; AVX2-LABEL: test133:5867; AVX2:       # %bb.0: # %entry5868; AVX2-NEXT:    vpmaxub %ymm2, %ymm0, %ymm05869; AVX2-NEXT:    vpmaxub %ymm3, %ymm1, %ymm15870; AVX2-NEXT:    retq5871;5872; AVX512F-LABEL: test133:5873; AVX512F:       # %bb.0: # %entry5874; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm25875; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm35876; AVX512F-NEXT:    vpmaxub %ymm2, %ymm3, %ymm25877; AVX512F-NEXT:    vpmaxub %ymm1, %ymm0, %ymm05878; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm05879; AVX512F-NEXT:    retq5880;5881; AVX512BW-LABEL: test133:5882; AVX512BW:       # %bb.0: # %entry5883; AVX512BW-NEXT:    vpmaxub %zmm1, %zmm0, %zmm05884; AVX512BW-NEXT:    retq5885entry:5886  %cmp = icmp ult <64 x i8> %a, %b5887  %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a5888  ret <64 x i8> %sel5889}5890 5891define <64 x i8> @test134(<64 x i8> %a, <64 x i8> %b) {5892; SSE-LABEL: test134:5893; SSE:       # %bb.0: # %entry5894; SSE-NEXT:    pmaxub %xmm4, %xmm05895; SSE-NEXT:    pmaxub %xmm5, %xmm15896; SSE-NEXT:    pmaxub %xmm6, %xmm25897; SSE-NEXT:    pmaxub %xmm7, %xmm35898; SSE-NEXT:    retq5899;5900; AVX1-LABEL: test134:5901; AVX1:       # %bb.0: # %entry5902; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm45903; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm55904; AVX1-NEXT:    vpmaxub %xmm4, %xmm5, %xmm45905; AVX1-NEXT:    vpmaxub %xmm2, %xmm0, %xmm05906; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm05907; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm25908; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm45909; AVX1-NEXT:    vpmaxub %xmm2, %xmm4, %xmm25910; AVX1-NEXT:    vpmaxub %xmm3, %xmm1, %xmm15911; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm15912; AVX1-NEXT:    retq5913;5914; AVX2-LABEL: test134:5915; AVX2:       # %bb.0: # %entry5916; AVX2-NEXT:    vpmaxub %ymm2, %ymm0, %ymm05917; AVX2-NEXT:    vpmaxub %ymm3, %ymm1, %ymm15918; AVX2-NEXT:    retq5919;5920; AVX512F-LABEL: test134:5921; AVX512F:       # %bb.0: # %entry5922; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm25923; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm35924; AVX512F-NEXT:    vpmaxub %ymm2, %ymm3, %ymm25925; AVX512F-NEXT:    vpmaxub %ymm1, %ymm0, %ymm05926; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm05927; AVX512F-NEXT:    retq5928;5929; AVX512BW-LABEL: test134:5930; AVX512BW:       # %bb.0: # %entry5931; AVX512BW-NEXT:    vpmaxub %zmm1, %zmm0, %zmm05932; AVX512BW-NEXT:    retq5933entry:5934  %cmp = icmp ule <64 x i8> %a, %b5935  %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a5936  ret <64 x i8> %sel5937}5938 5939define <64 x i8> @test135(<64 x i8> %a, <64 x i8> %b) {5940; SSE-LABEL: test135:5941; SSE:       # %bb.0: # %entry5942; SSE-NEXT:    pminub %xmm4, %xmm05943; SSE-NEXT:    pminub %xmm5, %xmm15944; SSE-NEXT:    pminub %xmm6, %xmm25945; SSE-NEXT:    pminub %xmm7, %xmm35946; SSE-NEXT:    retq5947;5948; AVX1-LABEL: test135:5949; AVX1:       # %bb.0: # %entry5950; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm45951; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm55952; AVX1-NEXT:    vpminub %xmm4, %xmm5, %xmm45953; AVX1-NEXT:    vpminub %xmm2, %xmm0, %xmm05954; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm05955; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm25956; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm45957; AVX1-NEXT:    vpminub %xmm2, %xmm4, %xmm25958; AVX1-NEXT:    vpminub %xmm3, %xmm1, %xmm15959; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm15960; AVX1-NEXT:    retq5961;5962; AVX2-LABEL: test135:5963; AVX2:       # %bb.0: # %entry5964; AVX2-NEXT:    vpminub %ymm2, %ymm0, %ymm05965; AVX2-NEXT:    vpminub %ymm3, %ymm1, %ymm15966; AVX2-NEXT:    retq5967;5968; AVX512F-LABEL: test135:5969; AVX512F:       # %bb.0: # %entry5970; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm25971; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm35972; AVX512F-NEXT:    vpminub %ymm2, %ymm3, %ymm25973; AVX512F-NEXT:    vpminub %ymm1, %ymm0, %ymm05974; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm05975; AVX512F-NEXT:    retq5976;5977; AVX512BW-LABEL: test135:5978; AVX512BW:       # %bb.0: # %entry5979; AVX512BW-NEXT:    vpminub %zmm1, %zmm0, %zmm05980; AVX512BW-NEXT:    retq5981entry:5982  %cmp = icmp ugt <64 x i8> %a, %b5983  %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a5984  ret <64 x i8> %sel5985}5986 5987define <64 x i8> @test136(<64 x i8> %a, <64 x i8> %b) {5988; SSE-LABEL: test136:5989; SSE:       # %bb.0: # %entry5990; SSE-NEXT:    pminub %xmm4, %xmm05991; SSE-NEXT:    pminub %xmm5, %xmm15992; SSE-NEXT:    pminub %xmm6, %xmm25993; SSE-NEXT:    pminub %xmm7, %xmm35994; SSE-NEXT:    retq5995;5996; AVX1-LABEL: test136:5997; AVX1:       # %bb.0: # %entry5998; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm45999; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56000; AVX1-NEXT:    vpminub %xmm4, %xmm5, %xmm46001; AVX1-NEXT:    vpminub %xmm2, %xmm0, %xmm06002; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06003; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26004; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46005; AVX1-NEXT:    vpminub %xmm2, %xmm4, %xmm26006; AVX1-NEXT:    vpminub %xmm3, %xmm1, %xmm16007; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16008; AVX1-NEXT:    retq6009;6010; AVX2-LABEL: test136:6011; AVX2:       # %bb.0: # %entry6012; AVX2-NEXT:    vpminub %ymm2, %ymm0, %ymm06013; AVX2-NEXT:    vpminub %ymm3, %ymm1, %ymm16014; AVX2-NEXT:    retq6015;6016; AVX512F-LABEL: test136:6017; AVX512F:       # %bb.0: # %entry6018; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm26019; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm36020; AVX512F-NEXT:    vpminub %ymm2, %ymm3, %ymm26021; AVX512F-NEXT:    vpminub %ymm1, %ymm0, %ymm06022; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm06023; AVX512F-NEXT:    retq6024;6025; AVX512BW-LABEL: test136:6026; AVX512BW:       # %bb.0: # %entry6027; AVX512BW-NEXT:    vpminub %zmm1, %zmm0, %zmm06028; AVX512BW-NEXT:    retq6029entry:6030  %cmp = icmp uge <64 x i8> %a, %b6031  %sel = select <64 x i1> %cmp, <64 x i8> %b, <64 x i8> %a6032  ret <64 x i8> %sel6033}6034 6035define <32 x i16> @test137(<32 x i16> %a, <32 x i16> %b) {6036; SSE-LABEL: test137:6037; SSE:       # %bb.0: # %entry6038; SSE-NEXT:    pmaxsw %xmm4, %xmm06039; SSE-NEXT:    pmaxsw %xmm5, %xmm16040; SSE-NEXT:    pmaxsw %xmm6, %xmm26041; SSE-NEXT:    pmaxsw %xmm7, %xmm36042; SSE-NEXT:    retq6043;6044; AVX1-LABEL: test137:6045; AVX1:       # %bb.0: # %entry6046; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46047; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56048; AVX1-NEXT:    vpmaxsw %xmm4, %xmm5, %xmm46049; AVX1-NEXT:    vpmaxsw %xmm2, %xmm0, %xmm06050; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06051; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26052; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46053; AVX1-NEXT:    vpmaxsw %xmm2, %xmm4, %xmm26054; AVX1-NEXT:    vpmaxsw %xmm3, %xmm1, %xmm16055; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16056; AVX1-NEXT:    retq6057;6058; AVX2-LABEL: test137:6059; AVX2:       # %bb.0: # %entry6060; AVX2-NEXT:    vpmaxsw %ymm2, %ymm0, %ymm06061; AVX2-NEXT:    vpmaxsw %ymm3, %ymm1, %ymm16062; AVX2-NEXT:    retq6063;6064; AVX512F-LABEL: test137:6065; AVX512F:       # %bb.0: # %entry6066; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm26067; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm36068; AVX512F-NEXT:    vpmaxsw %ymm2, %ymm3, %ymm26069; AVX512F-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm06070; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm06071; AVX512F-NEXT:    retq6072;6073; AVX512BW-LABEL: test137:6074; AVX512BW:       # %bb.0: # %entry6075; AVX512BW-NEXT:    vpmaxsw %zmm1, %zmm0, %zmm06076; AVX512BW-NEXT:    retq6077entry:6078  %cmp = icmp slt <32 x i16> %a, %b6079  %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a6080  ret <32 x i16> %sel6081}6082 6083define <32 x i16> @test138(<32 x i16> %a, <32 x i16> %b) {6084; SSE-LABEL: test138:6085; SSE:       # %bb.0: # %entry6086; SSE-NEXT:    pmaxsw %xmm4, %xmm06087; SSE-NEXT:    pmaxsw %xmm5, %xmm16088; SSE-NEXT:    pmaxsw %xmm6, %xmm26089; SSE-NEXT:    pmaxsw %xmm7, %xmm36090; SSE-NEXT:    retq6091;6092; AVX1-LABEL: test138:6093; AVX1:       # %bb.0: # %entry6094; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46095; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56096; AVX1-NEXT:    vpmaxsw %xmm4, %xmm5, %xmm46097; AVX1-NEXT:    vpmaxsw %xmm2, %xmm0, %xmm06098; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06099; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26100; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46101; AVX1-NEXT:    vpmaxsw %xmm2, %xmm4, %xmm26102; AVX1-NEXT:    vpmaxsw %xmm3, %xmm1, %xmm16103; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16104; AVX1-NEXT:    retq6105;6106; AVX2-LABEL: test138:6107; AVX2:       # %bb.0: # %entry6108; AVX2-NEXT:    vpmaxsw %ymm2, %ymm0, %ymm06109; AVX2-NEXT:    vpmaxsw %ymm3, %ymm1, %ymm16110; AVX2-NEXT:    retq6111;6112; AVX512F-LABEL: test138:6113; AVX512F:       # %bb.0: # %entry6114; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm26115; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm36116; AVX512F-NEXT:    vpmaxsw %ymm2, %ymm3, %ymm26117; AVX512F-NEXT:    vpmaxsw %ymm1, %ymm0, %ymm06118; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm06119; AVX512F-NEXT:    retq6120;6121; AVX512BW-LABEL: test138:6122; AVX512BW:       # %bb.0: # %entry6123; AVX512BW-NEXT:    vpmaxsw %zmm1, %zmm0, %zmm06124; AVX512BW-NEXT:    retq6125entry:6126  %cmp = icmp sle <32 x i16> %a, %b6127  %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a6128  ret <32 x i16> %sel6129}6130 6131define <32 x i16> @test139(<32 x i16> %a, <32 x i16> %b) {6132; SSE-LABEL: test139:6133; SSE:       # %bb.0: # %entry6134; SSE-NEXT:    pminsw %xmm4, %xmm06135; SSE-NEXT:    pminsw %xmm5, %xmm16136; SSE-NEXT:    pminsw %xmm6, %xmm26137; SSE-NEXT:    pminsw %xmm7, %xmm36138; SSE-NEXT:    retq6139;6140; AVX1-LABEL: test139:6141; AVX1:       # %bb.0: # %entry6142; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46143; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56144; AVX1-NEXT:    vpminsw %xmm4, %xmm5, %xmm46145; AVX1-NEXT:    vpminsw %xmm2, %xmm0, %xmm06146; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06147; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26148; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46149; AVX1-NEXT:    vpminsw %xmm2, %xmm4, %xmm26150; AVX1-NEXT:    vpminsw %xmm3, %xmm1, %xmm16151; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16152; AVX1-NEXT:    retq6153;6154; AVX2-LABEL: test139:6155; AVX2:       # %bb.0: # %entry6156; AVX2-NEXT:    vpminsw %ymm2, %ymm0, %ymm06157; AVX2-NEXT:    vpminsw %ymm3, %ymm1, %ymm16158; AVX2-NEXT:    retq6159;6160; AVX512F-LABEL: test139:6161; AVX512F:       # %bb.0: # %entry6162; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm26163; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm36164; AVX512F-NEXT:    vpminsw %ymm2, %ymm3, %ymm26165; AVX512F-NEXT:    vpminsw %ymm1, %ymm0, %ymm06166; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm06167; AVX512F-NEXT:    retq6168;6169; AVX512BW-LABEL: test139:6170; AVX512BW:       # %bb.0: # %entry6171; AVX512BW-NEXT:    vpminsw %zmm1, %zmm0, %zmm06172; AVX512BW-NEXT:    retq6173entry:6174  %cmp = icmp sgt <32 x i16> %a, %b6175  %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a6176  ret <32 x i16> %sel6177}6178 6179define <32 x i16> @test140(<32 x i16> %a, <32 x i16> %b) {6180; SSE-LABEL: test140:6181; SSE:       # %bb.0: # %entry6182; SSE-NEXT:    pminsw %xmm4, %xmm06183; SSE-NEXT:    pminsw %xmm5, %xmm16184; SSE-NEXT:    pminsw %xmm6, %xmm26185; SSE-NEXT:    pminsw %xmm7, %xmm36186; SSE-NEXT:    retq6187;6188; AVX1-LABEL: test140:6189; AVX1:       # %bb.0: # %entry6190; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46191; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56192; AVX1-NEXT:    vpminsw %xmm4, %xmm5, %xmm46193; AVX1-NEXT:    vpminsw %xmm2, %xmm0, %xmm06194; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06195; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26196; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46197; AVX1-NEXT:    vpminsw %xmm2, %xmm4, %xmm26198; AVX1-NEXT:    vpminsw %xmm3, %xmm1, %xmm16199; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16200; AVX1-NEXT:    retq6201;6202; AVX2-LABEL: test140:6203; AVX2:       # %bb.0: # %entry6204; AVX2-NEXT:    vpminsw %ymm2, %ymm0, %ymm06205; AVX2-NEXT:    vpminsw %ymm3, %ymm1, %ymm16206; AVX2-NEXT:    retq6207;6208; AVX512F-LABEL: test140:6209; AVX512F:       # %bb.0: # %entry6210; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm26211; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm36212; AVX512F-NEXT:    vpminsw %ymm2, %ymm3, %ymm26213; AVX512F-NEXT:    vpminsw %ymm1, %ymm0, %ymm06214; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm06215; AVX512F-NEXT:    retq6216;6217; AVX512BW-LABEL: test140:6218; AVX512BW:       # %bb.0: # %entry6219; AVX512BW-NEXT:    vpminsw %zmm1, %zmm0, %zmm06220; AVX512BW-NEXT:    retq6221entry:6222  %cmp = icmp sge <32 x i16> %a, %b6223  %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a6224  ret <32 x i16> %sel6225}6226 6227define <32 x i16> @test141(<32 x i16> %a, <32 x i16> %b) {6228; SSE2-LABEL: test141:6229; SSE2:       # %bb.0: # %entry6230; SSE2-NEXT:    psubusw %xmm0, %xmm46231; SSE2-NEXT:    paddw %xmm4, %xmm06232; SSE2-NEXT:    psubusw %xmm1, %xmm56233; SSE2-NEXT:    paddw %xmm5, %xmm16234; SSE2-NEXT:    psubusw %xmm2, %xmm66235; SSE2-NEXT:    paddw %xmm6, %xmm26236; SSE2-NEXT:    psubusw %xmm3, %xmm76237; SSE2-NEXT:    paddw %xmm7, %xmm36238; SSE2-NEXT:    retq6239;6240; SSE4-LABEL: test141:6241; SSE4:       # %bb.0: # %entry6242; SSE4-NEXT:    pmaxuw %xmm4, %xmm06243; SSE4-NEXT:    pmaxuw %xmm5, %xmm16244; SSE4-NEXT:    pmaxuw %xmm6, %xmm26245; SSE4-NEXT:    pmaxuw %xmm7, %xmm36246; SSE4-NEXT:    retq6247;6248; AVX1-LABEL: test141:6249; AVX1:       # %bb.0: # %entry6250; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46251; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56252; AVX1-NEXT:    vpmaxuw %xmm4, %xmm5, %xmm46253; AVX1-NEXT:    vpmaxuw %xmm2, %xmm0, %xmm06254; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06255; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26256; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46257; AVX1-NEXT:    vpmaxuw %xmm2, %xmm4, %xmm26258; AVX1-NEXT:    vpmaxuw %xmm3, %xmm1, %xmm16259; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16260; AVX1-NEXT:    retq6261;6262; AVX2-LABEL: test141:6263; AVX2:       # %bb.0: # %entry6264; AVX2-NEXT:    vpmaxuw %ymm2, %ymm0, %ymm06265; AVX2-NEXT:    vpmaxuw %ymm3, %ymm1, %ymm16266; AVX2-NEXT:    retq6267;6268; AVX512F-LABEL: test141:6269; AVX512F:       # %bb.0: # %entry6270; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm26271; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm36272; AVX512F-NEXT:    vpmaxuw %ymm2, %ymm3, %ymm26273; AVX512F-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm06274; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm06275; AVX512F-NEXT:    retq6276;6277; AVX512BW-LABEL: test141:6278; AVX512BW:       # %bb.0: # %entry6279; AVX512BW-NEXT:    vpmaxuw %zmm1, %zmm0, %zmm06280; AVX512BW-NEXT:    retq6281entry:6282  %cmp = icmp ult <32 x i16> %a, %b6283  %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a6284  ret <32 x i16> %sel6285}6286 6287define <32 x i16> @test142(<32 x i16> %a, <32 x i16> %b) {6288; SSE2-LABEL: test142:6289; SSE2:       # %bb.0: # %entry6290; SSE2-NEXT:    psubusw %xmm0, %xmm46291; SSE2-NEXT:    paddw %xmm4, %xmm06292; SSE2-NEXT:    psubusw %xmm1, %xmm56293; SSE2-NEXT:    paddw %xmm5, %xmm16294; SSE2-NEXT:    psubusw %xmm2, %xmm66295; SSE2-NEXT:    paddw %xmm6, %xmm26296; SSE2-NEXT:    psubusw %xmm3, %xmm76297; SSE2-NEXT:    paddw %xmm7, %xmm36298; SSE2-NEXT:    retq6299;6300; SSE4-LABEL: test142:6301; SSE4:       # %bb.0: # %entry6302; SSE4-NEXT:    pmaxuw %xmm4, %xmm06303; SSE4-NEXT:    pmaxuw %xmm5, %xmm16304; SSE4-NEXT:    pmaxuw %xmm6, %xmm26305; SSE4-NEXT:    pmaxuw %xmm7, %xmm36306; SSE4-NEXT:    retq6307;6308; AVX1-LABEL: test142:6309; AVX1:       # %bb.0: # %entry6310; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46311; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56312; AVX1-NEXT:    vpmaxuw %xmm4, %xmm5, %xmm46313; AVX1-NEXT:    vpmaxuw %xmm2, %xmm0, %xmm06314; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06315; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26316; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46317; AVX1-NEXT:    vpmaxuw %xmm2, %xmm4, %xmm26318; AVX1-NEXT:    vpmaxuw %xmm3, %xmm1, %xmm16319; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16320; AVX1-NEXT:    retq6321;6322; AVX2-LABEL: test142:6323; AVX2:       # %bb.0: # %entry6324; AVX2-NEXT:    vpmaxuw %ymm2, %ymm0, %ymm06325; AVX2-NEXT:    vpmaxuw %ymm3, %ymm1, %ymm16326; AVX2-NEXT:    retq6327;6328; AVX512F-LABEL: test142:6329; AVX512F:       # %bb.0: # %entry6330; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm26331; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm36332; AVX512F-NEXT:    vpmaxuw %ymm2, %ymm3, %ymm26333; AVX512F-NEXT:    vpmaxuw %ymm1, %ymm0, %ymm06334; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm06335; AVX512F-NEXT:    retq6336;6337; AVX512BW-LABEL: test142:6338; AVX512BW:       # %bb.0: # %entry6339; AVX512BW-NEXT:    vpmaxuw %zmm1, %zmm0, %zmm06340; AVX512BW-NEXT:    retq6341entry:6342  %cmp = icmp ule <32 x i16> %a, %b6343  %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a6344  ret <32 x i16> %sel6345}6346 6347define <32 x i16> @test143(<32 x i16> %a, <32 x i16> %b) {6348; SSE2-LABEL: test143:6349; SSE2:       # %bb.0: # %entry6350; SSE2-NEXT:    movdqa %xmm0, %xmm86351; SSE2-NEXT:    psubusw %xmm4, %xmm86352; SSE2-NEXT:    psubw %xmm8, %xmm06353; SSE2-NEXT:    movdqa %xmm1, %xmm46354; SSE2-NEXT:    psubusw %xmm5, %xmm46355; SSE2-NEXT:    psubw %xmm4, %xmm16356; SSE2-NEXT:    movdqa %xmm2, %xmm46357; SSE2-NEXT:    psubusw %xmm6, %xmm46358; SSE2-NEXT:    psubw %xmm4, %xmm26359; SSE2-NEXT:    movdqa %xmm3, %xmm46360; SSE2-NEXT:    psubusw %xmm7, %xmm46361; SSE2-NEXT:    psubw %xmm4, %xmm36362; SSE2-NEXT:    retq6363;6364; SSE4-LABEL: test143:6365; SSE4:       # %bb.0: # %entry6366; SSE4-NEXT:    pminuw %xmm4, %xmm06367; SSE4-NEXT:    pminuw %xmm5, %xmm16368; SSE4-NEXT:    pminuw %xmm6, %xmm26369; SSE4-NEXT:    pminuw %xmm7, %xmm36370; SSE4-NEXT:    retq6371;6372; AVX1-LABEL: test143:6373; AVX1:       # %bb.0: # %entry6374; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46375; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56376; AVX1-NEXT:    vpminuw %xmm4, %xmm5, %xmm46377; AVX1-NEXT:    vpminuw %xmm2, %xmm0, %xmm06378; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06379; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26380; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46381; AVX1-NEXT:    vpminuw %xmm2, %xmm4, %xmm26382; AVX1-NEXT:    vpminuw %xmm3, %xmm1, %xmm16383; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16384; AVX1-NEXT:    retq6385;6386; AVX2-LABEL: test143:6387; AVX2:       # %bb.0: # %entry6388; AVX2-NEXT:    vpminuw %ymm2, %ymm0, %ymm06389; AVX2-NEXT:    vpminuw %ymm3, %ymm1, %ymm16390; AVX2-NEXT:    retq6391;6392; AVX512F-LABEL: test143:6393; AVX512F:       # %bb.0: # %entry6394; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm26395; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm36396; AVX512F-NEXT:    vpminuw %ymm2, %ymm3, %ymm26397; AVX512F-NEXT:    vpminuw %ymm1, %ymm0, %ymm06398; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm06399; AVX512F-NEXT:    retq6400;6401; AVX512BW-LABEL: test143:6402; AVX512BW:       # %bb.0: # %entry6403; AVX512BW-NEXT:    vpminuw %zmm1, %zmm0, %zmm06404; AVX512BW-NEXT:    retq6405entry:6406  %cmp = icmp ugt <32 x i16> %a, %b6407  %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a6408  ret <32 x i16> %sel6409}6410 6411define <32 x i16> @test144(<32 x i16> %a, <32 x i16> %b) {6412; SSE2-LABEL: test144:6413; SSE2:       # %bb.0: # %entry6414; SSE2-NEXT:    movdqa %xmm0, %xmm86415; SSE2-NEXT:    psubusw %xmm4, %xmm86416; SSE2-NEXT:    psubw %xmm8, %xmm06417; SSE2-NEXT:    movdqa %xmm1, %xmm46418; SSE2-NEXT:    psubusw %xmm5, %xmm46419; SSE2-NEXT:    psubw %xmm4, %xmm16420; SSE2-NEXT:    movdqa %xmm2, %xmm46421; SSE2-NEXT:    psubusw %xmm6, %xmm46422; SSE2-NEXT:    psubw %xmm4, %xmm26423; SSE2-NEXT:    movdqa %xmm3, %xmm46424; SSE2-NEXT:    psubusw %xmm7, %xmm46425; SSE2-NEXT:    psubw %xmm4, %xmm36426; SSE2-NEXT:    retq6427;6428; SSE4-LABEL: test144:6429; SSE4:       # %bb.0: # %entry6430; SSE4-NEXT:    pminuw %xmm4, %xmm06431; SSE4-NEXT:    pminuw %xmm5, %xmm16432; SSE4-NEXT:    pminuw %xmm6, %xmm26433; SSE4-NEXT:    pminuw %xmm7, %xmm36434; SSE4-NEXT:    retq6435;6436; AVX1-LABEL: test144:6437; AVX1:       # %bb.0: # %entry6438; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46439; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56440; AVX1-NEXT:    vpminuw %xmm4, %xmm5, %xmm46441; AVX1-NEXT:    vpminuw %xmm2, %xmm0, %xmm06442; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06443; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26444; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46445; AVX1-NEXT:    vpminuw %xmm2, %xmm4, %xmm26446; AVX1-NEXT:    vpminuw %xmm3, %xmm1, %xmm16447; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16448; AVX1-NEXT:    retq6449;6450; AVX2-LABEL: test144:6451; AVX2:       # %bb.0: # %entry6452; AVX2-NEXT:    vpminuw %ymm2, %ymm0, %ymm06453; AVX2-NEXT:    vpminuw %ymm3, %ymm1, %ymm16454; AVX2-NEXT:    retq6455;6456; AVX512F-LABEL: test144:6457; AVX512F:       # %bb.0: # %entry6458; AVX512F-NEXT:    vextracti64x4 $1, %zmm1, %ymm26459; AVX512F-NEXT:    vextracti64x4 $1, %zmm0, %ymm36460; AVX512F-NEXT:    vpminuw %ymm2, %ymm3, %ymm26461; AVX512F-NEXT:    vpminuw %ymm1, %ymm0, %ymm06462; AVX512F-NEXT:    vinserti64x4 $1, %ymm2, %zmm0, %zmm06463; AVX512F-NEXT:    retq6464;6465; AVX512BW-LABEL: test144:6466; AVX512BW:       # %bb.0: # %entry6467; AVX512BW-NEXT:    vpminuw %zmm1, %zmm0, %zmm06468; AVX512BW-NEXT:    retq6469entry:6470  %cmp = icmp uge <32 x i16> %a, %b6471  %sel = select <32 x i1> %cmp, <32 x i16> %b, <32 x i16> %a6472  ret <32 x i16> %sel6473}6474 6475define <16 x i32> @test145(<16 x i32> %a, <16 x i32> %b) {6476; SSE2-LABEL: test145:6477; SSE2:       # %bb.0: # %entry6478; SSE2-NEXT:    movdqa %xmm0, %xmm86479; SSE2-NEXT:    pcmpgtd %xmm4, %xmm86480; SSE2-NEXT:    pand %xmm8, %xmm06481; SSE2-NEXT:    pandn %xmm4, %xmm86482; SSE2-NEXT:    por %xmm8, %xmm06483; SSE2-NEXT:    movdqa %xmm1, %xmm46484; SSE2-NEXT:    pcmpgtd %xmm5, %xmm46485; SSE2-NEXT:    pand %xmm4, %xmm16486; SSE2-NEXT:    pandn %xmm5, %xmm46487; SSE2-NEXT:    por %xmm4, %xmm16488; SSE2-NEXT:    movdqa %xmm2, %xmm46489; SSE2-NEXT:    pcmpgtd %xmm6, %xmm46490; SSE2-NEXT:    pand %xmm4, %xmm26491; SSE2-NEXT:    pandn %xmm6, %xmm46492; SSE2-NEXT:    por %xmm4, %xmm26493; SSE2-NEXT:    movdqa %xmm3, %xmm46494; SSE2-NEXT:    pcmpgtd %xmm7, %xmm46495; SSE2-NEXT:    pand %xmm4, %xmm36496; SSE2-NEXT:    pandn %xmm7, %xmm46497; SSE2-NEXT:    por %xmm4, %xmm36498; SSE2-NEXT:    retq6499;6500; SSE4-LABEL: test145:6501; SSE4:       # %bb.0: # %entry6502; SSE4-NEXT:    pmaxsd %xmm4, %xmm06503; SSE4-NEXT:    pmaxsd %xmm5, %xmm16504; SSE4-NEXT:    pmaxsd %xmm6, %xmm26505; SSE4-NEXT:    pmaxsd %xmm7, %xmm36506; SSE4-NEXT:    retq6507;6508; AVX1-LABEL: test145:6509; AVX1:       # %bb.0: # %entry6510; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46511; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56512; AVX1-NEXT:    vpmaxsd %xmm4, %xmm5, %xmm46513; AVX1-NEXT:    vpmaxsd %xmm2, %xmm0, %xmm06514; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06515; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26516; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46517; AVX1-NEXT:    vpmaxsd %xmm2, %xmm4, %xmm26518; AVX1-NEXT:    vpmaxsd %xmm3, %xmm1, %xmm16519; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16520; AVX1-NEXT:    retq6521;6522; AVX2-LABEL: test145:6523; AVX2:       # %bb.0: # %entry6524; AVX2-NEXT:    vpmaxsd %ymm2, %ymm0, %ymm06525; AVX2-NEXT:    vpmaxsd %ymm3, %ymm1, %ymm16526; AVX2-NEXT:    retq6527;6528; AVX512-LABEL: test145:6529; AVX512:       # %bb.0: # %entry6530; AVX512-NEXT:    vpmaxsd %zmm1, %zmm0, %zmm06531; AVX512-NEXT:    retq6532entry:6533  %cmp = icmp slt <16 x i32> %a, %b6534  %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a6535  ret <16 x i32> %sel6536}6537 6538define <16 x i32> @test146(<16 x i32> %a, <16 x i32> %b) {6539; SSE2-LABEL: test146:6540; SSE2:       # %bb.0: # %entry6541; SSE2-NEXT:    movdqa %xmm0, %xmm86542; SSE2-NEXT:    pcmpgtd %xmm4, %xmm86543; SSE2-NEXT:    pand %xmm8, %xmm06544; SSE2-NEXT:    pandn %xmm4, %xmm86545; SSE2-NEXT:    por %xmm8, %xmm06546; SSE2-NEXT:    movdqa %xmm1, %xmm46547; SSE2-NEXT:    pcmpgtd %xmm5, %xmm46548; SSE2-NEXT:    pand %xmm4, %xmm16549; SSE2-NEXT:    pandn %xmm5, %xmm46550; SSE2-NEXT:    por %xmm4, %xmm16551; SSE2-NEXT:    movdqa %xmm2, %xmm46552; SSE2-NEXT:    pcmpgtd %xmm6, %xmm46553; SSE2-NEXT:    pand %xmm4, %xmm26554; SSE2-NEXT:    pandn %xmm6, %xmm46555; SSE2-NEXT:    por %xmm4, %xmm26556; SSE2-NEXT:    movdqa %xmm3, %xmm46557; SSE2-NEXT:    pcmpgtd %xmm7, %xmm46558; SSE2-NEXT:    pand %xmm4, %xmm36559; SSE2-NEXT:    pandn %xmm7, %xmm46560; SSE2-NEXT:    por %xmm4, %xmm36561; SSE2-NEXT:    retq6562;6563; SSE4-LABEL: test146:6564; SSE4:       # %bb.0: # %entry6565; SSE4-NEXT:    pmaxsd %xmm4, %xmm06566; SSE4-NEXT:    pmaxsd %xmm5, %xmm16567; SSE4-NEXT:    pmaxsd %xmm6, %xmm26568; SSE4-NEXT:    pmaxsd %xmm7, %xmm36569; SSE4-NEXT:    retq6570;6571; AVX1-LABEL: test146:6572; AVX1:       # %bb.0: # %entry6573; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46574; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56575; AVX1-NEXT:    vpmaxsd %xmm4, %xmm5, %xmm46576; AVX1-NEXT:    vpmaxsd %xmm2, %xmm0, %xmm06577; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06578; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26579; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46580; AVX1-NEXT:    vpmaxsd %xmm2, %xmm4, %xmm26581; AVX1-NEXT:    vpmaxsd %xmm3, %xmm1, %xmm16582; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16583; AVX1-NEXT:    retq6584;6585; AVX2-LABEL: test146:6586; AVX2:       # %bb.0: # %entry6587; AVX2-NEXT:    vpmaxsd %ymm2, %ymm0, %ymm06588; AVX2-NEXT:    vpmaxsd %ymm3, %ymm1, %ymm16589; AVX2-NEXT:    retq6590;6591; AVX512-LABEL: test146:6592; AVX512:       # %bb.0: # %entry6593; AVX512-NEXT:    vpmaxsd %zmm1, %zmm0, %zmm06594; AVX512-NEXT:    retq6595entry:6596  %cmp = icmp sle <16 x i32> %a, %b6597  %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a6598  ret <16 x i32> %sel6599}6600 6601define <16 x i32> @test147(<16 x i32> %a, <16 x i32> %b) {6602; SSE2-LABEL: test147:6603; SSE2:       # %bb.0: # %entry6604; SSE2-NEXT:    movdqa %xmm4, %xmm86605; SSE2-NEXT:    pcmpgtd %xmm0, %xmm86606; SSE2-NEXT:    pand %xmm8, %xmm06607; SSE2-NEXT:    pandn %xmm4, %xmm86608; SSE2-NEXT:    por %xmm8, %xmm06609; SSE2-NEXT:    movdqa %xmm5, %xmm46610; SSE2-NEXT:    pcmpgtd %xmm1, %xmm46611; SSE2-NEXT:    pand %xmm4, %xmm16612; SSE2-NEXT:    pandn %xmm5, %xmm46613; SSE2-NEXT:    por %xmm4, %xmm16614; SSE2-NEXT:    movdqa %xmm6, %xmm46615; SSE2-NEXT:    pcmpgtd %xmm2, %xmm46616; SSE2-NEXT:    pand %xmm4, %xmm26617; SSE2-NEXT:    pandn %xmm6, %xmm46618; SSE2-NEXT:    por %xmm4, %xmm26619; SSE2-NEXT:    movdqa %xmm7, %xmm46620; SSE2-NEXT:    pcmpgtd %xmm3, %xmm46621; SSE2-NEXT:    pand %xmm4, %xmm36622; SSE2-NEXT:    pandn %xmm7, %xmm46623; SSE2-NEXT:    por %xmm4, %xmm36624; SSE2-NEXT:    retq6625;6626; SSE4-LABEL: test147:6627; SSE4:       # %bb.0: # %entry6628; SSE4-NEXT:    pminsd %xmm4, %xmm06629; SSE4-NEXT:    pminsd %xmm5, %xmm16630; SSE4-NEXT:    pminsd %xmm6, %xmm26631; SSE4-NEXT:    pminsd %xmm7, %xmm36632; SSE4-NEXT:    retq6633;6634; AVX1-LABEL: test147:6635; AVX1:       # %bb.0: # %entry6636; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46637; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56638; AVX1-NEXT:    vpminsd %xmm4, %xmm5, %xmm46639; AVX1-NEXT:    vpminsd %xmm2, %xmm0, %xmm06640; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06641; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26642; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46643; AVX1-NEXT:    vpminsd %xmm2, %xmm4, %xmm26644; AVX1-NEXT:    vpminsd %xmm3, %xmm1, %xmm16645; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16646; AVX1-NEXT:    retq6647;6648; AVX2-LABEL: test147:6649; AVX2:       # %bb.0: # %entry6650; AVX2-NEXT:    vpminsd %ymm2, %ymm0, %ymm06651; AVX2-NEXT:    vpminsd %ymm3, %ymm1, %ymm16652; AVX2-NEXT:    retq6653;6654; AVX512-LABEL: test147:6655; AVX512:       # %bb.0: # %entry6656; AVX512-NEXT:    vpminsd %zmm1, %zmm0, %zmm06657; AVX512-NEXT:    retq6658entry:6659  %cmp = icmp sgt <16 x i32> %a, %b6660  %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a6661  ret <16 x i32> %sel6662}6663 6664define <16 x i32> @test148(<16 x i32> %a, <16 x i32> %b) {6665; SSE2-LABEL: test148:6666; SSE2:       # %bb.0: # %entry6667; SSE2-NEXT:    movdqa %xmm4, %xmm86668; SSE2-NEXT:    pcmpgtd %xmm0, %xmm86669; SSE2-NEXT:    pand %xmm8, %xmm06670; SSE2-NEXT:    pandn %xmm4, %xmm86671; SSE2-NEXT:    por %xmm8, %xmm06672; SSE2-NEXT:    movdqa %xmm5, %xmm46673; SSE2-NEXT:    pcmpgtd %xmm1, %xmm46674; SSE2-NEXT:    pand %xmm4, %xmm16675; SSE2-NEXT:    pandn %xmm5, %xmm46676; SSE2-NEXT:    por %xmm4, %xmm16677; SSE2-NEXT:    movdqa %xmm6, %xmm46678; SSE2-NEXT:    pcmpgtd %xmm2, %xmm46679; SSE2-NEXT:    pand %xmm4, %xmm26680; SSE2-NEXT:    pandn %xmm6, %xmm46681; SSE2-NEXT:    por %xmm4, %xmm26682; SSE2-NEXT:    movdqa %xmm7, %xmm46683; SSE2-NEXT:    pcmpgtd %xmm3, %xmm46684; SSE2-NEXT:    pand %xmm4, %xmm36685; SSE2-NEXT:    pandn %xmm7, %xmm46686; SSE2-NEXT:    por %xmm4, %xmm36687; SSE2-NEXT:    retq6688;6689; SSE4-LABEL: test148:6690; SSE4:       # %bb.0: # %entry6691; SSE4-NEXT:    pminsd %xmm4, %xmm06692; SSE4-NEXT:    pminsd %xmm5, %xmm16693; SSE4-NEXT:    pminsd %xmm6, %xmm26694; SSE4-NEXT:    pminsd %xmm7, %xmm36695; SSE4-NEXT:    retq6696;6697; AVX1-LABEL: test148:6698; AVX1:       # %bb.0: # %entry6699; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46700; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56701; AVX1-NEXT:    vpminsd %xmm4, %xmm5, %xmm46702; AVX1-NEXT:    vpminsd %xmm2, %xmm0, %xmm06703; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06704; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26705; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46706; AVX1-NEXT:    vpminsd %xmm2, %xmm4, %xmm26707; AVX1-NEXT:    vpminsd %xmm3, %xmm1, %xmm16708; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16709; AVX1-NEXT:    retq6710;6711; AVX2-LABEL: test148:6712; AVX2:       # %bb.0: # %entry6713; AVX2-NEXT:    vpminsd %ymm2, %ymm0, %ymm06714; AVX2-NEXT:    vpminsd %ymm3, %ymm1, %ymm16715; AVX2-NEXT:    retq6716;6717; AVX512-LABEL: test148:6718; AVX512:       # %bb.0: # %entry6719; AVX512-NEXT:    vpminsd %zmm1, %zmm0, %zmm06720; AVX512-NEXT:    retq6721entry:6722  %cmp = icmp sge <16 x i32> %a, %b6723  %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a6724  ret <16 x i32> %sel6725}6726 6727define <16 x i32> @test149(<16 x i32> %a, <16 x i32> %b) {6728; SSE2-LABEL: test149:6729; SSE2:       # %bb.0: # %entry6730; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648,2147483648,2147483648]6731; SSE2-NEXT:    movdqa %xmm4, %xmm96732; SSE2-NEXT:    pxor %xmm8, %xmm96733; SSE2-NEXT:    movdqa %xmm0, %xmm106734; SSE2-NEXT:    pxor %xmm8, %xmm106735; SSE2-NEXT:    pcmpgtd %xmm9, %xmm106736; SSE2-NEXT:    pand %xmm10, %xmm06737; SSE2-NEXT:    pandn %xmm4, %xmm106738; SSE2-NEXT:    por %xmm10, %xmm06739; SSE2-NEXT:    movdqa %xmm5, %xmm46740; SSE2-NEXT:    pxor %xmm8, %xmm46741; SSE2-NEXT:    movdqa %xmm1, %xmm96742; SSE2-NEXT:    pxor %xmm8, %xmm96743; SSE2-NEXT:    pcmpgtd %xmm4, %xmm96744; SSE2-NEXT:    pand %xmm9, %xmm16745; SSE2-NEXT:    pandn %xmm5, %xmm96746; SSE2-NEXT:    por %xmm9, %xmm16747; SSE2-NEXT:    movdqa %xmm6, %xmm46748; SSE2-NEXT:    pxor %xmm8, %xmm46749; SSE2-NEXT:    movdqa %xmm2, %xmm56750; SSE2-NEXT:    pxor %xmm8, %xmm56751; SSE2-NEXT:    pcmpgtd %xmm4, %xmm56752; SSE2-NEXT:    pand %xmm5, %xmm26753; SSE2-NEXT:    pandn %xmm6, %xmm56754; SSE2-NEXT:    por %xmm5, %xmm26755; SSE2-NEXT:    movdqa %xmm7, %xmm46756; SSE2-NEXT:    pxor %xmm8, %xmm46757; SSE2-NEXT:    pxor %xmm3, %xmm86758; SSE2-NEXT:    pcmpgtd %xmm4, %xmm86759; SSE2-NEXT:    pand %xmm8, %xmm36760; SSE2-NEXT:    pandn %xmm7, %xmm86761; SSE2-NEXT:    por %xmm8, %xmm36762; SSE2-NEXT:    retq6763;6764; SSE4-LABEL: test149:6765; SSE4:       # %bb.0: # %entry6766; SSE4-NEXT:    pmaxud %xmm4, %xmm06767; SSE4-NEXT:    pmaxud %xmm5, %xmm16768; SSE4-NEXT:    pmaxud %xmm6, %xmm26769; SSE4-NEXT:    pmaxud %xmm7, %xmm36770; SSE4-NEXT:    retq6771;6772; AVX1-LABEL: test149:6773; AVX1:       # %bb.0: # %entry6774; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46775; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56776; AVX1-NEXT:    vpmaxud %xmm4, %xmm5, %xmm46777; AVX1-NEXT:    vpmaxud %xmm2, %xmm0, %xmm06778; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06779; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26780; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46781; AVX1-NEXT:    vpmaxud %xmm2, %xmm4, %xmm26782; AVX1-NEXT:    vpmaxud %xmm3, %xmm1, %xmm16783; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16784; AVX1-NEXT:    retq6785;6786; AVX2-LABEL: test149:6787; AVX2:       # %bb.0: # %entry6788; AVX2-NEXT:    vpmaxud %ymm2, %ymm0, %ymm06789; AVX2-NEXT:    vpmaxud %ymm3, %ymm1, %ymm16790; AVX2-NEXT:    retq6791;6792; AVX512-LABEL: test149:6793; AVX512:       # %bb.0: # %entry6794; AVX512-NEXT:    vpmaxud %zmm1, %zmm0, %zmm06795; AVX512-NEXT:    retq6796entry:6797  %cmp = icmp ult <16 x i32> %a, %b6798  %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a6799  ret <16 x i32> %sel6800}6801 6802define <16 x i32> @test150(<16 x i32> %a, <16 x i32> %b) {6803; SSE2-LABEL: test150:6804; SSE2:       # %bb.0: # %entry6805; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648,2147483648,2147483648]6806; SSE2-NEXT:    movdqa %xmm4, %xmm96807; SSE2-NEXT:    pxor %xmm8, %xmm96808; SSE2-NEXT:    movdqa %xmm0, %xmm106809; SSE2-NEXT:    pxor %xmm8, %xmm106810; SSE2-NEXT:    pcmpgtd %xmm9, %xmm106811; SSE2-NEXT:    pand %xmm10, %xmm06812; SSE2-NEXT:    pandn %xmm4, %xmm106813; SSE2-NEXT:    por %xmm10, %xmm06814; SSE2-NEXT:    movdqa %xmm5, %xmm46815; SSE2-NEXT:    pxor %xmm8, %xmm46816; SSE2-NEXT:    movdqa %xmm1, %xmm96817; SSE2-NEXT:    pxor %xmm8, %xmm96818; SSE2-NEXT:    pcmpgtd %xmm4, %xmm96819; SSE2-NEXT:    pand %xmm9, %xmm16820; SSE2-NEXT:    pandn %xmm5, %xmm96821; SSE2-NEXT:    por %xmm9, %xmm16822; SSE2-NEXT:    movdqa %xmm6, %xmm46823; SSE2-NEXT:    pxor %xmm8, %xmm46824; SSE2-NEXT:    movdqa %xmm2, %xmm56825; SSE2-NEXT:    pxor %xmm8, %xmm56826; SSE2-NEXT:    pcmpgtd %xmm4, %xmm56827; SSE2-NEXT:    pand %xmm5, %xmm26828; SSE2-NEXT:    pandn %xmm6, %xmm56829; SSE2-NEXT:    por %xmm5, %xmm26830; SSE2-NEXT:    movdqa %xmm7, %xmm46831; SSE2-NEXT:    pxor %xmm8, %xmm46832; SSE2-NEXT:    pxor %xmm3, %xmm86833; SSE2-NEXT:    pcmpgtd %xmm4, %xmm86834; SSE2-NEXT:    pand %xmm8, %xmm36835; SSE2-NEXT:    pandn %xmm7, %xmm86836; SSE2-NEXT:    por %xmm8, %xmm36837; SSE2-NEXT:    retq6838;6839; SSE4-LABEL: test150:6840; SSE4:       # %bb.0: # %entry6841; SSE4-NEXT:    pmaxud %xmm4, %xmm06842; SSE4-NEXT:    pmaxud %xmm5, %xmm16843; SSE4-NEXT:    pmaxud %xmm6, %xmm26844; SSE4-NEXT:    pmaxud %xmm7, %xmm36845; SSE4-NEXT:    retq6846;6847; AVX1-LABEL: test150:6848; AVX1:       # %bb.0: # %entry6849; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46850; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56851; AVX1-NEXT:    vpmaxud %xmm4, %xmm5, %xmm46852; AVX1-NEXT:    vpmaxud %xmm2, %xmm0, %xmm06853; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06854; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26855; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46856; AVX1-NEXT:    vpmaxud %xmm2, %xmm4, %xmm26857; AVX1-NEXT:    vpmaxud %xmm3, %xmm1, %xmm16858; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16859; AVX1-NEXT:    retq6860;6861; AVX2-LABEL: test150:6862; AVX2:       # %bb.0: # %entry6863; AVX2-NEXT:    vpmaxud %ymm2, %ymm0, %ymm06864; AVX2-NEXT:    vpmaxud %ymm3, %ymm1, %ymm16865; AVX2-NEXT:    retq6866;6867; AVX512-LABEL: test150:6868; AVX512:       # %bb.0: # %entry6869; AVX512-NEXT:    vpmaxud %zmm1, %zmm0, %zmm06870; AVX512-NEXT:    retq6871entry:6872  %cmp = icmp ule <16 x i32> %a, %b6873  %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a6874  ret <16 x i32> %sel6875}6876 6877define <16 x i32> @test151(<16 x i32> %a, <16 x i32> %b) {6878; SSE2-LABEL: test151:6879; SSE2:       # %bb.0: # %entry6880; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648,2147483648,2147483648]6881; SSE2-NEXT:    movdqa %xmm0, %xmm96882; SSE2-NEXT:    pxor %xmm8, %xmm96883; SSE2-NEXT:    movdqa %xmm4, %xmm106884; SSE2-NEXT:    pxor %xmm8, %xmm106885; SSE2-NEXT:    pcmpgtd %xmm9, %xmm106886; SSE2-NEXT:    pand %xmm10, %xmm06887; SSE2-NEXT:    pandn %xmm4, %xmm106888; SSE2-NEXT:    por %xmm10, %xmm06889; SSE2-NEXT:    movdqa %xmm1, %xmm46890; SSE2-NEXT:    pxor %xmm8, %xmm46891; SSE2-NEXT:    movdqa %xmm5, %xmm96892; SSE2-NEXT:    pxor %xmm8, %xmm96893; SSE2-NEXT:    pcmpgtd %xmm4, %xmm96894; SSE2-NEXT:    pand %xmm9, %xmm16895; SSE2-NEXT:    pandn %xmm5, %xmm96896; SSE2-NEXT:    por %xmm9, %xmm16897; SSE2-NEXT:    movdqa %xmm2, %xmm46898; SSE2-NEXT:    pxor %xmm8, %xmm46899; SSE2-NEXT:    movdqa %xmm6, %xmm56900; SSE2-NEXT:    pxor %xmm8, %xmm56901; SSE2-NEXT:    pcmpgtd %xmm4, %xmm56902; SSE2-NEXT:    pand %xmm5, %xmm26903; SSE2-NEXT:    pandn %xmm6, %xmm56904; SSE2-NEXT:    por %xmm5, %xmm26905; SSE2-NEXT:    movdqa %xmm3, %xmm46906; SSE2-NEXT:    pxor %xmm8, %xmm46907; SSE2-NEXT:    pxor %xmm7, %xmm86908; SSE2-NEXT:    pcmpgtd %xmm4, %xmm86909; SSE2-NEXT:    pand %xmm8, %xmm36910; SSE2-NEXT:    pandn %xmm7, %xmm86911; SSE2-NEXT:    por %xmm8, %xmm36912; SSE2-NEXT:    retq6913;6914; SSE4-LABEL: test151:6915; SSE4:       # %bb.0: # %entry6916; SSE4-NEXT:    pminud %xmm4, %xmm06917; SSE4-NEXT:    pminud %xmm5, %xmm16918; SSE4-NEXT:    pminud %xmm6, %xmm26919; SSE4-NEXT:    pminud %xmm7, %xmm36920; SSE4-NEXT:    retq6921;6922; AVX1-LABEL: test151:6923; AVX1:       # %bb.0: # %entry6924; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm46925; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm56926; AVX1-NEXT:    vpminud %xmm4, %xmm5, %xmm46927; AVX1-NEXT:    vpminud %xmm2, %xmm0, %xmm06928; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm06929; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm26930; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm46931; AVX1-NEXT:    vpminud %xmm2, %xmm4, %xmm26932; AVX1-NEXT:    vpminud %xmm3, %xmm1, %xmm16933; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm16934; AVX1-NEXT:    retq6935;6936; AVX2-LABEL: test151:6937; AVX2:       # %bb.0: # %entry6938; AVX2-NEXT:    vpminud %ymm2, %ymm0, %ymm06939; AVX2-NEXT:    vpminud %ymm3, %ymm1, %ymm16940; AVX2-NEXT:    retq6941;6942; AVX512-LABEL: test151:6943; AVX512:       # %bb.0: # %entry6944; AVX512-NEXT:    vpminud %zmm1, %zmm0, %zmm06945; AVX512-NEXT:    retq6946entry:6947  %cmp = icmp ugt <16 x i32> %a, %b6948  %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a6949  ret <16 x i32> %sel6950}6951 6952define <16 x i32> @test152(<16 x i32> %a, <16 x i32> %b) {6953; SSE2-LABEL: test152:6954; SSE2:       # %bb.0: # %entry6955; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648,2147483648,2147483648]6956; SSE2-NEXT:    movdqa %xmm0, %xmm96957; SSE2-NEXT:    pxor %xmm8, %xmm96958; SSE2-NEXT:    movdqa %xmm4, %xmm106959; SSE2-NEXT:    pxor %xmm8, %xmm106960; SSE2-NEXT:    pcmpgtd %xmm9, %xmm106961; SSE2-NEXT:    pand %xmm10, %xmm06962; SSE2-NEXT:    pandn %xmm4, %xmm106963; SSE2-NEXT:    por %xmm10, %xmm06964; SSE2-NEXT:    movdqa %xmm1, %xmm46965; SSE2-NEXT:    pxor %xmm8, %xmm46966; SSE2-NEXT:    movdqa %xmm5, %xmm96967; SSE2-NEXT:    pxor %xmm8, %xmm96968; SSE2-NEXT:    pcmpgtd %xmm4, %xmm96969; SSE2-NEXT:    pand %xmm9, %xmm16970; SSE2-NEXT:    pandn %xmm5, %xmm96971; SSE2-NEXT:    por %xmm9, %xmm16972; SSE2-NEXT:    movdqa %xmm2, %xmm46973; SSE2-NEXT:    pxor %xmm8, %xmm46974; SSE2-NEXT:    movdqa %xmm6, %xmm56975; SSE2-NEXT:    pxor %xmm8, %xmm56976; SSE2-NEXT:    pcmpgtd %xmm4, %xmm56977; SSE2-NEXT:    pand %xmm5, %xmm26978; SSE2-NEXT:    pandn %xmm6, %xmm56979; SSE2-NEXT:    por %xmm5, %xmm26980; SSE2-NEXT:    movdqa %xmm3, %xmm46981; SSE2-NEXT:    pxor %xmm8, %xmm46982; SSE2-NEXT:    pxor %xmm7, %xmm86983; SSE2-NEXT:    pcmpgtd %xmm4, %xmm86984; SSE2-NEXT:    pand %xmm8, %xmm36985; SSE2-NEXT:    pandn %xmm7, %xmm86986; SSE2-NEXT:    por %xmm8, %xmm36987; SSE2-NEXT:    retq6988;6989; SSE4-LABEL: test152:6990; SSE4:       # %bb.0: # %entry6991; SSE4-NEXT:    pminud %xmm4, %xmm06992; SSE4-NEXT:    pminud %xmm5, %xmm16993; SSE4-NEXT:    pminud %xmm6, %xmm26994; SSE4-NEXT:    pminud %xmm7, %xmm36995; SSE4-NEXT:    retq6996;6997; AVX1-LABEL: test152:6998; AVX1:       # %bb.0: # %entry6999; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm47000; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm57001; AVX1-NEXT:    vpminud %xmm4, %xmm5, %xmm47002; AVX1-NEXT:    vpminud %xmm2, %xmm0, %xmm07003; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm07004; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm27005; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm47006; AVX1-NEXT:    vpminud %xmm2, %xmm4, %xmm27007; AVX1-NEXT:    vpminud %xmm3, %xmm1, %xmm17008; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm1, %ymm17009; AVX1-NEXT:    retq7010;7011; AVX2-LABEL: test152:7012; AVX2:       # %bb.0: # %entry7013; AVX2-NEXT:    vpminud %ymm2, %ymm0, %ymm07014; AVX2-NEXT:    vpminud %ymm3, %ymm1, %ymm17015; AVX2-NEXT:    retq7016;7017; AVX512-LABEL: test152:7018; AVX512:       # %bb.0: # %entry7019; AVX512-NEXT:    vpminud %zmm1, %zmm0, %zmm07020; AVX512-NEXT:    retq7021entry:7022  %cmp = icmp uge <16 x i32> %a, %b7023  %sel = select <16 x i1> %cmp, <16 x i32> %b, <16 x i32> %a7024  ret <16 x i32> %sel7025}7026 7027; -----------------------7028 7029define <8 x i64> @test153(<8 x i64> %a, <8 x i64> %b) {7030; SSE2-LABEL: test153:7031; SSE2:       # %bb.0: # %entry7032; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648]7033; SSE2-NEXT:    movdqa %xmm4, %xmm97034; SSE2-NEXT:    pxor %xmm8, %xmm97035; SSE2-NEXT:    movdqa %xmm0, %xmm107036; SSE2-NEXT:    pxor %xmm8, %xmm107037; SSE2-NEXT:    movdqa %xmm10, %xmm117038; SSE2-NEXT:    pcmpgtd %xmm9, %xmm117039; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]7040; SSE2-NEXT:    pcmpeqd %xmm9, %xmm107041; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7042; SSE2-NEXT:    pand %xmm12, %xmm97043; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]7044; SSE2-NEXT:    por %xmm9, %xmm107045; SSE2-NEXT:    pand %xmm10, %xmm07046; SSE2-NEXT:    pandn %xmm4, %xmm107047; SSE2-NEXT:    por %xmm10, %xmm07048; SSE2-NEXT:    movdqa %xmm5, %xmm47049; SSE2-NEXT:    pxor %xmm8, %xmm47050; SSE2-NEXT:    movdqa %xmm1, %xmm97051; SSE2-NEXT:    pxor %xmm8, %xmm97052; SSE2-NEXT:    movdqa %xmm9, %xmm107053; SSE2-NEXT:    pcmpgtd %xmm4, %xmm107054; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]7055; SSE2-NEXT:    pcmpeqd %xmm4, %xmm97056; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]7057; SSE2-NEXT:    pand %xmm11, %xmm47058; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7059; SSE2-NEXT:    por %xmm4, %xmm97060; SSE2-NEXT:    pand %xmm9, %xmm17061; SSE2-NEXT:    pandn %xmm5, %xmm97062; SSE2-NEXT:    por %xmm9, %xmm17063; SSE2-NEXT:    movdqa %xmm6, %xmm47064; SSE2-NEXT:    pxor %xmm8, %xmm47065; SSE2-NEXT:    movdqa %xmm2, %xmm57066; SSE2-NEXT:    pxor %xmm8, %xmm57067; SSE2-NEXT:    movdqa %xmm5, %xmm97068; SSE2-NEXT:    pcmpgtd %xmm4, %xmm97069; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]7070; SSE2-NEXT:    pcmpeqd %xmm4, %xmm57071; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]7072; SSE2-NEXT:    pand %xmm10, %xmm47073; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]7074; SSE2-NEXT:    por %xmm4, %xmm57075; SSE2-NEXT:    pand %xmm5, %xmm27076; SSE2-NEXT:    pandn %xmm6, %xmm57077; SSE2-NEXT:    por %xmm5, %xmm27078; SSE2-NEXT:    movdqa %xmm7, %xmm47079; SSE2-NEXT:    pxor %xmm8, %xmm47080; SSE2-NEXT:    pxor %xmm3, %xmm87081; SSE2-NEXT:    movdqa %xmm8, %xmm57082; SSE2-NEXT:    pcmpgtd %xmm4, %xmm57083; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]7084; SSE2-NEXT:    pcmpeqd %xmm4, %xmm87085; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]7086; SSE2-NEXT:    pand %xmm6, %xmm47087; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]7088; SSE2-NEXT:    por %xmm4, %xmm57089; SSE2-NEXT:    pand %xmm5, %xmm37090; SSE2-NEXT:    pandn %xmm7, %xmm57091; SSE2-NEXT:    por %xmm5, %xmm37092; SSE2-NEXT:    retq7093;7094; SSE4-LABEL: test153:7095; SSE4:       # %bb.0: # %entry7096; SSE4-NEXT:    movdqa %xmm0, %xmm87097; SSE4-NEXT:    pcmpgtq %xmm4, %xmm07098; SSE4-NEXT:    blendvpd %xmm0, %xmm8, %xmm47099; SSE4-NEXT:    movdqa %xmm1, %xmm07100; SSE4-NEXT:    pcmpgtq %xmm5, %xmm07101; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm57102; SSE4-NEXT:    movdqa %xmm2, %xmm07103; SSE4-NEXT:    pcmpgtq %xmm6, %xmm07104; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm67105; SSE4-NEXT:    movdqa %xmm3, %xmm07106; SSE4-NEXT:    pcmpgtq %xmm7, %xmm07107; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm77108; SSE4-NEXT:    movapd %xmm4, %xmm07109; SSE4-NEXT:    movapd %xmm5, %xmm17110; SSE4-NEXT:    movapd %xmm6, %xmm27111; SSE4-NEXT:    movapd %xmm7, %xmm37112; SSE4-NEXT:    retq7113;7114; AVX1-LABEL: test153:7115; AVX1:       # %bb.0: # %entry7116; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm47117; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm57118; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm47119; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm0, %xmm57120; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm5, %ymm47121; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm07122; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm27123; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm47124; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm27125; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm1, %xmm47126; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm27127; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17128; AVX1-NEXT:    retq7129;7130; AVX2-LABEL: test153:7131; AVX2:       # %bb.0: # %entry7132; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm0, %ymm47133; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm07134; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm1, %ymm27135; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17136; AVX2-NEXT:    retq7137;7138; AVX512-LABEL: test153:7139; AVX512:       # %bb.0: # %entry7140; AVX512-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm07141; AVX512-NEXT:    retq7142entry:7143  %cmp = icmp slt <8 x i64> %a, %b7144  %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a7145  ret <8 x i64> %sel7146}7147 7148define <8 x i64> @test154(<8 x i64> %a, <8 x i64> %b) {7149; SSE2-LABEL: test154:7150; SSE2:       # %bb.0: # %entry7151; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648]7152; SSE2-NEXT:    movdqa %xmm4, %xmm97153; SSE2-NEXT:    pxor %xmm8, %xmm97154; SSE2-NEXT:    movdqa %xmm0, %xmm107155; SSE2-NEXT:    pxor %xmm8, %xmm107156; SSE2-NEXT:    movdqa %xmm10, %xmm117157; SSE2-NEXT:    pcmpgtd %xmm9, %xmm117158; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]7159; SSE2-NEXT:    pcmpeqd %xmm9, %xmm107160; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7161; SSE2-NEXT:    pand %xmm12, %xmm97162; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]7163; SSE2-NEXT:    por %xmm9, %xmm107164; SSE2-NEXT:    pand %xmm10, %xmm07165; SSE2-NEXT:    pandn %xmm4, %xmm107166; SSE2-NEXT:    por %xmm10, %xmm07167; SSE2-NEXT:    movdqa %xmm5, %xmm47168; SSE2-NEXT:    pxor %xmm8, %xmm47169; SSE2-NEXT:    movdqa %xmm1, %xmm97170; SSE2-NEXT:    pxor %xmm8, %xmm97171; SSE2-NEXT:    movdqa %xmm9, %xmm107172; SSE2-NEXT:    pcmpgtd %xmm4, %xmm107173; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]7174; SSE2-NEXT:    pcmpeqd %xmm4, %xmm97175; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]7176; SSE2-NEXT:    pand %xmm11, %xmm47177; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7178; SSE2-NEXT:    por %xmm4, %xmm97179; SSE2-NEXT:    pand %xmm9, %xmm17180; SSE2-NEXT:    pandn %xmm5, %xmm97181; SSE2-NEXT:    por %xmm9, %xmm17182; SSE2-NEXT:    movdqa %xmm6, %xmm47183; SSE2-NEXT:    pxor %xmm8, %xmm47184; SSE2-NEXT:    movdqa %xmm2, %xmm57185; SSE2-NEXT:    pxor %xmm8, %xmm57186; SSE2-NEXT:    movdqa %xmm5, %xmm97187; SSE2-NEXT:    pcmpgtd %xmm4, %xmm97188; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]7189; SSE2-NEXT:    pcmpeqd %xmm4, %xmm57190; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]7191; SSE2-NEXT:    pand %xmm10, %xmm47192; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]7193; SSE2-NEXT:    por %xmm4, %xmm57194; SSE2-NEXT:    pand %xmm5, %xmm27195; SSE2-NEXT:    pandn %xmm6, %xmm57196; SSE2-NEXT:    por %xmm5, %xmm27197; SSE2-NEXT:    movdqa %xmm7, %xmm47198; SSE2-NEXT:    pxor %xmm8, %xmm47199; SSE2-NEXT:    pxor %xmm3, %xmm87200; SSE2-NEXT:    movdqa %xmm8, %xmm57201; SSE2-NEXT:    pcmpgtd %xmm4, %xmm57202; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]7203; SSE2-NEXT:    pcmpeqd %xmm4, %xmm87204; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]7205; SSE2-NEXT:    pand %xmm6, %xmm47206; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]7207; SSE2-NEXT:    por %xmm4, %xmm57208; SSE2-NEXT:    pand %xmm5, %xmm37209; SSE2-NEXT:    pandn %xmm7, %xmm57210; SSE2-NEXT:    por %xmm5, %xmm37211; SSE2-NEXT:    retq7212;7213; SSE4-LABEL: test154:7214; SSE4:       # %bb.0: # %entry7215; SSE4-NEXT:    movdqa %xmm0, %xmm87216; SSE4-NEXT:    pcmpgtq %xmm4, %xmm07217; SSE4-NEXT:    blendvpd %xmm0, %xmm8, %xmm47218; SSE4-NEXT:    movdqa %xmm1, %xmm07219; SSE4-NEXT:    pcmpgtq %xmm5, %xmm07220; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm57221; SSE4-NEXT:    movdqa %xmm2, %xmm07222; SSE4-NEXT:    pcmpgtq %xmm6, %xmm07223; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm67224; SSE4-NEXT:    movdqa %xmm3, %xmm07225; SSE4-NEXT:    pcmpgtq %xmm7, %xmm07226; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm77227; SSE4-NEXT:    movapd %xmm4, %xmm07228; SSE4-NEXT:    movapd %xmm5, %xmm17229; SSE4-NEXT:    movapd %xmm6, %xmm27230; SSE4-NEXT:    movapd %xmm7, %xmm37231; SSE4-NEXT:    retq7232;7233; AVX1-LABEL: test154:7234; AVX1:       # %bb.0: # %entry7235; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm47236; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm57237; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm47238; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm0, %xmm57239; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm5, %ymm47240; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm07241; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm27242; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm47243; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm27244; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm1, %xmm47245; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm27246; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17247; AVX1-NEXT:    retq7248;7249; AVX2-LABEL: test154:7250; AVX2:       # %bb.0: # %entry7251; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm0, %ymm47252; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm07253; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm1, %ymm27254; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17255; AVX2-NEXT:    retq7256;7257; AVX512-LABEL: test154:7258; AVX512:       # %bb.0: # %entry7259; AVX512-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm07260; AVX512-NEXT:    retq7261entry:7262  %cmp = icmp sle <8 x i64> %a, %b7263  %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a7264  ret <8 x i64> %sel7265}7266 7267define <8 x i64> @test155(<8 x i64> %a, <8 x i64> %b) {7268; SSE2-LABEL: test155:7269; SSE2:       # %bb.0: # %entry7270; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [2147483648,2147483648]7271; SSE2-NEXT:    movdqa %xmm0, %xmm97272; SSE2-NEXT:    pxor %xmm8, %xmm97273; SSE2-NEXT:    movdqa %xmm4, %xmm107274; SSE2-NEXT:    pxor %xmm8, %xmm107275; SSE2-NEXT:    movdqa %xmm10, %xmm117276; SSE2-NEXT:    pcmpgtd %xmm9, %xmm117277; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]7278; SSE2-NEXT:    pcmpeqd %xmm9, %xmm107279; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7280; SSE2-NEXT:    pand %xmm12, %xmm97281; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]7282; SSE2-NEXT:    por %xmm9, %xmm107283; SSE2-NEXT:    pand %xmm10, %xmm07284; SSE2-NEXT:    pandn %xmm4, %xmm107285; SSE2-NEXT:    por %xmm10, %xmm07286; SSE2-NEXT:    movdqa %xmm1, %xmm47287; SSE2-NEXT:    pxor %xmm8, %xmm47288; SSE2-NEXT:    movdqa %xmm5, %xmm97289; SSE2-NEXT:    pxor %xmm8, %xmm97290; SSE2-NEXT:    movdqa %xmm9, %xmm107291; SSE2-NEXT:    pcmpgtd %xmm4, %xmm107292; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]7293; SSE2-NEXT:    pcmpeqd %xmm4, %xmm97294; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]7295; SSE2-NEXT:    pand %xmm11, %xmm47296; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7297; SSE2-NEXT:    por %xmm4, %xmm97298; SSE2-NEXT:    pand %xmm9, %xmm17299; SSE2-NEXT:    pandn %xmm5, %xmm97300; SSE2-NEXT:    por %xmm9, %xmm17301; SSE2-NEXT:    movdqa %xmm2, %xmm47302; SSE2-NEXT:    pxor %xmm8, %xmm47303; SSE2-NEXT:    movdqa %xmm6, %xmm57304; SSE2-NEXT:    pxor %xmm8, %xmm57305; SSE2-NEXT:    movdqa %xmm5, %xmm97306; SSE2-NEXT:    pcmpgtd %xmm4, %xmm97307; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]7308; SSE2-NEXT:    pcmpeqd %xmm4, %xmm57309; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]7310; SSE2-NEXT:    pand %xmm10, %xmm47311; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]7312; SSE2-NEXT:    por %xmm4, %xmm57313; SSE2-NEXT:    pand %xmm5, %xmm27314; SSE2-NEXT:    pandn %xmm6, %xmm57315; SSE2-NEXT:    por %xmm5, %xmm27316; SSE2-NEXT:    movdqa %xmm3, %xmm47317; SSE2-NEXT:    pxor %xmm8, %xmm47318; SSE2-NEXT:    pxor %xmm7, %xmm87319; SSE2-NEXT:    movdqa %xmm8, %xmm57320; SSE2-NEXT:    pcmpgtd %xmm4, %xmm57321; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]7322; SSE2-NEXT:    pcmpeqd %xmm4, %xmm87323; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]7324; SSE2-NEXT:    pand %xmm6, %xmm47325; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]7326; SSE2-NEXT:    por %xmm4, %xmm57327; SSE2-NEXT:    pand %xmm5, %xmm37328; SSE2-NEXT:    pandn %xmm7, %xmm57329; SSE2-NEXT:    por %xmm5, %xmm37330; SSE2-NEXT:    retq7331;7332; SSE4-LABEL: test155:7333; SSE4:       # %bb.0: # %entry7334; SSE4-NEXT:    movdqa %xmm0, %xmm87335; SSE4-NEXT:    movdqa %xmm4, %xmm07336; SSE4-NEXT:    pcmpgtq %xmm8, %xmm07337; SSE4-NEXT:    blendvpd %xmm0, %xmm8, %xmm47338; SSE4-NEXT:    movdqa %xmm5, %xmm07339; SSE4-NEXT:    pcmpgtq %xmm1, %xmm07340; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm57341; SSE4-NEXT:    movdqa %xmm6, %xmm07342; SSE4-NEXT:    pcmpgtq %xmm2, %xmm07343; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm67344; SSE4-NEXT:    movdqa %xmm7, %xmm07345; SSE4-NEXT:    pcmpgtq %xmm3, %xmm07346; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm77347; SSE4-NEXT:    movapd %xmm4, %xmm07348; SSE4-NEXT:    movapd %xmm5, %xmm17349; SSE4-NEXT:    movapd %xmm6, %xmm27350; SSE4-NEXT:    movapd %xmm7, %xmm37351; SSE4-NEXT:    retq7352;7353; AVX1-LABEL: test155:7354; AVX1:       # %bb.0: # %entry7355; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm47356; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm57357; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm47358; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm2, %xmm57359; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm5, %ymm47360; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm07361; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm27362; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm47363; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm27364; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm3, %xmm47365; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm27366; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17367; AVX1-NEXT:    retq7368;7369; AVX2-LABEL: test155:7370; AVX2:       # %bb.0: # %entry7371; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm2, %ymm47372; AVX2-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm07373; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm3, %ymm27374; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17375; AVX2-NEXT:    retq7376;7377; AVX512-LABEL: test155:7378; AVX512:       # %bb.0: # %entry7379; AVX512-NEXT:    vpminsq %zmm1, %zmm0, %zmm07380; AVX512-NEXT:    retq7381entry:7382  %cmp = icmp sgt <8 x i64> %a, %b7383  %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a7384  ret <8 x i64> %sel7385}7386 7387define <8 x i64> @test156(<8 x i64> %a, <8 x i64> %b) {7388; SSE2-LABEL: test156:7389; SSE2:       # %bb.0: # %entry7390; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [9223372039002259456,9223372039002259456]7391; SSE2-NEXT:    movdqa %xmm4, %xmm97392; SSE2-NEXT:    pxor %xmm8, %xmm97393; SSE2-NEXT:    movdqa %xmm0, %xmm107394; SSE2-NEXT:    pxor %xmm8, %xmm107395; SSE2-NEXT:    movdqa %xmm10, %xmm117396; SSE2-NEXT:    pcmpgtd %xmm9, %xmm117397; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]7398; SSE2-NEXT:    pcmpeqd %xmm9, %xmm107399; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7400; SSE2-NEXT:    pand %xmm12, %xmm97401; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]7402; SSE2-NEXT:    por %xmm9, %xmm107403; SSE2-NEXT:    pand %xmm10, %xmm07404; SSE2-NEXT:    pandn %xmm4, %xmm107405; SSE2-NEXT:    por %xmm10, %xmm07406; SSE2-NEXT:    movdqa %xmm5, %xmm47407; SSE2-NEXT:    pxor %xmm8, %xmm47408; SSE2-NEXT:    movdqa %xmm1, %xmm97409; SSE2-NEXT:    pxor %xmm8, %xmm97410; SSE2-NEXT:    movdqa %xmm9, %xmm107411; SSE2-NEXT:    pcmpgtd %xmm4, %xmm107412; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]7413; SSE2-NEXT:    pcmpeqd %xmm4, %xmm97414; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]7415; SSE2-NEXT:    pand %xmm11, %xmm47416; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7417; SSE2-NEXT:    por %xmm4, %xmm97418; SSE2-NEXT:    pand %xmm9, %xmm17419; SSE2-NEXT:    pandn %xmm5, %xmm97420; SSE2-NEXT:    por %xmm9, %xmm17421; SSE2-NEXT:    movdqa %xmm6, %xmm47422; SSE2-NEXT:    pxor %xmm8, %xmm47423; SSE2-NEXT:    movdqa %xmm2, %xmm57424; SSE2-NEXT:    pxor %xmm8, %xmm57425; SSE2-NEXT:    movdqa %xmm5, %xmm97426; SSE2-NEXT:    pcmpgtd %xmm4, %xmm97427; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]7428; SSE2-NEXT:    pcmpeqd %xmm4, %xmm57429; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]7430; SSE2-NEXT:    pand %xmm10, %xmm47431; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]7432; SSE2-NEXT:    por %xmm4, %xmm57433; SSE2-NEXT:    pand %xmm5, %xmm27434; SSE2-NEXT:    pandn %xmm6, %xmm57435; SSE2-NEXT:    por %xmm5, %xmm27436; SSE2-NEXT:    movdqa %xmm7, %xmm47437; SSE2-NEXT:    pxor %xmm8, %xmm47438; SSE2-NEXT:    pxor %xmm3, %xmm87439; SSE2-NEXT:    movdqa %xmm8, %xmm57440; SSE2-NEXT:    pcmpgtd %xmm4, %xmm57441; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]7442; SSE2-NEXT:    pcmpeqd %xmm4, %xmm87443; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]7444; SSE2-NEXT:    pand %xmm6, %xmm47445; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]7446; SSE2-NEXT:    por %xmm4, %xmm57447; SSE2-NEXT:    pand %xmm5, %xmm37448; SSE2-NEXT:    pandn %xmm7, %xmm57449; SSE2-NEXT:    por %xmm5, %xmm37450; SSE2-NEXT:    retq7451;7452; SSE4-LABEL: test156:7453; SSE4:       # %bb.0: # %entry7454; SSE4-NEXT:    movdqa %xmm0, %xmm97455; SSE4-NEXT:    movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808]7456; SSE4-NEXT:    movdqa %xmm4, %xmm107457; SSE4-NEXT:    pxor %xmm8, %xmm107458; SSE4-NEXT:    pxor %xmm8, %xmm07459; SSE4-NEXT:    pcmpgtq %xmm10, %xmm07460; SSE4-NEXT:    blendvpd %xmm0, %xmm9, %xmm47461; SSE4-NEXT:    movdqa %xmm5, %xmm97462; SSE4-NEXT:    pxor %xmm8, %xmm97463; SSE4-NEXT:    movdqa %xmm1, %xmm07464; SSE4-NEXT:    pxor %xmm8, %xmm07465; SSE4-NEXT:    pcmpgtq %xmm9, %xmm07466; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm57467; SSE4-NEXT:    movdqa %xmm6, %xmm17468; SSE4-NEXT:    pxor %xmm8, %xmm17469; SSE4-NEXT:    movdqa %xmm2, %xmm07470; SSE4-NEXT:    pxor %xmm8, %xmm07471; SSE4-NEXT:    pcmpgtq %xmm1, %xmm07472; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm67473; SSE4-NEXT:    movdqa %xmm7, %xmm07474; SSE4-NEXT:    pxor %xmm8, %xmm07475; SSE4-NEXT:    pxor %xmm3, %xmm87476; SSE4-NEXT:    pcmpgtq %xmm0, %xmm87477; SSE4-NEXT:    movdqa %xmm8, %xmm07478; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm77479; SSE4-NEXT:    movapd %xmm4, %xmm07480; SSE4-NEXT:    movapd %xmm5, %xmm17481; SSE4-NEXT:    movapd %xmm6, %xmm27482; SSE4-NEXT:    movapd %xmm7, %xmm37483; SSE4-NEXT:    retq7484;7485; AVX1-LABEL: test156:7486; AVX1:       # %bb.0: # %entry7487; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm47488; AVX1-NEXT:    vmovddup {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]7489; AVX1-NEXT:    # xmm5 = mem[0,0]7490; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm47491; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm67492; AVX1-NEXT:    vpxor %xmm5, %xmm6, %xmm67493; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm6, %xmm47494; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm67495; AVX1-NEXT:    vpxor %xmm5, %xmm0, %xmm77496; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm7, %xmm67497; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm6, %ymm47498; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm07499; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm27500; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm27501; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm47502; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm47503; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm27504; AVX1-NEXT:    vpxor %xmm5, %xmm3, %xmm47505; AVX1-NEXT:    vpxor %xmm5, %xmm1, %xmm57506; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm47507; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm27508; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17509; AVX1-NEXT:    retq7510;7511; AVX2-LABEL: test156:7512; AVX2:       # %bb.0: # %entry7513; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]7514; AVX2-NEXT:    vpxor %ymm4, %ymm2, %ymm57515; AVX2-NEXT:    vpxor %ymm4, %ymm0, %ymm67516; AVX2-NEXT:    vpcmpgtq %ymm5, %ymm6, %ymm57517; AVX2-NEXT:    vblendvpd %ymm5, %ymm0, %ymm2, %ymm07518; AVX2-NEXT:    vpxor %ymm4, %ymm3, %ymm27519; AVX2-NEXT:    vpxor %ymm4, %ymm1, %ymm47520; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm4, %ymm27521; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17522; AVX2-NEXT:    retq7523;7524; AVX512-LABEL: test156:7525; AVX512:       # %bb.0: # %entry7526; AVX512-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm07527; AVX512-NEXT:    retq7528entry:7529  %cmp = icmp ule <8 x i64> %a, %b7530  %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a7531  ret <8 x i64> %sel7532}7533 7534define <8 x i64> @test159(<8 x i64> %a, <8 x i64> %b) {7535; SSE2-LABEL: test159:7536; SSE2:       # %bb.0: # %entry7537; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [9223372039002259456,9223372039002259456]7538; SSE2-NEXT:    movdqa %xmm0, %xmm97539; SSE2-NEXT:    pxor %xmm8, %xmm97540; SSE2-NEXT:    movdqa %xmm4, %xmm107541; SSE2-NEXT:    pxor %xmm8, %xmm107542; SSE2-NEXT:    movdqa %xmm10, %xmm117543; SSE2-NEXT:    pcmpgtd %xmm9, %xmm117544; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]7545; SSE2-NEXT:    pcmpeqd %xmm9, %xmm107546; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7547; SSE2-NEXT:    pand %xmm12, %xmm97548; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]7549; SSE2-NEXT:    por %xmm9, %xmm107550; SSE2-NEXT:    pand %xmm10, %xmm07551; SSE2-NEXT:    pandn %xmm4, %xmm107552; SSE2-NEXT:    por %xmm10, %xmm07553; SSE2-NEXT:    movdqa %xmm1, %xmm47554; SSE2-NEXT:    pxor %xmm8, %xmm47555; SSE2-NEXT:    movdqa %xmm5, %xmm97556; SSE2-NEXT:    pxor %xmm8, %xmm97557; SSE2-NEXT:    movdqa %xmm9, %xmm107558; SSE2-NEXT:    pcmpgtd %xmm4, %xmm107559; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]7560; SSE2-NEXT:    pcmpeqd %xmm4, %xmm97561; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]7562; SSE2-NEXT:    pand %xmm11, %xmm47563; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7564; SSE2-NEXT:    por %xmm4, %xmm97565; SSE2-NEXT:    pand %xmm9, %xmm17566; SSE2-NEXT:    pandn %xmm5, %xmm97567; SSE2-NEXT:    por %xmm9, %xmm17568; SSE2-NEXT:    movdqa %xmm2, %xmm47569; SSE2-NEXT:    pxor %xmm8, %xmm47570; SSE2-NEXT:    movdqa %xmm6, %xmm57571; SSE2-NEXT:    pxor %xmm8, %xmm57572; SSE2-NEXT:    movdqa %xmm5, %xmm97573; SSE2-NEXT:    pcmpgtd %xmm4, %xmm97574; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]7575; SSE2-NEXT:    pcmpeqd %xmm4, %xmm57576; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]7577; SSE2-NEXT:    pand %xmm10, %xmm47578; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]7579; SSE2-NEXT:    por %xmm4, %xmm57580; SSE2-NEXT:    pand %xmm5, %xmm27581; SSE2-NEXT:    pandn %xmm6, %xmm57582; SSE2-NEXT:    por %xmm5, %xmm27583; SSE2-NEXT:    movdqa %xmm3, %xmm47584; SSE2-NEXT:    pxor %xmm8, %xmm47585; SSE2-NEXT:    pxor %xmm7, %xmm87586; SSE2-NEXT:    movdqa %xmm8, %xmm57587; SSE2-NEXT:    pcmpgtd %xmm4, %xmm57588; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]7589; SSE2-NEXT:    pcmpeqd %xmm4, %xmm87590; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]7591; SSE2-NEXT:    pand %xmm6, %xmm47592; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]7593; SSE2-NEXT:    por %xmm4, %xmm57594; SSE2-NEXT:    pand %xmm5, %xmm37595; SSE2-NEXT:    pandn %xmm7, %xmm57596; SSE2-NEXT:    por %xmm5, %xmm37597; SSE2-NEXT:    retq7598;7599; SSE4-LABEL: test159:7600; SSE4:       # %bb.0: # %entry7601; SSE4-NEXT:    movdqa %xmm0, %xmm97602; SSE4-NEXT:    movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808]7603; SSE4-NEXT:    movdqa %xmm0, %xmm107604; SSE4-NEXT:    pxor %xmm8, %xmm107605; SSE4-NEXT:    movdqa %xmm4, %xmm07606; SSE4-NEXT:    pxor %xmm8, %xmm07607; SSE4-NEXT:    pcmpgtq %xmm10, %xmm07608; SSE4-NEXT:    blendvpd %xmm0, %xmm9, %xmm47609; SSE4-NEXT:    movdqa %xmm1, %xmm97610; SSE4-NEXT:    pxor %xmm8, %xmm97611; SSE4-NEXT:    movdqa %xmm5, %xmm07612; SSE4-NEXT:    pxor %xmm8, %xmm07613; SSE4-NEXT:    pcmpgtq %xmm9, %xmm07614; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm57615; SSE4-NEXT:    movdqa %xmm2, %xmm17616; SSE4-NEXT:    pxor %xmm8, %xmm17617; SSE4-NEXT:    movdqa %xmm6, %xmm07618; SSE4-NEXT:    pxor %xmm8, %xmm07619; SSE4-NEXT:    pcmpgtq %xmm1, %xmm07620; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm67621; SSE4-NEXT:    movdqa %xmm3, %xmm07622; SSE4-NEXT:    pxor %xmm8, %xmm07623; SSE4-NEXT:    pxor %xmm7, %xmm87624; SSE4-NEXT:    pcmpgtq %xmm0, %xmm87625; SSE4-NEXT:    movdqa %xmm8, %xmm07626; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm77627; SSE4-NEXT:    movapd %xmm4, %xmm07628; SSE4-NEXT:    movapd %xmm5, %xmm17629; SSE4-NEXT:    movapd %xmm6, %xmm27630; SSE4-NEXT:    movapd %xmm7, %xmm37631; SSE4-NEXT:    retq7632;7633; AVX1-LABEL: test159:7634; AVX1:       # %bb.0: # %entry7635; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm47636; AVX1-NEXT:    vmovddup {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]7637; AVX1-NEXT:    # xmm5 = mem[0,0]7638; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm47639; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm67640; AVX1-NEXT:    vpxor %xmm5, %xmm6, %xmm67641; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm6, %xmm47642; AVX1-NEXT:    vpxor %xmm5, %xmm0, %xmm67643; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm77644; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm7, %xmm67645; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm6, %ymm47646; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm07647; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm27648; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm27649; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm47650; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm47651; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm27652; AVX1-NEXT:    vpxor %xmm5, %xmm1, %xmm47653; AVX1-NEXT:    vpxor %xmm5, %xmm3, %xmm57654; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm47655; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm27656; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17657; AVX1-NEXT:    retq7658;7659; AVX2-LABEL: test159:7660; AVX2:       # %bb.0: # %entry7661; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]7662; AVX2-NEXT:    vpxor %ymm4, %ymm0, %ymm57663; AVX2-NEXT:    vpxor %ymm4, %ymm2, %ymm67664; AVX2-NEXT:    vpcmpgtq %ymm5, %ymm6, %ymm57665; AVX2-NEXT:    vblendvpd %ymm5, %ymm0, %ymm2, %ymm07666; AVX2-NEXT:    vpxor %ymm4, %ymm1, %ymm27667; AVX2-NEXT:    vpxor %ymm4, %ymm3, %ymm47668; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm4, %ymm27669; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17670; AVX2-NEXT:    retq7671;7672; AVX512-LABEL: test159:7673; AVX512:       # %bb.0: # %entry7674; AVX512-NEXT:    vpminuq %zmm1, %zmm0, %zmm07675; AVX512-NEXT:    retq7676entry:7677  %cmp = icmp ugt <8 x i64> %a, %b7678  %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a7679  ret <8 x i64> %sel7680}7681 7682define <8 x i64> @test160(<8 x i64> %a, <8 x i64> %b) {7683; SSE2-LABEL: test160:7684; SSE2:       # %bb.0: # %entry7685; SSE2-NEXT:    movdqa {{.*#+}} xmm8 = [9223372039002259456,9223372039002259456]7686; SSE2-NEXT:    movdqa %xmm0, %xmm97687; SSE2-NEXT:    pxor %xmm8, %xmm97688; SSE2-NEXT:    movdqa %xmm4, %xmm107689; SSE2-NEXT:    pxor %xmm8, %xmm107690; SSE2-NEXT:    movdqa %xmm10, %xmm117691; SSE2-NEXT:    pcmpgtd %xmm9, %xmm117692; SSE2-NEXT:    pshufd {{.*#+}} xmm12 = xmm11[0,0,2,2]7693; SSE2-NEXT:    pcmpeqd %xmm9, %xmm107694; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7695; SSE2-NEXT:    pand %xmm12, %xmm97696; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm11[1,1,3,3]7697; SSE2-NEXT:    por %xmm9, %xmm107698; SSE2-NEXT:    pand %xmm10, %xmm07699; SSE2-NEXT:    pandn %xmm4, %xmm107700; SSE2-NEXT:    por %xmm10, %xmm07701; SSE2-NEXT:    movdqa %xmm1, %xmm47702; SSE2-NEXT:    pxor %xmm8, %xmm47703; SSE2-NEXT:    movdqa %xmm5, %xmm97704; SSE2-NEXT:    pxor %xmm8, %xmm97705; SSE2-NEXT:    movdqa %xmm9, %xmm107706; SSE2-NEXT:    pcmpgtd %xmm4, %xmm107707; SSE2-NEXT:    pshufd {{.*#+}} xmm11 = xmm10[0,0,2,2]7708; SSE2-NEXT:    pcmpeqd %xmm4, %xmm97709; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm9[1,1,3,3]7710; SSE2-NEXT:    pand %xmm11, %xmm47711; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm10[1,1,3,3]7712; SSE2-NEXT:    por %xmm4, %xmm97713; SSE2-NEXT:    pand %xmm9, %xmm17714; SSE2-NEXT:    pandn %xmm5, %xmm97715; SSE2-NEXT:    por %xmm9, %xmm17716; SSE2-NEXT:    movdqa %xmm2, %xmm47717; SSE2-NEXT:    pxor %xmm8, %xmm47718; SSE2-NEXT:    movdqa %xmm6, %xmm57719; SSE2-NEXT:    pxor %xmm8, %xmm57720; SSE2-NEXT:    movdqa %xmm5, %xmm97721; SSE2-NEXT:    pcmpgtd %xmm4, %xmm97722; SSE2-NEXT:    pshufd {{.*#+}} xmm10 = xmm9[0,0,2,2]7723; SSE2-NEXT:    pcmpeqd %xmm4, %xmm57724; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]7725; SSE2-NEXT:    pand %xmm10, %xmm47726; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm9[1,1,3,3]7727; SSE2-NEXT:    por %xmm4, %xmm57728; SSE2-NEXT:    pand %xmm5, %xmm27729; SSE2-NEXT:    pandn %xmm6, %xmm57730; SSE2-NEXT:    por %xmm5, %xmm27731; SSE2-NEXT:    movdqa %xmm3, %xmm47732; SSE2-NEXT:    pxor %xmm8, %xmm47733; SSE2-NEXT:    pxor %xmm7, %xmm87734; SSE2-NEXT:    movdqa %xmm8, %xmm57735; SSE2-NEXT:    pcmpgtd %xmm4, %xmm57736; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]7737; SSE2-NEXT:    pcmpeqd %xmm4, %xmm87738; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm8[1,1,3,3]7739; SSE2-NEXT:    pand %xmm6, %xmm47740; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]7741; SSE2-NEXT:    por %xmm4, %xmm57742; SSE2-NEXT:    pand %xmm5, %xmm37743; SSE2-NEXT:    pandn %xmm7, %xmm57744; SSE2-NEXT:    por %xmm5, %xmm37745; SSE2-NEXT:    retq7746;7747; SSE4-LABEL: test160:7748; SSE4:       # %bb.0: # %entry7749; SSE4-NEXT:    movdqa %xmm0, %xmm97750; SSE4-NEXT:    movdqa {{.*#+}} xmm8 = [9223372036854775808,9223372036854775808]7751; SSE4-NEXT:    movdqa %xmm0, %xmm107752; SSE4-NEXT:    pxor %xmm8, %xmm107753; SSE4-NEXT:    movdqa %xmm4, %xmm07754; SSE4-NEXT:    pxor %xmm8, %xmm07755; SSE4-NEXT:    pcmpgtq %xmm10, %xmm07756; SSE4-NEXT:    blendvpd %xmm0, %xmm9, %xmm47757; SSE4-NEXT:    movdqa %xmm1, %xmm97758; SSE4-NEXT:    pxor %xmm8, %xmm97759; SSE4-NEXT:    movdqa %xmm5, %xmm07760; SSE4-NEXT:    pxor %xmm8, %xmm07761; SSE4-NEXT:    pcmpgtq %xmm9, %xmm07762; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm57763; SSE4-NEXT:    movdqa %xmm2, %xmm17764; SSE4-NEXT:    pxor %xmm8, %xmm17765; SSE4-NEXT:    movdqa %xmm6, %xmm07766; SSE4-NEXT:    pxor %xmm8, %xmm07767; SSE4-NEXT:    pcmpgtq %xmm1, %xmm07768; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm67769; SSE4-NEXT:    movdqa %xmm3, %xmm07770; SSE4-NEXT:    pxor %xmm8, %xmm07771; SSE4-NEXT:    pxor %xmm7, %xmm87772; SSE4-NEXT:    pcmpgtq %xmm0, %xmm87773; SSE4-NEXT:    movdqa %xmm8, %xmm07774; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm77775; SSE4-NEXT:    movapd %xmm4, %xmm07776; SSE4-NEXT:    movapd %xmm5, %xmm17777; SSE4-NEXT:    movapd %xmm6, %xmm27778; SSE4-NEXT:    movapd %xmm7, %xmm37779; SSE4-NEXT:    retq7780;7781; AVX1-LABEL: test160:7782; AVX1:       # %bb.0: # %entry7783; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm47784; AVX1-NEXT:    vmovddup {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]7785; AVX1-NEXT:    # xmm5 = mem[0,0]7786; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm47787; AVX1-NEXT:    vextractf128 $1, %ymm2, %xmm67788; AVX1-NEXT:    vpxor %xmm5, %xmm6, %xmm67789; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm6, %xmm47790; AVX1-NEXT:    vpxor %xmm5, %xmm0, %xmm67791; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm77792; AVX1-NEXT:    vpcmpgtq %xmm6, %xmm7, %xmm67793; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm6, %ymm47794; AVX1-NEXT:    vblendvpd %ymm4, %ymm0, %ymm2, %ymm07795; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm27796; AVX1-NEXT:    vpxor %xmm5, %xmm2, %xmm27797; AVX1-NEXT:    vextractf128 $1, %ymm3, %xmm47798; AVX1-NEXT:    vpxor %xmm5, %xmm4, %xmm47799; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm27800; AVX1-NEXT:    vpxor %xmm5, %xmm1, %xmm47801; AVX1-NEXT:    vpxor %xmm5, %xmm3, %xmm57802; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm5, %xmm47803; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm4, %ymm27804; AVX1-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17805; AVX1-NEXT:    retq7806;7807; AVX2-LABEL: test160:7808; AVX2:       # %bb.0: # %entry7809; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm4 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]7810; AVX2-NEXT:    vpxor %ymm4, %ymm0, %ymm57811; AVX2-NEXT:    vpxor %ymm4, %ymm2, %ymm67812; AVX2-NEXT:    vpcmpgtq %ymm5, %ymm6, %ymm57813; AVX2-NEXT:    vblendvpd %ymm5, %ymm0, %ymm2, %ymm07814; AVX2-NEXT:    vpxor %ymm4, %ymm1, %ymm27815; AVX2-NEXT:    vpxor %ymm4, %ymm3, %ymm47816; AVX2-NEXT:    vpcmpgtq %ymm2, %ymm4, %ymm27817; AVX2-NEXT:    vblendvpd %ymm2, %ymm1, %ymm3, %ymm17818; AVX2-NEXT:    retq7819;7820; AVX512-LABEL: test160:7821; AVX512:       # %bb.0: # %entry7822; AVX512-NEXT:    vpminuq %zmm1, %zmm0, %zmm07823; AVX512-NEXT:    retq7824entry:7825  %cmp = icmp uge <8 x i64> %a, %b7826  %sel = select <8 x i1> %cmp, <8 x i64> %b, <8 x i64> %a7827  ret <8 x i64> %sel7828}7829 7830define <4 x i64> @test161(<4 x i64> %a, <4 x i64> %b) {7831; SSE2-LABEL: test161:7832; SSE2:       # %bb.0: # %entry7833; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]7834; SSE2-NEXT:    movdqa %xmm0, %xmm57835; SSE2-NEXT:    pxor %xmm4, %xmm57836; SSE2-NEXT:    movdqa %xmm2, %xmm67837; SSE2-NEXT:    pxor %xmm4, %xmm67838; SSE2-NEXT:    movdqa %xmm6, %xmm77839; SSE2-NEXT:    pcmpgtd %xmm5, %xmm77840; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]7841; SSE2-NEXT:    pcmpeqd %xmm5, %xmm67842; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]7843; SSE2-NEXT:    pand %xmm8, %xmm57844; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]7845; SSE2-NEXT:    por %xmm5, %xmm67846; SSE2-NEXT:    pand %xmm6, %xmm07847; SSE2-NEXT:    pandn %xmm2, %xmm67848; SSE2-NEXT:    por %xmm6, %xmm07849; SSE2-NEXT:    movdqa %xmm1, %xmm27850; SSE2-NEXT:    pxor %xmm4, %xmm27851; SSE2-NEXT:    pxor %xmm3, %xmm47852; SSE2-NEXT:    movdqa %xmm4, %xmm57853; SSE2-NEXT:    pcmpgtd %xmm2, %xmm57854; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]7855; SSE2-NEXT:    pcmpeqd %xmm2, %xmm47856; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]7857; SSE2-NEXT:    pand %xmm6, %xmm27858; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]7859; SSE2-NEXT:    por %xmm2, %xmm47860; SSE2-NEXT:    pand %xmm4, %xmm17861; SSE2-NEXT:    pandn %xmm3, %xmm47862; SSE2-NEXT:    por %xmm4, %xmm17863; SSE2-NEXT:    retq7864;7865; SSE4-LABEL: test161:7866; SSE4:       # %bb.0: # %entry7867; SSE4-NEXT:    movdqa %xmm0, %xmm47868; SSE4-NEXT:    movdqa %xmm2, %xmm07869; SSE4-NEXT:    pcmpgtq %xmm4, %xmm07870; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm27871; SSE4-NEXT:    movdqa %xmm3, %xmm07872; SSE4-NEXT:    pcmpgtq %xmm1, %xmm07873; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm37874; SSE4-NEXT:    movapd %xmm2, %xmm07875; SSE4-NEXT:    movapd %xmm3, %xmm17876; SSE4-NEXT:    retq7877;7878; AVX1-LABEL: test161:7879; AVX1:       # %bb.0: # %entry7880; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm27881; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm37882; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm27883; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm37884; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm27885; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm07886; AVX1-NEXT:    retq7887;7888; AVX2-LABEL: test161:7889; AVX2:       # %bb.0: # %entry7890; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm1, %ymm27891; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm07892; AVX2-NEXT:    retq7893;7894; AVX512F-LABEL: test161:7895; AVX512F:       # %bb.0: # %entry7896; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm17897; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm07898; AVX512F-NEXT:    vpminsq %zmm1, %zmm0, %zmm07899; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm07900; AVX512F-NEXT:    retq7901;7902; AVX512BW-LABEL: test161:7903; AVX512BW:       # %bb.0: # %entry7904; AVX512BW-NEXT:    vpminsq %ymm1, %ymm0, %ymm07905; AVX512BW-NEXT:    retq7906entry:7907  %cmp = icmp slt <4 x i64> %a, %b7908  %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b7909  ret <4 x i64> %sel7910}7911 7912define <4 x i64> @test162(<4 x i64> %a, <4 x i64> %b) {7913; SSE2-LABEL: test162:7914; SSE2:       # %bb.0: # %entry7915; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]7916; SSE2-NEXT:    movdqa %xmm0, %xmm57917; SSE2-NEXT:    pxor %xmm4, %xmm57918; SSE2-NEXT:    movdqa %xmm2, %xmm67919; SSE2-NEXT:    pxor %xmm4, %xmm67920; SSE2-NEXT:    movdqa %xmm6, %xmm77921; SSE2-NEXT:    pcmpgtd %xmm5, %xmm77922; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]7923; SSE2-NEXT:    pcmpeqd %xmm5, %xmm67924; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]7925; SSE2-NEXT:    pand %xmm8, %xmm57926; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]7927; SSE2-NEXT:    por %xmm5, %xmm67928; SSE2-NEXT:    pand %xmm6, %xmm07929; SSE2-NEXT:    pandn %xmm2, %xmm67930; SSE2-NEXT:    por %xmm6, %xmm07931; SSE2-NEXT:    movdqa %xmm1, %xmm27932; SSE2-NEXT:    pxor %xmm4, %xmm27933; SSE2-NEXT:    pxor %xmm3, %xmm47934; SSE2-NEXT:    movdqa %xmm4, %xmm57935; SSE2-NEXT:    pcmpgtd %xmm2, %xmm57936; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]7937; SSE2-NEXT:    pcmpeqd %xmm2, %xmm47938; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]7939; SSE2-NEXT:    pand %xmm6, %xmm27940; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]7941; SSE2-NEXT:    por %xmm2, %xmm47942; SSE2-NEXT:    pand %xmm4, %xmm17943; SSE2-NEXT:    pandn %xmm3, %xmm47944; SSE2-NEXT:    por %xmm4, %xmm17945; SSE2-NEXT:    retq7946;7947; SSE4-LABEL: test162:7948; SSE4:       # %bb.0: # %entry7949; SSE4-NEXT:    movdqa %xmm0, %xmm47950; SSE4-NEXT:    movdqa %xmm2, %xmm07951; SSE4-NEXT:    pcmpgtq %xmm4, %xmm07952; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm27953; SSE4-NEXT:    movdqa %xmm3, %xmm07954; SSE4-NEXT:    pcmpgtq %xmm1, %xmm07955; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm37956; SSE4-NEXT:    movapd %xmm2, %xmm07957; SSE4-NEXT:    movapd %xmm3, %xmm17958; SSE4-NEXT:    retq7959;7960; AVX1-LABEL: test162:7961; AVX1:       # %bb.0: # %entry7962; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm27963; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm37964; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm27965; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm37966; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm27967; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm07968; AVX1-NEXT:    retq7969;7970; AVX2-LABEL: test162:7971; AVX2:       # %bb.0: # %entry7972; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm1, %ymm27973; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm07974; AVX2-NEXT:    retq7975;7976; AVX512F-LABEL: test162:7977; AVX512F:       # %bb.0: # %entry7978; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm17979; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm07980; AVX512F-NEXT:    vpminsq %zmm1, %zmm0, %zmm07981; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm07982; AVX512F-NEXT:    retq7983;7984; AVX512BW-LABEL: test162:7985; AVX512BW:       # %bb.0: # %entry7986; AVX512BW-NEXT:    vpminsq %ymm1, %ymm0, %ymm07987; AVX512BW-NEXT:    retq7988entry:7989  %cmp = icmp sle <4 x i64> %a, %b7990  %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b7991  ret <4 x i64> %sel7992}7993 7994define <4 x i64> @test163(<4 x i64> %a, <4 x i64> %b) {7995; SSE2-LABEL: test163:7996; SSE2:       # %bb.0: # %entry7997; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]7998; SSE2-NEXT:    movdqa %xmm2, %xmm57999; SSE2-NEXT:    pxor %xmm4, %xmm58000; SSE2-NEXT:    movdqa %xmm0, %xmm68001; SSE2-NEXT:    pxor %xmm4, %xmm68002; SSE2-NEXT:    movdqa %xmm6, %xmm78003; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78004; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8005; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68006; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8007; SSE2-NEXT:    pand %xmm8, %xmm58008; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8009; SSE2-NEXT:    por %xmm5, %xmm68010; SSE2-NEXT:    pand %xmm6, %xmm08011; SSE2-NEXT:    pandn %xmm2, %xmm68012; SSE2-NEXT:    por %xmm6, %xmm08013; SSE2-NEXT:    movdqa %xmm3, %xmm28014; SSE2-NEXT:    pxor %xmm4, %xmm28015; SSE2-NEXT:    pxor %xmm1, %xmm48016; SSE2-NEXT:    movdqa %xmm4, %xmm58017; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58018; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8019; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48020; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8021; SSE2-NEXT:    pand %xmm6, %xmm28022; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8023; SSE2-NEXT:    por %xmm2, %xmm48024; SSE2-NEXT:    pand %xmm4, %xmm18025; SSE2-NEXT:    pandn %xmm3, %xmm48026; SSE2-NEXT:    por %xmm4, %xmm18027; SSE2-NEXT:    retq8028;8029; SSE4-LABEL: test163:8030; SSE4:       # %bb.0: # %entry8031; SSE4-NEXT:    movdqa %xmm0, %xmm48032; SSE4-NEXT:    pcmpgtq %xmm2, %xmm08033; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm28034; SSE4-NEXT:    movdqa %xmm1, %xmm08035; SSE4-NEXT:    pcmpgtq %xmm3, %xmm08036; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm38037; SSE4-NEXT:    movapd %xmm2, %xmm08038; SSE4-NEXT:    movapd %xmm3, %xmm18039; SSE4-NEXT:    retq8040;8041; AVX1-LABEL: test163:8042; AVX1:       # %bb.0: # %entry8043; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm28044; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm38045; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm28046; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm38047; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm28048; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08049; AVX1-NEXT:    retq8050;8051; AVX2-LABEL: test163:8052; AVX2:       # %bb.0: # %entry8053; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm28054; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08055; AVX2-NEXT:    retq8056;8057; AVX512F-LABEL: test163:8058; AVX512F:       # %bb.0: # %entry8059; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm18060; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm08061; AVX512F-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm08062; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm08063; AVX512F-NEXT:    retq8064;8065; AVX512BW-LABEL: test163:8066; AVX512BW:       # %bb.0: # %entry8067; AVX512BW-NEXT:    vpmaxsq %ymm1, %ymm0, %ymm08068; AVX512BW-NEXT:    retq8069entry:8070  %cmp = icmp sgt <4 x i64> %a, %b8071  %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b8072  ret <4 x i64> %sel8073}8074 8075define <4 x i64> @test164(<4 x i64> %a, <4 x i64> %b) {8076; SSE2-LABEL: test164:8077; SSE2:       # %bb.0: # %entry8078; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]8079; SSE2-NEXT:    movdqa %xmm2, %xmm58080; SSE2-NEXT:    pxor %xmm4, %xmm58081; SSE2-NEXT:    movdqa %xmm0, %xmm68082; SSE2-NEXT:    pxor %xmm4, %xmm68083; SSE2-NEXT:    movdqa %xmm6, %xmm78084; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78085; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8086; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68087; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8088; SSE2-NEXT:    pand %xmm8, %xmm58089; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8090; SSE2-NEXT:    por %xmm5, %xmm68091; SSE2-NEXT:    pand %xmm6, %xmm08092; SSE2-NEXT:    pandn %xmm2, %xmm68093; SSE2-NEXT:    por %xmm6, %xmm08094; SSE2-NEXT:    movdqa %xmm3, %xmm28095; SSE2-NEXT:    pxor %xmm4, %xmm28096; SSE2-NEXT:    pxor %xmm1, %xmm48097; SSE2-NEXT:    movdqa %xmm4, %xmm58098; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58099; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8100; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48101; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8102; SSE2-NEXT:    pand %xmm6, %xmm28103; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8104; SSE2-NEXT:    por %xmm2, %xmm48105; SSE2-NEXT:    pand %xmm4, %xmm18106; SSE2-NEXT:    pandn %xmm3, %xmm48107; SSE2-NEXT:    por %xmm4, %xmm18108; SSE2-NEXT:    retq8109;8110; SSE4-LABEL: test164:8111; SSE4:       # %bb.0: # %entry8112; SSE4-NEXT:    movdqa %xmm0, %xmm48113; SSE4-NEXT:    pcmpgtq %xmm2, %xmm08114; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm28115; SSE4-NEXT:    movdqa %xmm1, %xmm08116; SSE4-NEXT:    pcmpgtq %xmm3, %xmm08117; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm38118; SSE4-NEXT:    movapd %xmm2, %xmm08119; SSE4-NEXT:    movapd %xmm3, %xmm18120; SSE4-NEXT:    retq8121;8122; AVX1-LABEL: test164:8123; AVX1:       # %bb.0: # %entry8124; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm28125; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm38126; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm28127; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm38128; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm28129; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08130; AVX1-NEXT:    retq8131;8132; AVX2-LABEL: test164:8133; AVX2:       # %bb.0: # %entry8134; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm28135; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08136; AVX2-NEXT:    retq8137;8138; AVX512F-LABEL: test164:8139; AVX512F:       # %bb.0: # %entry8140; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm18141; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm08142; AVX512F-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm08143; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm08144; AVX512F-NEXT:    retq8145;8146; AVX512BW-LABEL: test164:8147; AVX512BW:       # %bb.0: # %entry8148; AVX512BW-NEXT:    vpmaxsq %ymm1, %ymm0, %ymm08149; AVX512BW-NEXT:    retq8150entry:8151  %cmp = icmp sge <4 x i64> %a, %b8152  %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b8153  ret <4 x i64> %sel8154}8155 8156define <4 x i64> @test165(<4 x i64> %a, <4 x i64> %b) {8157; SSE2-LABEL: test165:8158; SSE2:       # %bb.0: # %entry8159; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [9223372039002259456,9223372039002259456]8160; SSE2-NEXT:    movdqa %xmm0, %xmm58161; SSE2-NEXT:    pxor %xmm4, %xmm58162; SSE2-NEXT:    movdqa %xmm2, %xmm68163; SSE2-NEXT:    pxor %xmm4, %xmm68164; SSE2-NEXT:    movdqa %xmm6, %xmm78165; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78166; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8167; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68168; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8169; SSE2-NEXT:    pand %xmm8, %xmm58170; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8171; SSE2-NEXT:    por %xmm5, %xmm68172; SSE2-NEXT:    pand %xmm6, %xmm08173; SSE2-NEXT:    pandn %xmm2, %xmm68174; SSE2-NEXT:    por %xmm6, %xmm08175; SSE2-NEXT:    movdqa %xmm1, %xmm28176; SSE2-NEXT:    pxor %xmm4, %xmm28177; SSE2-NEXT:    pxor %xmm3, %xmm48178; SSE2-NEXT:    movdqa %xmm4, %xmm58179; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58180; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8181; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48182; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8183; SSE2-NEXT:    pand %xmm6, %xmm28184; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8185; SSE2-NEXT:    por %xmm2, %xmm48186; SSE2-NEXT:    pand %xmm4, %xmm18187; SSE2-NEXT:    pandn %xmm3, %xmm48188; SSE2-NEXT:    por %xmm4, %xmm18189; SSE2-NEXT:    retq8190;8191; SSE4-LABEL: test165:8192; SSE4:       # %bb.0: # %entry8193; SSE4-NEXT:    movdqa %xmm0, %xmm48194; SSE4-NEXT:    movdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]8195; SSE4-NEXT:    movdqa %xmm0, %xmm68196; SSE4-NEXT:    pxor %xmm5, %xmm68197; SSE4-NEXT:    movdqa %xmm2, %xmm08198; SSE4-NEXT:    pxor %xmm5, %xmm08199; SSE4-NEXT:    pcmpgtq %xmm6, %xmm08200; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm28201; SSE4-NEXT:    movdqa %xmm1, %xmm08202; SSE4-NEXT:    pxor %xmm5, %xmm08203; SSE4-NEXT:    pxor %xmm3, %xmm58204; SSE4-NEXT:    pcmpgtq %xmm0, %xmm58205; SSE4-NEXT:    movdqa %xmm5, %xmm08206; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm38207; SSE4-NEXT:    movapd %xmm2, %xmm08208; SSE4-NEXT:    movapd %xmm3, %xmm18209; SSE4-NEXT:    retq8210;8211; AVX1-LABEL: test165:8212; AVX1:       # %bb.0: # %entry8213; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm28214; AVX1-NEXT:    vmovddup {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]8215; AVX1-NEXT:    # xmm3 = mem[0,0]8216; AVX1-NEXT:    vpxor %xmm3, %xmm2, %xmm28217; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm48218; AVX1-NEXT:    vpxor %xmm3, %xmm4, %xmm48219; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm28220; AVX1-NEXT:    vpxor %xmm3, %xmm0, %xmm48221; AVX1-NEXT:    vpxor %xmm3, %xmm1, %xmm38222; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm3, %xmm38223; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm28224; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08225; AVX1-NEXT:    retq8226;8227; AVX2-LABEL: test165:8228; AVX2:       # %bb.0: # %entry8229; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]8230; AVX2-NEXT:    vpxor %ymm2, %ymm0, %ymm38231; AVX2-NEXT:    vpxor %ymm2, %ymm1, %ymm28232; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm2, %ymm28233; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08234; AVX2-NEXT:    retq8235;8236; AVX512F-LABEL: test165:8237; AVX512F:       # %bb.0: # %entry8238; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm18239; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm08240; AVX512F-NEXT:    vpminuq %zmm1, %zmm0, %zmm08241; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm08242; AVX512F-NEXT:    retq8243;8244; AVX512BW-LABEL: test165:8245; AVX512BW:       # %bb.0: # %entry8246; AVX512BW-NEXT:    vpminuq %ymm1, %ymm0, %ymm08247; AVX512BW-NEXT:    retq8248entry:8249  %cmp = icmp ult <4 x i64> %a, %b8250  %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b8251  ret <4 x i64> %sel8252}8253 8254define <4 x i64> @test166(<4 x i64> %a, <4 x i64> %b) {8255; SSE2-LABEL: test166:8256; SSE2:       # %bb.0: # %entry8257; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [9223372039002259456,9223372039002259456]8258; SSE2-NEXT:    movdqa %xmm0, %xmm58259; SSE2-NEXT:    pxor %xmm4, %xmm58260; SSE2-NEXT:    movdqa %xmm2, %xmm68261; SSE2-NEXT:    pxor %xmm4, %xmm68262; SSE2-NEXT:    movdqa %xmm6, %xmm78263; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78264; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8265; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68266; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8267; SSE2-NEXT:    pand %xmm8, %xmm58268; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8269; SSE2-NEXT:    por %xmm5, %xmm68270; SSE2-NEXT:    pand %xmm6, %xmm08271; SSE2-NEXT:    pandn %xmm2, %xmm68272; SSE2-NEXT:    por %xmm6, %xmm08273; SSE2-NEXT:    movdqa %xmm1, %xmm28274; SSE2-NEXT:    pxor %xmm4, %xmm28275; SSE2-NEXT:    pxor %xmm3, %xmm48276; SSE2-NEXT:    movdqa %xmm4, %xmm58277; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58278; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8279; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48280; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8281; SSE2-NEXT:    pand %xmm6, %xmm28282; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8283; SSE2-NEXT:    por %xmm2, %xmm48284; SSE2-NEXT:    pand %xmm4, %xmm18285; SSE2-NEXT:    pandn %xmm3, %xmm48286; SSE2-NEXT:    por %xmm4, %xmm18287; SSE2-NEXT:    retq8288;8289; SSE4-LABEL: test166:8290; SSE4:       # %bb.0: # %entry8291; SSE4-NEXT:    movdqa %xmm0, %xmm48292; SSE4-NEXT:    movdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]8293; SSE4-NEXT:    movdqa %xmm0, %xmm68294; SSE4-NEXT:    pxor %xmm5, %xmm68295; SSE4-NEXT:    movdqa %xmm2, %xmm08296; SSE4-NEXT:    pxor %xmm5, %xmm08297; SSE4-NEXT:    pcmpgtq %xmm6, %xmm08298; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm28299; SSE4-NEXT:    movdqa %xmm1, %xmm08300; SSE4-NEXT:    pxor %xmm5, %xmm08301; SSE4-NEXT:    pxor %xmm3, %xmm58302; SSE4-NEXT:    pcmpgtq %xmm0, %xmm58303; SSE4-NEXT:    movdqa %xmm5, %xmm08304; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm38305; SSE4-NEXT:    movapd %xmm2, %xmm08306; SSE4-NEXT:    movapd %xmm3, %xmm18307; SSE4-NEXT:    retq8308;8309; AVX1-LABEL: test166:8310; AVX1:       # %bb.0: # %entry8311; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm28312; AVX1-NEXT:    vmovddup {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]8313; AVX1-NEXT:    # xmm3 = mem[0,0]8314; AVX1-NEXT:    vpxor %xmm3, %xmm2, %xmm28315; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm48316; AVX1-NEXT:    vpxor %xmm3, %xmm4, %xmm48317; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm28318; AVX1-NEXT:    vpxor %xmm3, %xmm0, %xmm48319; AVX1-NEXT:    vpxor %xmm3, %xmm1, %xmm38320; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm3, %xmm38321; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm28322; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08323; AVX1-NEXT:    retq8324;8325; AVX2-LABEL: test166:8326; AVX2:       # %bb.0: # %entry8327; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]8328; AVX2-NEXT:    vpxor %ymm2, %ymm0, %ymm38329; AVX2-NEXT:    vpxor %ymm2, %ymm1, %ymm28330; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm2, %ymm28331; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08332; AVX2-NEXT:    retq8333;8334; AVX512F-LABEL: test166:8335; AVX512F:       # %bb.0: # %entry8336; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm18337; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm08338; AVX512F-NEXT:    vpminuq %zmm1, %zmm0, %zmm08339; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm08340; AVX512F-NEXT:    retq8341;8342; AVX512BW-LABEL: test166:8343; AVX512BW:       # %bb.0: # %entry8344; AVX512BW-NEXT:    vpminuq %ymm1, %ymm0, %ymm08345; AVX512BW-NEXT:    retq8346entry:8347  %cmp = icmp ule <4 x i64> %a, %b8348  %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b8349  ret <4 x i64> %sel8350}8351 8352define <4 x i64> @test167(<4 x i64> %a, <4 x i64> %b) {8353; SSE2-LABEL: test167:8354; SSE2:       # %bb.0: # %entry8355; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [9223372039002259456,9223372039002259456]8356; SSE2-NEXT:    movdqa %xmm2, %xmm58357; SSE2-NEXT:    pxor %xmm4, %xmm58358; SSE2-NEXT:    movdqa %xmm0, %xmm68359; SSE2-NEXT:    pxor %xmm4, %xmm68360; SSE2-NEXT:    movdqa %xmm6, %xmm78361; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78362; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8363; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68364; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8365; SSE2-NEXT:    pand %xmm8, %xmm58366; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8367; SSE2-NEXT:    por %xmm5, %xmm68368; SSE2-NEXT:    pand %xmm6, %xmm08369; SSE2-NEXT:    pandn %xmm2, %xmm68370; SSE2-NEXT:    por %xmm6, %xmm08371; SSE2-NEXT:    movdqa %xmm3, %xmm28372; SSE2-NEXT:    pxor %xmm4, %xmm28373; SSE2-NEXT:    pxor %xmm1, %xmm48374; SSE2-NEXT:    movdqa %xmm4, %xmm58375; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58376; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8377; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48378; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8379; SSE2-NEXT:    pand %xmm6, %xmm28380; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8381; SSE2-NEXT:    por %xmm2, %xmm48382; SSE2-NEXT:    pand %xmm4, %xmm18383; SSE2-NEXT:    pandn %xmm3, %xmm48384; SSE2-NEXT:    por %xmm4, %xmm18385; SSE2-NEXT:    retq8386;8387; SSE4-LABEL: test167:8388; SSE4:       # %bb.0: # %entry8389; SSE4-NEXT:    movdqa %xmm0, %xmm48390; SSE4-NEXT:    movdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]8391; SSE4-NEXT:    movdqa %xmm2, %xmm68392; SSE4-NEXT:    pxor %xmm5, %xmm68393; SSE4-NEXT:    pxor %xmm5, %xmm08394; SSE4-NEXT:    pcmpgtq %xmm6, %xmm08395; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm28396; SSE4-NEXT:    movdqa %xmm3, %xmm08397; SSE4-NEXT:    pxor %xmm5, %xmm08398; SSE4-NEXT:    pxor %xmm1, %xmm58399; SSE4-NEXT:    pcmpgtq %xmm0, %xmm58400; SSE4-NEXT:    movdqa %xmm5, %xmm08401; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm38402; SSE4-NEXT:    movapd %xmm2, %xmm08403; SSE4-NEXT:    movapd %xmm3, %xmm18404; SSE4-NEXT:    retq8405;8406; AVX1-LABEL: test167:8407; AVX1:       # %bb.0: # %entry8408; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm28409; AVX1-NEXT:    vmovddup {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]8410; AVX1-NEXT:    # xmm3 = mem[0,0]8411; AVX1-NEXT:    vpxor %xmm3, %xmm2, %xmm28412; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm48413; AVX1-NEXT:    vpxor %xmm3, %xmm4, %xmm48414; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm28415; AVX1-NEXT:    vpxor %xmm3, %xmm1, %xmm48416; AVX1-NEXT:    vpxor %xmm3, %xmm0, %xmm38417; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm3, %xmm38418; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm28419; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08420; AVX1-NEXT:    retq8421;8422; AVX2-LABEL: test167:8423; AVX2:       # %bb.0: # %entry8424; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]8425; AVX2-NEXT:    vpxor %ymm2, %ymm1, %ymm38426; AVX2-NEXT:    vpxor %ymm2, %ymm0, %ymm28427; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm2, %ymm28428; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08429; AVX2-NEXT:    retq8430;8431; AVX512F-LABEL: test167:8432; AVX512F:       # %bb.0: # %entry8433; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm18434; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm08435; AVX512F-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm08436; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm08437; AVX512F-NEXT:    retq8438;8439; AVX512BW-LABEL: test167:8440; AVX512BW:       # %bb.0: # %entry8441; AVX512BW-NEXT:    vpmaxuq %ymm1, %ymm0, %ymm08442; AVX512BW-NEXT:    retq8443entry:8444  %cmp = icmp ugt <4 x i64> %a, %b8445  %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b8446  ret <4 x i64> %sel8447}8448 8449define <4 x i64> @test168(<4 x i64> %a, <4 x i64> %b) {8450; SSE2-LABEL: test168:8451; SSE2:       # %bb.0: # %entry8452; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [9223372039002259456,9223372039002259456]8453; SSE2-NEXT:    movdqa %xmm2, %xmm58454; SSE2-NEXT:    pxor %xmm4, %xmm58455; SSE2-NEXT:    movdqa %xmm0, %xmm68456; SSE2-NEXT:    pxor %xmm4, %xmm68457; SSE2-NEXT:    movdqa %xmm6, %xmm78458; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78459; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8460; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68461; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8462; SSE2-NEXT:    pand %xmm8, %xmm58463; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8464; SSE2-NEXT:    por %xmm5, %xmm68465; SSE2-NEXT:    pand %xmm6, %xmm08466; SSE2-NEXT:    pandn %xmm2, %xmm68467; SSE2-NEXT:    por %xmm6, %xmm08468; SSE2-NEXT:    movdqa %xmm3, %xmm28469; SSE2-NEXT:    pxor %xmm4, %xmm28470; SSE2-NEXT:    pxor %xmm1, %xmm48471; SSE2-NEXT:    movdqa %xmm4, %xmm58472; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58473; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8474; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48475; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8476; SSE2-NEXT:    pand %xmm6, %xmm28477; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8478; SSE2-NEXT:    por %xmm2, %xmm48479; SSE2-NEXT:    pand %xmm4, %xmm18480; SSE2-NEXT:    pandn %xmm3, %xmm48481; SSE2-NEXT:    por %xmm4, %xmm18482; SSE2-NEXT:    retq8483;8484; SSE4-LABEL: test168:8485; SSE4:       # %bb.0: # %entry8486; SSE4-NEXT:    movdqa %xmm0, %xmm48487; SSE4-NEXT:    movdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]8488; SSE4-NEXT:    movdqa %xmm2, %xmm68489; SSE4-NEXT:    pxor %xmm5, %xmm68490; SSE4-NEXT:    pxor %xmm5, %xmm08491; SSE4-NEXT:    pcmpgtq %xmm6, %xmm08492; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm28493; SSE4-NEXT:    movdqa %xmm3, %xmm08494; SSE4-NEXT:    pxor %xmm5, %xmm08495; SSE4-NEXT:    pxor %xmm1, %xmm58496; SSE4-NEXT:    pcmpgtq %xmm0, %xmm58497; SSE4-NEXT:    movdqa %xmm5, %xmm08498; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm38499; SSE4-NEXT:    movapd %xmm2, %xmm08500; SSE4-NEXT:    movapd %xmm3, %xmm18501; SSE4-NEXT:    retq8502;8503; AVX1-LABEL: test168:8504; AVX1:       # %bb.0: # %entry8505; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm28506; AVX1-NEXT:    vmovddup {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]8507; AVX1-NEXT:    # xmm3 = mem[0,0]8508; AVX1-NEXT:    vpxor %xmm3, %xmm2, %xmm28509; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm48510; AVX1-NEXT:    vpxor %xmm3, %xmm4, %xmm48511; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm28512; AVX1-NEXT:    vpxor %xmm3, %xmm1, %xmm48513; AVX1-NEXT:    vpxor %xmm3, %xmm0, %xmm38514; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm3, %xmm38515; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm28516; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08517; AVX1-NEXT:    retq8518;8519; AVX2-LABEL: test168:8520; AVX2:       # %bb.0: # %entry8521; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]8522; AVX2-NEXT:    vpxor %ymm2, %ymm1, %ymm38523; AVX2-NEXT:    vpxor %ymm2, %ymm0, %ymm28524; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm2, %ymm28525; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08526; AVX2-NEXT:    retq8527;8528; AVX512F-LABEL: test168:8529; AVX512F:       # %bb.0: # %entry8530; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm18531; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm08532; AVX512F-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm08533; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm08534; AVX512F-NEXT:    retq8535;8536; AVX512BW-LABEL: test168:8537; AVX512BW:       # %bb.0: # %entry8538; AVX512BW-NEXT:    vpmaxuq %ymm1, %ymm0, %ymm08539; AVX512BW-NEXT:    retq8540entry:8541  %cmp = icmp uge <4 x i64> %a, %b8542  %sel = select <4 x i1> %cmp, <4 x i64> %a, <4 x i64> %b8543  ret <4 x i64> %sel8544}8545 8546define <4 x i64> @test169(<4 x i64> %a, <4 x i64> %b) {8547; SSE2-LABEL: test169:8548; SSE2:       # %bb.0: # %entry8549; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]8550; SSE2-NEXT:    movdqa %xmm2, %xmm58551; SSE2-NEXT:    pxor %xmm4, %xmm58552; SSE2-NEXT:    movdqa %xmm0, %xmm68553; SSE2-NEXT:    pxor %xmm4, %xmm68554; SSE2-NEXT:    movdqa %xmm6, %xmm78555; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78556; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8557; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68558; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8559; SSE2-NEXT:    pand %xmm8, %xmm58560; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8561; SSE2-NEXT:    por %xmm5, %xmm68562; SSE2-NEXT:    pand %xmm6, %xmm08563; SSE2-NEXT:    pandn %xmm2, %xmm68564; SSE2-NEXT:    por %xmm6, %xmm08565; SSE2-NEXT:    movdqa %xmm3, %xmm28566; SSE2-NEXT:    pxor %xmm4, %xmm28567; SSE2-NEXT:    pxor %xmm1, %xmm48568; SSE2-NEXT:    movdqa %xmm4, %xmm58569; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58570; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8571; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48572; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8573; SSE2-NEXT:    pand %xmm6, %xmm28574; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8575; SSE2-NEXT:    por %xmm2, %xmm48576; SSE2-NEXT:    pand %xmm4, %xmm18577; SSE2-NEXT:    pandn %xmm3, %xmm48578; SSE2-NEXT:    por %xmm4, %xmm18579; SSE2-NEXT:    retq8580;8581; SSE4-LABEL: test169:8582; SSE4:       # %bb.0: # %entry8583; SSE4-NEXT:    movdqa %xmm0, %xmm48584; SSE4-NEXT:    pcmpgtq %xmm2, %xmm08585; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm28586; SSE4-NEXT:    movdqa %xmm1, %xmm08587; SSE4-NEXT:    pcmpgtq %xmm3, %xmm08588; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm38589; SSE4-NEXT:    movapd %xmm2, %xmm08590; SSE4-NEXT:    movapd %xmm3, %xmm18591; SSE4-NEXT:    retq8592;8593; AVX1-LABEL: test169:8594; AVX1:       # %bb.0: # %entry8595; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm28596; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm38597; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm28598; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm38599; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm28600; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08601; AVX1-NEXT:    retq8602;8603; AVX2-LABEL: test169:8604; AVX2:       # %bb.0: # %entry8605; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm28606; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08607; AVX2-NEXT:    retq8608;8609; AVX512F-LABEL: test169:8610; AVX512F:       # %bb.0: # %entry8611; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm18612; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm08613; AVX512F-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm08614; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm08615; AVX512F-NEXT:    retq8616;8617; AVX512BW-LABEL: test169:8618; AVX512BW:       # %bb.0: # %entry8619; AVX512BW-NEXT:    vpmaxsq %ymm1, %ymm0, %ymm08620; AVX512BW-NEXT:    retq8621entry:8622  %cmp = icmp slt <4 x i64> %a, %b8623  %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a8624  ret <4 x i64> %sel8625}8626 8627define <4 x i64> @test170(<4 x i64> %a, <4 x i64> %b) {8628; SSE2-LABEL: test170:8629; SSE2:       # %bb.0: # %entry8630; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]8631; SSE2-NEXT:    movdqa %xmm2, %xmm58632; SSE2-NEXT:    pxor %xmm4, %xmm58633; SSE2-NEXT:    movdqa %xmm0, %xmm68634; SSE2-NEXT:    pxor %xmm4, %xmm68635; SSE2-NEXT:    movdqa %xmm6, %xmm78636; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78637; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8638; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68639; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8640; SSE2-NEXT:    pand %xmm8, %xmm58641; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8642; SSE2-NEXT:    por %xmm5, %xmm68643; SSE2-NEXT:    pand %xmm6, %xmm08644; SSE2-NEXT:    pandn %xmm2, %xmm68645; SSE2-NEXT:    por %xmm6, %xmm08646; SSE2-NEXT:    movdqa %xmm3, %xmm28647; SSE2-NEXT:    pxor %xmm4, %xmm28648; SSE2-NEXT:    pxor %xmm1, %xmm48649; SSE2-NEXT:    movdqa %xmm4, %xmm58650; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58651; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8652; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48653; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8654; SSE2-NEXT:    pand %xmm6, %xmm28655; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8656; SSE2-NEXT:    por %xmm2, %xmm48657; SSE2-NEXT:    pand %xmm4, %xmm18658; SSE2-NEXT:    pandn %xmm3, %xmm48659; SSE2-NEXT:    por %xmm4, %xmm18660; SSE2-NEXT:    retq8661;8662; SSE4-LABEL: test170:8663; SSE4:       # %bb.0: # %entry8664; SSE4-NEXT:    movdqa %xmm0, %xmm48665; SSE4-NEXT:    pcmpgtq %xmm2, %xmm08666; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm28667; SSE4-NEXT:    movdqa %xmm1, %xmm08668; SSE4-NEXT:    pcmpgtq %xmm3, %xmm08669; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm38670; SSE4-NEXT:    movapd %xmm2, %xmm08671; SSE4-NEXT:    movapd %xmm3, %xmm18672; SSE4-NEXT:    retq8673;8674; AVX1-LABEL: test170:8675; AVX1:       # %bb.0: # %entry8676; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm28677; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm38678; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm28679; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm38680; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm28681; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08682; AVX1-NEXT:    retq8683;8684; AVX2-LABEL: test170:8685; AVX2:       # %bb.0: # %entry8686; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm28687; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08688; AVX2-NEXT:    retq8689;8690; AVX512F-LABEL: test170:8691; AVX512F:       # %bb.0: # %entry8692; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm18693; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm08694; AVX512F-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm08695; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm08696; AVX512F-NEXT:    retq8697;8698; AVX512BW-LABEL: test170:8699; AVX512BW:       # %bb.0: # %entry8700; AVX512BW-NEXT:    vpmaxsq %ymm1, %ymm0, %ymm08701; AVX512BW-NEXT:    retq8702entry:8703  %cmp = icmp sle <4 x i64> %a, %b8704  %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a8705  ret <4 x i64> %sel8706}8707 8708define <4 x i64> @test171(<4 x i64> %a, <4 x i64> %b) {8709; SSE2-LABEL: test171:8710; SSE2:       # %bb.0: # %entry8711; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]8712; SSE2-NEXT:    movdqa %xmm0, %xmm58713; SSE2-NEXT:    pxor %xmm4, %xmm58714; SSE2-NEXT:    movdqa %xmm2, %xmm68715; SSE2-NEXT:    pxor %xmm4, %xmm68716; SSE2-NEXT:    movdqa %xmm6, %xmm78717; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78718; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8719; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68720; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8721; SSE2-NEXT:    pand %xmm8, %xmm58722; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8723; SSE2-NEXT:    por %xmm5, %xmm68724; SSE2-NEXT:    pand %xmm6, %xmm08725; SSE2-NEXT:    pandn %xmm2, %xmm68726; SSE2-NEXT:    por %xmm6, %xmm08727; SSE2-NEXT:    movdqa %xmm1, %xmm28728; SSE2-NEXT:    pxor %xmm4, %xmm28729; SSE2-NEXT:    pxor %xmm3, %xmm48730; SSE2-NEXT:    movdqa %xmm4, %xmm58731; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58732; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8733; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48734; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8735; SSE2-NEXT:    pand %xmm6, %xmm28736; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8737; SSE2-NEXT:    por %xmm2, %xmm48738; SSE2-NEXT:    pand %xmm4, %xmm18739; SSE2-NEXT:    pandn %xmm3, %xmm48740; SSE2-NEXT:    por %xmm4, %xmm18741; SSE2-NEXT:    retq8742;8743; SSE4-LABEL: test171:8744; SSE4:       # %bb.0: # %entry8745; SSE4-NEXT:    movdqa %xmm0, %xmm48746; SSE4-NEXT:    movdqa %xmm2, %xmm08747; SSE4-NEXT:    pcmpgtq %xmm4, %xmm08748; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm28749; SSE4-NEXT:    movdqa %xmm3, %xmm08750; SSE4-NEXT:    pcmpgtq %xmm1, %xmm08751; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm38752; SSE4-NEXT:    movapd %xmm2, %xmm08753; SSE4-NEXT:    movapd %xmm3, %xmm18754; SSE4-NEXT:    retq8755;8756; AVX1-LABEL: test171:8757; AVX1:       # %bb.0: # %entry8758; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm28759; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm38760; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm28761; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm38762; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm28763; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08764; AVX1-NEXT:    retq8765;8766; AVX2-LABEL: test171:8767; AVX2:       # %bb.0: # %entry8768; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm1, %ymm28769; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08770; AVX2-NEXT:    retq8771;8772; AVX512F-LABEL: test171:8773; AVX512F:       # %bb.0: # %entry8774; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm18775; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm08776; AVX512F-NEXT:    vpminsq %zmm1, %zmm0, %zmm08777; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm08778; AVX512F-NEXT:    retq8779;8780; AVX512BW-LABEL: test171:8781; AVX512BW:       # %bb.0: # %entry8782; AVX512BW-NEXT:    vpminsq %ymm1, %ymm0, %ymm08783; AVX512BW-NEXT:    retq8784entry:8785  %cmp = icmp sgt <4 x i64> %a, %b8786  %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a8787  ret <4 x i64> %sel8788}8789 8790define <4 x i64> @test172(<4 x i64> %a, <4 x i64> %b) {8791; SSE2-LABEL: test172:8792; SSE2:       # %bb.0: # %entry8793; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [2147483648,2147483648]8794; SSE2-NEXT:    movdqa %xmm0, %xmm58795; SSE2-NEXT:    pxor %xmm4, %xmm58796; SSE2-NEXT:    movdqa %xmm2, %xmm68797; SSE2-NEXT:    pxor %xmm4, %xmm68798; SSE2-NEXT:    movdqa %xmm6, %xmm78799; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78800; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8801; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68802; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8803; SSE2-NEXT:    pand %xmm8, %xmm58804; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8805; SSE2-NEXT:    por %xmm5, %xmm68806; SSE2-NEXT:    pand %xmm6, %xmm08807; SSE2-NEXT:    pandn %xmm2, %xmm68808; SSE2-NEXT:    por %xmm6, %xmm08809; SSE2-NEXT:    movdqa %xmm1, %xmm28810; SSE2-NEXT:    pxor %xmm4, %xmm28811; SSE2-NEXT:    pxor %xmm3, %xmm48812; SSE2-NEXT:    movdqa %xmm4, %xmm58813; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58814; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8815; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48816; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8817; SSE2-NEXT:    pand %xmm6, %xmm28818; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8819; SSE2-NEXT:    por %xmm2, %xmm48820; SSE2-NEXT:    pand %xmm4, %xmm18821; SSE2-NEXT:    pandn %xmm3, %xmm48822; SSE2-NEXT:    por %xmm4, %xmm18823; SSE2-NEXT:    retq8824;8825; SSE4-LABEL: test172:8826; SSE4:       # %bb.0: # %entry8827; SSE4-NEXT:    movdqa %xmm0, %xmm48828; SSE4-NEXT:    movdqa %xmm2, %xmm08829; SSE4-NEXT:    pcmpgtq %xmm4, %xmm08830; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm28831; SSE4-NEXT:    movdqa %xmm3, %xmm08832; SSE4-NEXT:    pcmpgtq %xmm1, %xmm08833; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm38834; SSE4-NEXT:    movapd %xmm2, %xmm08835; SSE4-NEXT:    movapd %xmm3, %xmm18836; SSE4-NEXT:    retq8837;8838; AVX1-LABEL: test172:8839; AVX1:       # %bb.0: # %entry8840; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm28841; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm38842; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm3, %xmm28843; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm38844; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm28845; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08846; AVX1-NEXT:    retq8847;8848; AVX2-LABEL: test172:8849; AVX2:       # %bb.0: # %entry8850; AVX2-NEXT:    vpcmpgtq %ymm0, %ymm1, %ymm28851; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08852; AVX2-NEXT:    retq8853;8854; AVX512F-LABEL: test172:8855; AVX512F:       # %bb.0: # %entry8856; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm18857; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm08858; AVX512F-NEXT:    vpminsq %zmm1, %zmm0, %zmm08859; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm08860; AVX512F-NEXT:    retq8861;8862; AVX512BW-LABEL: test172:8863; AVX512BW:       # %bb.0: # %entry8864; AVX512BW-NEXT:    vpminsq %ymm1, %ymm0, %ymm08865; AVX512BW-NEXT:    retq8866entry:8867  %cmp = icmp sge <4 x i64> %a, %b8868  %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a8869  ret <4 x i64> %sel8870}8871 8872define <4 x i64> @test173(<4 x i64> %a, <4 x i64> %b) {8873; SSE2-LABEL: test173:8874; SSE2:       # %bb.0: # %entry8875; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [9223372039002259456,9223372039002259456]8876; SSE2-NEXT:    movdqa %xmm2, %xmm58877; SSE2-NEXT:    pxor %xmm4, %xmm58878; SSE2-NEXT:    movdqa %xmm0, %xmm68879; SSE2-NEXT:    pxor %xmm4, %xmm68880; SSE2-NEXT:    movdqa %xmm6, %xmm78881; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78882; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8883; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68884; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8885; SSE2-NEXT:    pand %xmm8, %xmm58886; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8887; SSE2-NEXT:    por %xmm5, %xmm68888; SSE2-NEXT:    pand %xmm6, %xmm08889; SSE2-NEXT:    pandn %xmm2, %xmm68890; SSE2-NEXT:    por %xmm6, %xmm08891; SSE2-NEXT:    movdqa %xmm3, %xmm28892; SSE2-NEXT:    pxor %xmm4, %xmm28893; SSE2-NEXT:    pxor %xmm1, %xmm48894; SSE2-NEXT:    movdqa %xmm4, %xmm58895; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58896; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8897; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48898; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8899; SSE2-NEXT:    pand %xmm6, %xmm28900; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8901; SSE2-NEXT:    por %xmm2, %xmm48902; SSE2-NEXT:    pand %xmm4, %xmm18903; SSE2-NEXT:    pandn %xmm3, %xmm48904; SSE2-NEXT:    por %xmm4, %xmm18905; SSE2-NEXT:    retq8906;8907; SSE4-LABEL: test173:8908; SSE4:       # %bb.0: # %entry8909; SSE4-NEXT:    movdqa %xmm0, %xmm48910; SSE4-NEXT:    movdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]8911; SSE4-NEXT:    movdqa %xmm2, %xmm68912; SSE4-NEXT:    pxor %xmm5, %xmm68913; SSE4-NEXT:    pxor %xmm5, %xmm08914; SSE4-NEXT:    pcmpgtq %xmm6, %xmm08915; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm28916; SSE4-NEXT:    movdqa %xmm3, %xmm08917; SSE4-NEXT:    pxor %xmm5, %xmm08918; SSE4-NEXT:    pxor %xmm1, %xmm58919; SSE4-NEXT:    pcmpgtq %xmm0, %xmm58920; SSE4-NEXT:    movdqa %xmm5, %xmm08921; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm38922; SSE4-NEXT:    movapd %xmm2, %xmm08923; SSE4-NEXT:    movapd %xmm3, %xmm18924; SSE4-NEXT:    retq8925;8926; AVX1-LABEL: test173:8927; AVX1:       # %bb.0: # %entry8928; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm28929; AVX1-NEXT:    vmovddup {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]8930; AVX1-NEXT:    # xmm3 = mem[0,0]8931; AVX1-NEXT:    vpxor %xmm3, %xmm2, %xmm28932; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm48933; AVX1-NEXT:    vpxor %xmm3, %xmm4, %xmm48934; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm28935; AVX1-NEXT:    vpxor %xmm3, %xmm1, %xmm48936; AVX1-NEXT:    vpxor %xmm3, %xmm0, %xmm38937; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm3, %xmm38938; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm28939; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08940; AVX1-NEXT:    retq8941;8942; AVX2-LABEL: test173:8943; AVX2:       # %bb.0: # %entry8944; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]8945; AVX2-NEXT:    vpxor %ymm2, %ymm1, %ymm38946; AVX2-NEXT:    vpxor %ymm2, %ymm0, %ymm28947; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm2, %ymm28948; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm08949; AVX2-NEXT:    retq8950;8951; AVX512F-LABEL: test173:8952; AVX512F:       # %bb.0: # %entry8953; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm18954; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm08955; AVX512F-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm08956; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm08957; AVX512F-NEXT:    retq8958;8959; AVX512BW-LABEL: test173:8960; AVX512BW:       # %bb.0: # %entry8961; AVX512BW-NEXT:    vpmaxuq %ymm1, %ymm0, %ymm08962; AVX512BW-NEXT:    retq8963entry:8964  %cmp = icmp ult <4 x i64> %a, %b8965  %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a8966  ret <4 x i64> %sel8967}8968 8969define <4 x i64> @test174(<4 x i64> %a, <4 x i64> %b) {8970; SSE2-LABEL: test174:8971; SSE2:       # %bb.0: # %entry8972; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [9223372039002259456,9223372039002259456]8973; SSE2-NEXT:    movdqa %xmm2, %xmm58974; SSE2-NEXT:    pxor %xmm4, %xmm58975; SSE2-NEXT:    movdqa %xmm0, %xmm68976; SSE2-NEXT:    pxor %xmm4, %xmm68977; SSE2-NEXT:    movdqa %xmm6, %xmm78978; SSE2-NEXT:    pcmpgtd %xmm5, %xmm78979; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]8980; SSE2-NEXT:    pcmpeqd %xmm5, %xmm68981; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]8982; SSE2-NEXT:    pand %xmm8, %xmm58983; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]8984; SSE2-NEXT:    por %xmm5, %xmm68985; SSE2-NEXT:    pand %xmm6, %xmm08986; SSE2-NEXT:    pandn %xmm2, %xmm68987; SSE2-NEXT:    por %xmm6, %xmm08988; SSE2-NEXT:    movdqa %xmm3, %xmm28989; SSE2-NEXT:    pxor %xmm4, %xmm28990; SSE2-NEXT:    pxor %xmm1, %xmm48991; SSE2-NEXT:    movdqa %xmm4, %xmm58992; SSE2-NEXT:    pcmpgtd %xmm2, %xmm58993; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]8994; SSE2-NEXT:    pcmpeqd %xmm2, %xmm48995; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]8996; SSE2-NEXT:    pand %xmm6, %xmm28997; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]8998; SSE2-NEXT:    por %xmm2, %xmm48999; SSE2-NEXT:    pand %xmm4, %xmm19000; SSE2-NEXT:    pandn %xmm3, %xmm49001; SSE2-NEXT:    por %xmm4, %xmm19002; SSE2-NEXT:    retq9003;9004; SSE4-LABEL: test174:9005; SSE4:       # %bb.0: # %entry9006; SSE4-NEXT:    movdqa %xmm0, %xmm49007; SSE4-NEXT:    movdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]9008; SSE4-NEXT:    movdqa %xmm2, %xmm69009; SSE4-NEXT:    pxor %xmm5, %xmm69010; SSE4-NEXT:    pxor %xmm5, %xmm09011; SSE4-NEXT:    pcmpgtq %xmm6, %xmm09012; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm29013; SSE4-NEXT:    movdqa %xmm3, %xmm09014; SSE4-NEXT:    pxor %xmm5, %xmm09015; SSE4-NEXT:    pxor %xmm1, %xmm59016; SSE4-NEXT:    pcmpgtq %xmm0, %xmm59017; SSE4-NEXT:    movdqa %xmm5, %xmm09018; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm39019; SSE4-NEXT:    movapd %xmm2, %xmm09020; SSE4-NEXT:    movapd %xmm3, %xmm19021; SSE4-NEXT:    retq9022;9023; AVX1-LABEL: test174:9024; AVX1:       # %bb.0: # %entry9025; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm29026; AVX1-NEXT:    vmovddup {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]9027; AVX1-NEXT:    # xmm3 = mem[0,0]9028; AVX1-NEXT:    vpxor %xmm3, %xmm2, %xmm29029; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm49030; AVX1-NEXT:    vpxor %xmm3, %xmm4, %xmm49031; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm29032; AVX1-NEXT:    vpxor %xmm3, %xmm1, %xmm49033; AVX1-NEXT:    vpxor %xmm3, %xmm0, %xmm39034; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm3, %xmm39035; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm29036; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm09037; AVX1-NEXT:    retq9038;9039; AVX2-LABEL: test174:9040; AVX2:       # %bb.0: # %entry9041; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]9042; AVX2-NEXT:    vpxor %ymm2, %ymm1, %ymm39043; AVX2-NEXT:    vpxor %ymm2, %ymm0, %ymm29044; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm2, %ymm29045; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm09046; AVX2-NEXT:    retq9047;9048; AVX512F-LABEL: test174:9049; AVX512F:       # %bb.0: # %entry9050; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm19051; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm09052; AVX512F-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm09053; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm09054; AVX512F-NEXT:    retq9055;9056; AVX512BW-LABEL: test174:9057; AVX512BW:       # %bb.0: # %entry9058; AVX512BW-NEXT:    vpmaxuq %ymm1, %ymm0, %ymm09059; AVX512BW-NEXT:    retq9060entry:9061  %cmp = icmp ule <4 x i64> %a, %b9062  %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a9063  ret <4 x i64> %sel9064}9065 9066define <4 x i64> @test175(<4 x i64> %a, <4 x i64> %b) {9067; SSE2-LABEL: test175:9068; SSE2:       # %bb.0: # %entry9069; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [9223372039002259456,9223372039002259456]9070; SSE2-NEXT:    movdqa %xmm0, %xmm59071; SSE2-NEXT:    pxor %xmm4, %xmm59072; SSE2-NEXT:    movdqa %xmm2, %xmm69073; SSE2-NEXT:    pxor %xmm4, %xmm69074; SSE2-NEXT:    movdqa %xmm6, %xmm79075; SSE2-NEXT:    pcmpgtd %xmm5, %xmm79076; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]9077; SSE2-NEXT:    pcmpeqd %xmm5, %xmm69078; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]9079; SSE2-NEXT:    pand %xmm8, %xmm59080; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]9081; SSE2-NEXT:    por %xmm5, %xmm69082; SSE2-NEXT:    pand %xmm6, %xmm09083; SSE2-NEXT:    pandn %xmm2, %xmm69084; SSE2-NEXT:    por %xmm6, %xmm09085; SSE2-NEXT:    movdqa %xmm1, %xmm29086; SSE2-NEXT:    pxor %xmm4, %xmm29087; SSE2-NEXT:    pxor %xmm3, %xmm49088; SSE2-NEXT:    movdqa %xmm4, %xmm59089; SSE2-NEXT:    pcmpgtd %xmm2, %xmm59090; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]9091; SSE2-NEXT:    pcmpeqd %xmm2, %xmm49092; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]9093; SSE2-NEXT:    pand %xmm6, %xmm29094; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]9095; SSE2-NEXT:    por %xmm2, %xmm49096; SSE2-NEXT:    pand %xmm4, %xmm19097; SSE2-NEXT:    pandn %xmm3, %xmm49098; SSE2-NEXT:    por %xmm4, %xmm19099; SSE2-NEXT:    retq9100;9101; SSE4-LABEL: test175:9102; SSE4:       # %bb.0: # %entry9103; SSE4-NEXT:    movdqa %xmm0, %xmm49104; SSE4-NEXT:    movdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]9105; SSE4-NEXT:    movdqa %xmm0, %xmm69106; SSE4-NEXT:    pxor %xmm5, %xmm69107; SSE4-NEXT:    movdqa %xmm2, %xmm09108; SSE4-NEXT:    pxor %xmm5, %xmm09109; SSE4-NEXT:    pcmpgtq %xmm6, %xmm09110; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm29111; SSE4-NEXT:    movdqa %xmm1, %xmm09112; SSE4-NEXT:    pxor %xmm5, %xmm09113; SSE4-NEXT:    pxor %xmm3, %xmm59114; SSE4-NEXT:    pcmpgtq %xmm0, %xmm59115; SSE4-NEXT:    movdqa %xmm5, %xmm09116; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm39117; SSE4-NEXT:    movapd %xmm2, %xmm09118; SSE4-NEXT:    movapd %xmm3, %xmm19119; SSE4-NEXT:    retq9120;9121; AVX1-LABEL: test175:9122; AVX1:       # %bb.0: # %entry9123; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm29124; AVX1-NEXT:    vmovddup {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]9125; AVX1-NEXT:    # xmm3 = mem[0,0]9126; AVX1-NEXT:    vpxor %xmm3, %xmm2, %xmm29127; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm49128; AVX1-NEXT:    vpxor %xmm3, %xmm4, %xmm49129; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm29130; AVX1-NEXT:    vpxor %xmm3, %xmm0, %xmm49131; AVX1-NEXT:    vpxor %xmm3, %xmm1, %xmm39132; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm3, %xmm39133; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm29134; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm09135; AVX1-NEXT:    retq9136;9137; AVX2-LABEL: test175:9138; AVX2:       # %bb.0: # %entry9139; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]9140; AVX2-NEXT:    vpxor %ymm2, %ymm0, %ymm39141; AVX2-NEXT:    vpxor %ymm2, %ymm1, %ymm29142; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm2, %ymm29143; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm09144; AVX2-NEXT:    retq9145;9146; AVX512F-LABEL: test175:9147; AVX512F:       # %bb.0: # %entry9148; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm19149; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm09150; AVX512F-NEXT:    vpminuq %zmm1, %zmm0, %zmm09151; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm09152; AVX512F-NEXT:    retq9153;9154; AVX512BW-LABEL: test175:9155; AVX512BW:       # %bb.0: # %entry9156; AVX512BW-NEXT:    vpminuq %ymm1, %ymm0, %ymm09157; AVX512BW-NEXT:    retq9158entry:9159  %cmp = icmp ugt <4 x i64> %a, %b9160  %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a9161  ret <4 x i64> %sel9162}9163 9164define <4 x i64> @test176(<4 x i64> %a, <4 x i64> %b) {9165; SSE2-LABEL: test176:9166; SSE2:       # %bb.0: # %entry9167; SSE2-NEXT:    movdqa {{.*#+}} xmm4 = [9223372039002259456,9223372039002259456]9168; SSE2-NEXT:    movdqa %xmm0, %xmm59169; SSE2-NEXT:    pxor %xmm4, %xmm59170; SSE2-NEXT:    movdqa %xmm2, %xmm69171; SSE2-NEXT:    pxor %xmm4, %xmm69172; SSE2-NEXT:    movdqa %xmm6, %xmm79173; SSE2-NEXT:    pcmpgtd %xmm5, %xmm79174; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]9175; SSE2-NEXT:    pcmpeqd %xmm5, %xmm69176; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,3,3]9177; SSE2-NEXT:    pand %xmm8, %xmm59178; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm7[1,1,3,3]9179; SSE2-NEXT:    por %xmm5, %xmm69180; SSE2-NEXT:    pand %xmm6, %xmm09181; SSE2-NEXT:    pandn %xmm2, %xmm69182; SSE2-NEXT:    por %xmm6, %xmm09183; SSE2-NEXT:    movdqa %xmm1, %xmm29184; SSE2-NEXT:    pxor %xmm4, %xmm29185; SSE2-NEXT:    pxor %xmm3, %xmm49186; SSE2-NEXT:    movdqa %xmm4, %xmm59187; SSE2-NEXT:    pcmpgtd %xmm2, %xmm59188; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[0,0,2,2]9189; SSE2-NEXT:    pcmpeqd %xmm2, %xmm49190; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm4[1,1,3,3]9191; SSE2-NEXT:    pand %xmm6, %xmm29192; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]9193; SSE2-NEXT:    por %xmm2, %xmm49194; SSE2-NEXT:    pand %xmm4, %xmm19195; SSE2-NEXT:    pandn %xmm3, %xmm49196; SSE2-NEXT:    por %xmm4, %xmm19197; SSE2-NEXT:    retq9198;9199; SSE4-LABEL: test176:9200; SSE4:       # %bb.0: # %entry9201; SSE4-NEXT:    movdqa %xmm0, %xmm49202; SSE4-NEXT:    movdqa {{.*#+}} xmm5 = [9223372036854775808,9223372036854775808]9203; SSE4-NEXT:    movdqa %xmm0, %xmm69204; SSE4-NEXT:    pxor %xmm5, %xmm69205; SSE4-NEXT:    movdqa %xmm2, %xmm09206; SSE4-NEXT:    pxor %xmm5, %xmm09207; SSE4-NEXT:    pcmpgtq %xmm6, %xmm09208; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm29209; SSE4-NEXT:    movdqa %xmm1, %xmm09210; SSE4-NEXT:    pxor %xmm5, %xmm09211; SSE4-NEXT:    pxor %xmm3, %xmm59212; SSE4-NEXT:    pcmpgtq %xmm0, %xmm59213; SSE4-NEXT:    movdqa %xmm5, %xmm09214; SSE4-NEXT:    blendvpd %xmm0, %xmm1, %xmm39215; SSE4-NEXT:    movapd %xmm2, %xmm09216; SSE4-NEXT:    movapd %xmm3, %xmm19217; SSE4-NEXT:    retq9218;9219; AVX1-LABEL: test176:9220; AVX1:       # %bb.0: # %entry9221; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm29222; AVX1-NEXT:    vmovddup {{.*#+}} xmm3 = [9223372036854775808,9223372036854775808]9223; AVX1-NEXT:    # xmm3 = mem[0,0]9224; AVX1-NEXT:    vpxor %xmm3, %xmm2, %xmm29225; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm49226; AVX1-NEXT:    vpxor %xmm3, %xmm4, %xmm49227; AVX1-NEXT:    vpcmpgtq %xmm2, %xmm4, %xmm29228; AVX1-NEXT:    vpxor %xmm3, %xmm0, %xmm49229; AVX1-NEXT:    vpxor %xmm3, %xmm1, %xmm39230; AVX1-NEXT:    vpcmpgtq %xmm4, %xmm3, %xmm39231; AVX1-NEXT:    vinsertf128 $1, %xmm2, %ymm3, %ymm29232; AVX1-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm09233; AVX1-NEXT:    retq9234;9235; AVX2-LABEL: test176:9236; AVX2:       # %bb.0: # %entry9237; AVX2-NEXT:    vpbroadcastq {{.*#+}} ymm2 = [9223372036854775808,9223372036854775808,9223372036854775808,9223372036854775808]9238; AVX2-NEXT:    vpxor %ymm2, %ymm0, %ymm39239; AVX2-NEXT:    vpxor %ymm2, %ymm1, %ymm29240; AVX2-NEXT:    vpcmpgtq %ymm3, %ymm2, %ymm29241; AVX2-NEXT:    vblendvpd %ymm2, %ymm0, %ymm1, %ymm09242; AVX2-NEXT:    retq9243;9244; AVX512F-LABEL: test176:9245; AVX512F:       # %bb.0: # %entry9246; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm19247; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm09248; AVX512F-NEXT:    vpminuq %zmm1, %zmm0, %zmm09249; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm09250; AVX512F-NEXT:    retq9251;9252; AVX512BW-LABEL: test176:9253; AVX512BW:       # %bb.0: # %entry9254; AVX512BW-NEXT:    vpminuq %ymm1, %ymm0, %ymm09255; AVX512BW-NEXT:    retq9256entry:9257  %cmp = icmp uge <4 x i64> %a, %b9258  %sel = select <4 x i1> %cmp, <4 x i64> %b, <4 x i64> %a9259  ret <4 x i64> %sel9260}9261 9262define <2 x i64> @test177(<2 x i64> %a, <2 x i64> %b) {9263; SSE2-LABEL: test177:9264; SSE2:       # %bb.0: # %entry9265; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]9266; SSE2-NEXT:    movdqa %xmm0, %xmm39267; SSE2-NEXT:    pxor %xmm2, %xmm39268; SSE2-NEXT:    pxor %xmm1, %xmm29269; SSE2-NEXT:    movdqa %xmm2, %xmm49270; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49271; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9272; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29273; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9274; SSE2-NEXT:    pand %xmm5, %xmm29275; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9276; SSE2-NEXT:    por %xmm2, %xmm39277; SSE2-NEXT:    pand %xmm3, %xmm09278; SSE2-NEXT:    pandn %xmm1, %xmm39279; SSE2-NEXT:    por %xmm3, %xmm09280; SSE2-NEXT:    retq9281;9282; SSE4-LABEL: test177:9283; SSE4:       # %bb.0: # %entry9284; SSE4-NEXT:    movdqa %xmm0, %xmm29285; SSE4-NEXT:    movdqa %xmm1, %xmm09286; SSE4-NEXT:    pcmpgtq %xmm2, %xmm09287; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19288; SSE4-NEXT:    movapd %xmm1, %xmm09289; SSE4-NEXT:    retq9290;9291; AVX1-LABEL: test177:9292; AVX1:       # %bb.0: # %entry9293; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm29294; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09295; AVX1-NEXT:    retq9296;9297; AVX2-LABEL: test177:9298; AVX2:       # %bb.0: # %entry9299; AVX2-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm29300; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09301; AVX2-NEXT:    retq9302;9303; AVX512F-LABEL: test177:9304; AVX512F:       # %bb.0: # %entry9305; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19306; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09307; AVX512F-NEXT:    vpminsq %zmm1, %zmm0, %zmm09308; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09309; AVX512F-NEXT:    retq9310;9311; AVX512BW-LABEL: test177:9312; AVX512BW:       # %bb.0: # %entry9313; AVX512BW-NEXT:    vpminsq %xmm1, %xmm0, %xmm09314; AVX512BW-NEXT:    retq9315entry:9316  %cmp = icmp slt <2 x i64> %a, %b9317  %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b9318  ret <2 x i64> %sel9319}9320 9321define <2 x i64> @test178(<2 x i64> %a, <2 x i64> %b) {9322; SSE2-LABEL: test178:9323; SSE2:       # %bb.0: # %entry9324; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]9325; SSE2-NEXT:    movdqa %xmm0, %xmm39326; SSE2-NEXT:    pxor %xmm2, %xmm39327; SSE2-NEXT:    pxor %xmm1, %xmm29328; SSE2-NEXT:    movdqa %xmm2, %xmm49329; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49330; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9331; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29332; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9333; SSE2-NEXT:    pand %xmm5, %xmm29334; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9335; SSE2-NEXT:    por %xmm2, %xmm39336; SSE2-NEXT:    pand %xmm3, %xmm09337; SSE2-NEXT:    pandn %xmm1, %xmm39338; SSE2-NEXT:    por %xmm3, %xmm09339; SSE2-NEXT:    retq9340;9341; SSE4-LABEL: test178:9342; SSE4:       # %bb.0: # %entry9343; SSE4-NEXT:    movdqa %xmm0, %xmm29344; SSE4-NEXT:    movdqa %xmm1, %xmm09345; SSE4-NEXT:    pcmpgtq %xmm2, %xmm09346; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19347; SSE4-NEXT:    movapd %xmm1, %xmm09348; SSE4-NEXT:    retq9349;9350; AVX1-LABEL: test178:9351; AVX1:       # %bb.0: # %entry9352; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm29353; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09354; AVX1-NEXT:    retq9355;9356; AVX2-LABEL: test178:9357; AVX2:       # %bb.0: # %entry9358; AVX2-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm29359; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09360; AVX2-NEXT:    retq9361;9362; AVX512F-LABEL: test178:9363; AVX512F:       # %bb.0: # %entry9364; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19365; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09366; AVX512F-NEXT:    vpminsq %zmm1, %zmm0, %zmm09367; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09368; AVX512F-NEXT:    retq9369;9370; AVX512BW-LABEL: test178:9371; AVX512BW:       # %bb.0: # %entry9372; AVX512BW-NEXT:    vpminsq %xmm1, %xmm0, %xmm09373; AVX512BW-NEXT:    retq9374entry:9375  %cmp = icmp sle <2 x i64> %a, %b9376  %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b9377  ret <2 x i64> %sel9378}9379 9380define <2 x i64> @test179(<2 x i64> %a, <2 x i64> %b) {9381; SSE2-LABEL: test179:9382; SSE2:       # %bb.0: # %entry9383; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]9384; SSE2-NEXT:    movdqa %xmm1, %xmm39385; SSE2-NEXT:    pxor %xmm2, %xmm39386; SSE2-NEXT:    pxor %xmm0, %xmm29387; SSE2-NEXT:    movdqa %xmm2, %xmm49388; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49389; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9390; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29391; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9392; SSE2-NEXT:    pand %xmm5, %xmm29393; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9394; SSE2-NEXT:    por %xmm2, %xmm39395; SSE2-NEXT:    pand %xmm3, %xmm09396; SSE2-NEXT:    pandn %xmm1, %xmm39397; SSE2-NEXT:    por %xmm3, %xmm09398; SSE2-NEXT:    retq9399;9400; SSE4-LABEL: test179:9401; SSE4:       # %bb.0: # %entry9402; SSE4-NEXT:    movdqa %xmm0, %xmm29403; SSE4-NEXT:    pcmpgtq %xmm1, %xmm09404; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19405; SSE4-NEXT:    movapd %xmm1, %xmm09406; SSE4-NEXT:    retq9407;9408; AVX1-LABEL: test179:9409; AVX1:       # %bb.0: # %entry9410; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm29411; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09412; AVX1-NEXT:    retq9413;9414; AVX2-LABEL: test179:9415; AVX2:       # %bb.0: # %entry9416; AVX2-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm29417; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09418; AVX2-NEXT:    retq9419;9420; AVX512F-LABEL: test179:9421; AVX512F:       # %bb.0: # %entry9422; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19423; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09424; AVX512F-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm09425; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09426; AVX512F-NEXT:    retq9427;9428; AVX512BW-LABEL: test179:9429; AVX512BW:       # %bb.0: # %entry9430; AVX512BW-NEXT:    vpmaxsq %xmm1, %xmm0, %xmm09431; AVX512BW-NEXT:    retq9432entry:9433  %cmp = icmp sgt <2 x i64> %a, %b9434  %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b9435  ret <2 x i64> %sel9436}9437 9438define <2 x i64> @test180(<2 x i64> %a, <2 x i64> %b) {9439; SSE2-LABEL: test180:9440; SSE2:       # %bb.0: # %entry9441; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]9442; SSE2-NEXT:    movdqa %xmm1, %xmm39443; SSE2-NEXT:    pxor %xmm2, %xmm39444; SSE2-NEXT:    pxor %xmm0, %xmm29445; SSE2-NEXT:    movdqa %xmm2, %xmm49446; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49447; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9448; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29449; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9450; SSE2-NEXT:    pand %xmm5, %xmm29451; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9452; SSE2-NEXT:    por %xmm2, %xmm39453; SSE2-NEXT:    pand %xmm3, %xmm09454; SSE2-NEXT:    pandn %xmm1, %xmm39455; SSE2-NEXT:    por %xmm3, %xmm09456; SSE2-NEXT:    retq9457;9458; SSE4-LABEL: test180:9459; SSE4:       # %bb.0: # %entry9460; SSE4-NEXT:    movdqa %xmm0, %xmm29461; SSE4-NEXT:    pcmpgtq %xmm1, %xmm09462; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19463; SSE4-NEXT:    movapd %xmm1, %xmm09464; SSE4-NEXT:    retq9465;9466; AVX1-LABEL: test180:9467; AVX1:       # %bb.0: # %entry9468; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm29469; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09470; AVX1-NEXT:    retq9471;9472; AVX2-LABEL: test180:9473; AVX2:       # %bb.0: # %entry9474; AVX2-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm29475; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09476; AVX2-NEXT:    retq9477;9478; AVX512F-LABEL: test180:9479; AVX512F:       # %bb.0: # %entry9480; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19481; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09482; AVX512F-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm09483; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09484; AVX512F-NEXT:    retq9485;9486; AVX512BW-LABEL: test180:9487; AVX512BW:       # %bb.0: # %entry9488; AVX512BW-NEXT:    vpmaxsq %xmm1, %xmm0, %xmm09489; AVX512BW-NEXT:    retq9490entry:9491  %cmp = icmp sge <2 x i64> %a, %b9492  %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b9493  ret <2 x i64> %sel9494}9495 9496define <2 x i64> @test181(<2 x i64> %a, <2 x i64> %b) {9497; SSE2-LABEL: test181:9498; SSE2:       # %bb.0: # %entry9499; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]9500; SSE2-NEXT:    movdqa %xmm0, %xmm39501; SSE2-NEXT:    pxor %xmm2, %xmm39502; SSE2-NEXT:    pxor %xmm1, %xmm29503; SSE2-NEXT:    movdqa %xmm2, %xmm49504; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49505; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9506; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29507; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9508; SSE2-NEXT:    pand %xmm5, %xmm29509; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9510; SSE2-NEXT:    por %xmm2, %xmm39511; SSE2-NEXT:    pand %xmm3, %xmm09512; SSE2-NEXT:    pandn %xmm1, %xmm39513; SSE2-NEXT:    por %xmm3, %xmm09514; SSE2-NEXT:    retq9515;9516; SSE4-LABEL: test181:9517; SSE4:       # %bb.0: # %entry9518; SSE4-NEXT:    movdqa %xmm0, %xmm29519; SSE4-NEXT:    movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]9520; SSE4-NEXT:    movdqa %xmm2, %xmm39521; SSE4-NEXT:    pxor %xmm0, %xmm39522; SSE4-NEXT:    pxor %xmm1, %xmm09523; SSE4-NEXT:    pcmpgtq %xmm3, %xmm09524; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19525; SSE4-NEXT:    movapd %xmm1, %xmm09526; SSE4-NEXT:    retq9527;9528; AVX1-LABEL: test181:9529; AVX1:       # %bb.0: # %entry9530; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]9531; AVX1-NEXT:    # xmm2 = mem[0,0]9532; AVX1-NEXT:    vpxor %xmm2, %xmm0, %xmm39533; AVX1-NEXT:    vpxor %xmm2, %xmm1, %xmm29534; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm29535; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09536; AVX1-NEXT:    retq9537;9538; AVX2-LABEL: test181:9539; AVX2:       # %bb.0: # %entry9540; AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]9541; AVX2-NEXT:    vpxor %xmm2, %xmm0, %xmm39542; AVX2-NEXT:    vpxor %xmm2, %xmm1, %xmm29543; AVX2-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm29544; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09545; AVX2-NEXT:    retq9546;9547; AVX512F-LABEL: test181:9548; AVX512F:       # %bb.0: # %entry9549; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19550; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09551; AVX512F-NEXT:    vpminuq %zmm1, %zmm0, %zmm09552; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09553; AVX512F-NEXT:    retq9554;9555; AVX512BW-LABEL: test181:9556; AVX512BW:       # %bb.0: # %entry9557; AVX512BW-NEXT:    vpminuq %xmm1, %xmm0, %xmm09558; AVX512BW-NEXT:    retq9559entry:9560  %cmp = icmp ult <2 x i64> %a, %b9561  %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b9562  ret <2 x i64> %sel9563}9564 9565define <2 x i64> @test182(<2 x i64> %a, <2 x i64> %b) {9566; SSE2-LABEL: test182:9567; SSE2:       # %bb.0: # %entry9568; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]9569; SSE2-NEXT:    movdqa %xmm0, %xmm39570; SSE2-NEXT:    pxor %xmm2, %xmm39571; SSE2-NEXT:    pxor %xmm1, %xmm29572; SSE2-NEXT:    movdqa %xmm2, %xmm49573; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49574; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9575; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29576; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9577; SSE2-NEXT:    pand %xmm5, %xmm29578; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9579; SSE2-NEXT:    por %xmm2, %xmm39580; SSE2-NEXT:    pand %xmm3, %xmm09581; SSE2-NEXT:    pandn %xmm1, %xmm39582; SSE2-NEXT:    por %xmm3, %xmm09583; SSE2-NEXT:    retq9584;9585; SSE4-LABEL: test182:9586; SSE4:       # %bb.0: # %entry9587; SSE4-NEXT:    movdqa %xmm0, %xmm29588; SSE4-NEXT:    movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]9589; SSE4-NEXT:    movdqa %xmm2, %xmm39590; SSE4-NEXT:    pxor %xmm0, %xmm39591; SSE4-NEXT:    pxor %xmm1, %xmm09592; SSE4-NEXT:    pcmpgtq %xmm3, %xmm09593; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19594; SSE4-NEXT:    movapd %xmm1, %xmm09595; SSE4-NEXT:    retq9596;9597; AVX1-LABEL: test182:9598; AVX1:       # %bb.0: # %entry9599; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]9600; AVX1-NEXT:    # xmm2 = mem[0,0]9601; AVX1-NEXT:    vpxor %xmm2, %xmm0, %xmm39602; AVX1-NEXT:    vpxor %xmm2, %xmm1, %xmm29603; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm29604; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09605; AVX1-NEXT:    retq9606;9607; AVX2-LABEL: test182:9608; AVX2:       # %bb.0: # %entry9609; AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]9610; AVX2-NEXT:    vpxor %xmm2, %xmm0, %xmm39611; AVX2-NEXT:    vpxor %xmm2, %xmm1, %xmm29612; AVX2-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm29613; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09614; AVX2-NEXT:    retq9615;9616; AVX512F-LABEL: test182:9617; AVX512F:       # %bb.0: # %entry9618; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19619; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09620; AVX512F-NEXT:    vpminuq %zmm1, %zmm0, %zmm09621; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09622; AVX512F-NEXT:    retq9623;9624; AVX512BW-LABEL: test182:9625; AVX512BW:       # %bb.0: # %entry9626; AVX512BW-NEXT:    vpminuq %xmm1, %xmm0, %xmm09627; AVX512BW-NEXT:    retq9628entry:9629  %cmp = icmp ule <2 x i64> %a, %b9630  %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b9631  ret <2 x i64> %sel9632}9633 9634define <2 x i64> @test183(<2 x i64> %a, <2 x i64> %b) {9635; SSE2-LABEL: test183:9636; SSE2:       # %bb.0: # %entry9637; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]9638; SSE2-NEXT:    movdqa %xmm1, %xmm39639; SSE2-NEXT:    pxor %xmm2, %xmm39640; SSE2-NEXT:    pxor %xmm0, %xmm29641; SSE2-NEXT:    movdqa %xmm2, %xmm49642; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49643; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9644; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29645; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9646; SSE2-NEXT:    pand %xmm5, %xmm29647; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9648; SSE2-NEXT:    por %xmm2, %xmm39649; SSE2-NEXT:    pand %xmm3, %xmm09650; SSE2-NEXT:    pandn %xmm1, %xmm39651; SSE2-NEXT:    por %xmm3, %xmm09652; SSE2-NEXT:    retq9653;9654; SSE4-LABEL: test183:9655; SSE4:       # %bb.0: # %entry9656; SSE4-NEXT:    movdqa %xmm0, %xmm29657; SSE4-NEXT:    movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]9658; SSE4-NEXT:    movdqa %xmm1, %xmm39659; SSE4-NEXT:    pxor %xmm0, %xmm39660; SSE4-NEXT:    pxor %xmm2, %xmm09661; SSE4-NEXT:    pcmpgtq %xmm3, %xmm09662; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19663; SSE4-NEXT:    movapd %xmm1, %xmm09664; SSE4-NEXT:    retq9665;9666; AVX1-LABEL: test183:9667; AVX1:       # %bb.0: # %entry9668; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]9669; AVX1-NEXT:    # xmm2 = mem[0,0]9670; AVX1-NEXT:    vpxor %xmm2, %xmm1, %xmm39671; AVX1-NEXT:    vpxor %xmm2, %xmm0, %xmm29672; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm29673; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09674; AVX1-NEXT:    retq9675;9676; AVX2-LABEL: test183:9677; AVX2:       # %bb.0: # %entry9678; AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]9679; AVX2-NEXT:    vpxor %xmm2, %xmm1, %xmm39680; AVX2-NEXT:    vpxor %xmm2, %xmm0, %xmm29681; AVX2-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm29682; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09683; AVX2-NEXT:    retq9684;9685; AVX512F-LABEL: test183:9686; AVX512F:       # %bb.0: # %entry9687; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19688; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09689; AVX512F-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm09690; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09691; AVX512F-NEXT:    retq9692;9693; AVX512BW-LABEL: test183:9694; AVX512BW:       # %bb.0: # %entry9695; AVX512BW-NEXT:    vpmaxuq %xmm1, %xmm0, %xmm09696; AVX512BW-NEXT:    retq9697entry:9698  %cmp = icmp ugt <2 x i64> %a, %b9699  %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b9700  ret <2 x i64> %sel9701}9702 9703define <2 x i64> @test184(<2 x i64> %a, <2 x i64> %b) {9704; SSE2-LABEL: test184:9705; SSE2:       # %bb.0: # %entry9706; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]9707; SSE2-NEXT:    movdqa %xmm1, %xmm39708; SSE2-NEXT:    pxor %xmm2, %xmm39709; SSE2-NEXT:    pxor %xmm0, %xmm29710; SSE2-NEXT:    movdqa %xmm2, %xmm49711; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49712; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9713; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29714; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9715; SSE2-NEXT:    pand %xmm5, %xmm29716; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9717; SSE2-NEXT:    por %xmm2, %xmm39718; SSE2-NEXT:    pand %xmm3, %xmm09719; SSE2-NEXT:    pandn %xmm1, %xmm39720; SSE2-NEXT:    por %xmm3, %xmm09721; SSE2-NEXT:    retq9722;9723; SSE4-LABEL: test184:9724; SSE4:       # %bb.0: # %entry9725; SSE4-NEXT:    movdqa %xmm0, %xmm29726; SSE4-NEXT:    movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]9727; SSE4-NEXT:    movdqa %xmm1, %xmm39728; SSE4-NEXT:    pxor %xmm0, %xmm39729; SSE4-NEXT:    pxor %xmm2, %xmm09730; SSE4-NEXT:    pcmpgtq %xmm3, %xmm09731; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19732; SSE4-NEXT:    movapd %xmm1, %xmm09733; SSE4-NEXT:    retq9734;9735; AVX1-LABEL: test184:9736; AVX1:       # %bb.0: # %entry9737; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]9738; AVX1-NEXT:    # xmm2 = mem[0,0]9739; AVX1-NEXT:    vpxor %xmm2, %xmm1, %xmm39740; AVX1-NEXT:    vpxor %xmm2, %xmm0, %xmm29741; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm29742; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09743; AVX1-NEXT:    retq9744;9745; AVX2-LABEL: test184:9746; AVX2:       # %bb.0: # %entry9747; AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]9748; AVX2-NEXT:    vpxor %xmm2, %xmm1, %xmm39749; AVX2-NEXT:    vpxor %xmm2, %xmm0, %xmm29750; AVX2-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm29751; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09752; AVX2-NEXT:    retq9753;9754; AVX512F-LABEL: test184:9755; AVX512F:       # %bb.0: # %entry9756; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19757; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09758; AVX512F-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm09759; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09760; AVX512F-NEXT:    retq9761;9762; AVX512BW-LABEL: test184:9763; AVX512BW:       # %bb.0: # %entry9764; AVX512BW-NEXT:    vpmaxuq %xmm1, %xmm0, %xmm09765; AVX512BW-NEXT:    retq9766entry:9767  %cmp = icmp uge <2 x i64> %a, %b9768  %sel = select <2 x i1> %cmp, <2 x i64> %a, <2 x i64> %b9769  ret <2 x i64> %sel9770}9771 9772define <2 x i64> @test185(<2 x i64> %a, <2 x i64> %b) {9773; SSE2-LABEL: test185:9774; SSE2:       # %bb.0: # %entry9775; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]9776; SSE2-NEXT:    movdqa %xmm1, %xmm39777; SSE2-NEXT:    pxor %xmm2, %xmm39778; SSE2-NEXT:    pxor %xmm0, %xmm29779; SSE2-NEXT:    movdqa %xmm2, %xmm49780; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49781; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9782; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29783; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9784; SSE2-NEXT:    pand %xmm5, %xmm29785; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9786; SSE2-NEXT:    por %xmm2, %xmm39787; SSE2-NEXT:    pand %xmm3, %xmm09788; SSE2-NEXT:    pandn %xmm1, %xmm39789; SSE2-NEXT:    por %xmm3, %xmm09790; SSE2-NEXT:    retq9791;9792; SSE4-LABEL: test185:9793; SSE4:       # %bb.0: # %entry9794; SSE4-NEXT:    movdqa %xmm0, %xmm29795; SSE4-NEXT:    pcmpgtq %xmm1, %xmm09796; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19797; SSE4-NEXT:    movapd %xmm1, %xmm09798; SSE4-NEXT:    retq9799;9800; AVX1-LABEL: test185:9801; AVX1:       # %bb.0: # %entry9802; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm29803; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09804; AVX1-NEXT:    retq9805;9806; AVX2-LABEL: test185:9807; AVX2:       # %bb.0: # %entry9808; AVX2-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm29809; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09810; AVX2-NEXT:    retq9811;9812; AVX512F-LABEL: test185:9813; AVX512F:       # %bb.0: # %entry9814; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19815; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09816; AVX512F-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm09817; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09818; AVX512F-NEXT:    retq9819;9820; AVX512BW-LABEL: test185:9821; AVX512BW:       # %bb.0: # %entry9822; AVX512BW-NEXT:    vpmaxsq %xmm1, %xmm0, %xmm09823; AVX512BW-NEXT:    retq9824entry:9825  %cmp = icmp slt <2 x i64> %a, %b9826  %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a9827  ret <2 x i64> %sel9828}9829 9830define <2 x i64> @test186(<2 x i64> %a, <2 x i64> %b) {9831; SSE2-LABEL: test186:9832; SSE2:       # %bb.0: # %entry9833; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]9834; SSE2-NEXT:    movdqa %xmm1, %xmm39835; SSE2-NEXT:    pxor %xmm2, %xmm39836; SSE2-NEXT:    pxor %xmm0, %xmm29837; SSE2-NEXT:    movdqa %xmm2, %xmm49838; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49839; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9840; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29841; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9842; SSE2-NEXT:    pand %xmm5, %xmm29843; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9844; SSE2-NEXT:    por %xmm2, %xmm39845; SSE2-NEXT:    pand %xmm3, %xmm09846; SSE2-NEXT:    pandn %xmm1, %xmm39847; SSE2-NEXT:    por %xmm3, %xmm09848; SSE2-NEXT:    retq9849;9850; SSE4-LABEL: test186:9851; SSE4:       # %bb.0: # %entry9852; SSE4-NEXT:    movdqa %xmm0, %xmm29853; SSE4-NEXT:    pcmpgtq %xmm1, %xmm09854; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19855; SSE4-NEXT:    movapd %xmm1, %xmm09856; SSE4-NEXT:    retq9857;9858; AVX1-LABEL: test186:9859; AVX1:       # %bb.0: # %entry9860; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm29861; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09862; AVX1-NEXT:    retq9863;9864; AVX2-LABEL: test186:9865; AVX2:       # %bb.0: # %entry9866; AVX2-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm29867; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09868; AVX2-NEXT:    retq9869;9870; AVX512F-LABEL: test186:9871; AVX512F:       # %bb.0: # %entry9872; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19873; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09874; AVX512F-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm09875; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09876; AVX512F-NEXT:    retq9877;9878; AVX512BW-LABEL: test186:9879; AVX512BW:       # %bb.0: # %entry9880; AVX512BW-NEXT:    vpmaxsq %xmm1, %xmm0, %xmm09881; AVX512BW-NEXT:    retq9882entry:9883  %cmp = icmp sle <2 x i64> %a, %b9884  %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a9885  ret <2 x i64> %sel9886}9887 9888define <2 x i64> @test187(<2 x i64> %a, <2 x i64> %b) {9889; SSE2-LABEL: test187:9890; SSE2:       # %bb.0: # %entry9891; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]9892; SSE2-NEXT:    movdqa %xmm0, %xmm39893; SSE2-NEXT:    pxor %xmm2, %xmm39894; SSE2-NEXT:    pxor %xmm1, %xmm29895; SSE2-NEXT:    movdqa %xmm2, %xmm49896; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49897; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9898; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29899; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9900; SSE2-NEXT:    pand %xmm5, %xmm29901; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9902; SSE2-NEXT:    por %xmm2, %xmm39903; SSE2-NEXT:    pand %xmm3, %xmm09904; SSE2-NEXT:    pandn %xmm1, %xmm39905; SSE2-NEXT:    por %xmm3, %xmm09906; SSE2-NEXT:    retq9907;9908; SSE4-LABEL: test187:9909; SSE4:       # %bb.0: # %entry9910; SSE4-NEXT:    movdqa %xmm0, %xmm29911; SSE4-NEXT:    movdqa %xmm1, %xmm09912; SSE4-NEXT:    pcmpgtq %xmm2, %xmm09913; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19914; SSE4-NEXT:    movapd %xmm1, %xmm09915; SSE4-NEXT:    retq9916;9917; AVX1-LABEL: test187:9918; AVX1:       # %bb.0: # %entry9919; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm29920; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09921; AVX1-NEXT:    retq9922;9923; AVX2-LABEL: test187:9924; AVX2:       # %bb.0: # %entry9925; AVX2-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm29926; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09927; AVX2-NEXT:    retq9928;9929; AVX512F-LABEL: test187:9930; AVX512F:       # %bb.0: # %entry9931; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19932; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09933; AVX512F-NEXT:    vpminsq %zmm1, %zmm0, %zmm09934; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09935; AVX512F-NEXT:    retq9936;9937; AVX512BW-LABEL: test187:9938; AVX512BW:       # %bb.0: # %entry9939; AVX512BW-NEXT:    vpminsq %xmm1, %xmm0, %xmm09940; AVX512BW-NEXT:    retq9941entry:9942  %cmp = icmp sgt <2 x i64> %a, %b9943  %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a9944  ret <2 x i64> %sel9945}9946 9947define <2 x i64> @test188(<2 x i64> %a, <2 x i64> %b) {9948; SSE2-LABEL: test188:9949; SSE2:       # %bb.0: # %entry9950; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [2147483648,2147483648]9951; SSE2-NEXT:    movdqa %xmm0, %xmm39952; SSE2-NEXT:    pxor %xmm2, %xmm39953; SSE2-NEXT:    pxor %xmm1, %xmm29954; SSE2-NEXT:    movdqa %xmm2, %xmm49955; SSE2-NEXT:    pcmpgtd %xmm3, %xmm49956; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]9957; SSE2-NEXT:    pcmpeqd %xmm3, %xmm29958; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]9959; SSE2-NEXT:    pand %xmm5, %xmm29960; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]9961; SSE2-NEXT:    por %xmm2, %xmm39962; SSE2-NEXT:    pand %xmm3, %xmm09963; SSE2-NEXT:    pandn %xmm1, %xmm39964; SSE2-NEXT:    por %xmm3, %xmm09965; SSE2-NEXT:    retq9966;9967; SSE4-LABEL: test188:9968; SSE4:       # %bb.0: # %entry9969; SSE4-NEXT:    movdqa %xmm0, %xmm29970; SSE4-NEXT:    movdqa %xmm1, %xmm09971; SSE4-NEXT:    pcmpgtq %xmm2, %xmm09972; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm19973; SSE4-NEXT:    movapd %xmm1, %xmm09974; SSE4-NEXT:    retq9975;9976; AVX1-LABEL: test188:9977; AVX1:       # %bb.0: # %entry9978; AVX1-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm29979; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09980; AVX1-NEXT:    retq9981;9982; AVX2-LABEL: test188:9983; AVX2:       # %bb.0: # %entry9984; AVX2-NEXT:    vpcmpgtq %xmm0, %xmm1, %xmm29985; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm09986; AVX2-NEXT:    retq9987;9988; AVX512F-LABEL: test188:9989; AVX512F:       # %bb.0: # %entry9990; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm19991; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm09992; AVX512F-NEXT:    vpminsq %zmm1, %zmm0, %zmm09993; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm09994; AVX512F-NEXT:    retq9995;9996; AVX512BW-LABEL: test188:9997; AVX512BW:       # %bb.0: # %entry9998; AVX512BW-NEXT:    vpminsq %xmm1, %xmm0, %xmm09999; AVX512BW-NEXT:    retq10000entry:10001  %cmp = icmp sge <2 x i64> %a, %b10002  %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a10003  ret <2 x i64> %sel10004}10005 10006define <2 x i64> @test189(<2 x i64> %a, <2 x i64> %b) {10007; SSE2-LABEL: test189:10008; SSE2:       # %bb.0: # %entry10009; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]10010; SSE2-NEXT:    movdqa %xmm1, %xmm310011; SSE2-NEXT:    pxor %xmm2, %xmm310012; SSE2-NEXT:    pxor %xmm0, %xmm210013; SSE2-NEXT:    movdqa %xmm2, %xmm410014; SSE2-NEXT:    pcmpgtd %xmm3, %xmm410015; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]10016; SSE2-NEXT:    pcmpeqd %xmm3, %xmm210017; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]10018; SSE2-NEXT:    pand %xmm5, %xmm210019; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]10020; SSE2-NEXT:    por %xmm2, %xmm310021; SSE2-NEXT:    pand %xmm3, %xmm010022; SSE2-NEXT:    pandn %xmm1, %xmm310023; SSE2-NEXT:    por %xmm3, %xmm010024; SSE2-NEXT:    retq10025;10026; SSE4-LABEL: test189:10027; SSE4:       # %bb.0: # %entry10028; SSE4-NEXT:    movdqa %xmm0, %xmm210029; SSE4-NEXT:    movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]10030; SSE4-NEXT:    movdqa %xmm1, %xmm310031; SSE4-NEXT:    pxor %xmm0, %xmm310032; SSE4-NEXT:    pxor %xmm2, %xmm010033; SSE4-NEXT:    pcmpgtq %xmm3, %xmm010034; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm110035; SSE4-NEXT:    movapd %xmm1, %xmm010036; SSE4-NEXT:    retq10037;10038; AVX1-LABEL: test189:10039; AVX1:       # %bb.0: # %entry10040; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]10041; AVX1-NEXT:    # xmm2 = mem[0,0]10042; AVX1-NEXT:    vpxor %xmm2, %xmm1, %xmm310043; AVX1-NEXT:    vpxor %xmm2, %xmm0, %xmm210044; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm210045; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm010046; AVX1-NEXT:    retq10047;10048; AVX2-LABEL: test189:10049; AVX2:       # %bb.0: # %entry10050; AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]10051; AVX2-NEXT:    vpxor %xmm2, %xmm1, %xmm310052; AVX2-NEXT:    vpxor %xmm2, %xmm0, %xmm210053; AVX2-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm210054; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm010055; AVX2-NEXT:    retq10056;10057; AVX512F-LABEL: test189:10058; AVX512F:       # %bb.0: # %entry10059; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm110060; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm010061; AVX512F-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm010062; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm010063; AVX512F-NEXT:    retq10064;10065; AVX512BW-LABEL: test189:10066; AVX512BW:       # %bb.0: # %entry10067; AVX512BW-NEXT:    vpmaxuq %xmm1, %xmm0, %xmm010068; AVX512BW-NEXT:    retq10069entry:10070  %cmp = icmp ult <2 x i64> %a, %b10071  %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a10072  ret <2 x i64> %sel10073}10074 10075define <2 x i64> @test190(<2 x i64> %a, <2 x i64> %b) {10076; SSE2-LABEL: test190:10077; SSE2:       # %bb.0: # %entry10078; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]10079; SSE2-NEXT:    movdqa %xmm1, %xmm310080; SSE2-NEXT:    pxor %xmm2, %xmm310081; SSE2-NEXT:    pxor %xmm0, %xmm210082; SSE2-NEXT:    movdqa %xmm2, %xmm410083; SSE2-NEXT:    pcmpgtd %xmm3, %xmm410084; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]10085; SSE2-NEXT:    pcmpeqd %xmm3, %xmm210086; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]10087; SSE2-NEXT:    pand %xmm5, %xmm210088; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]10089; SSE2-NEXT:    por %xmm2, %xmm310090; SSE2-NEXT:    pand %xmm3, %xmm010091; SSE2-NEXT:    pandn %xmm1, %xmm310092; SSE2-NEXT:    por %xmm3, %xmm010093; SSE2-NEXT:    retq10094;10095; SSE4-LABEL: test190:10096; SSE4:       # %bb.0: # %entry10097; SSE4-NEXT:    movdqa %xmm0, %xmm210098; SSE4-NEXT:    movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]10099; SSE4-NEXT:    movdqa %xmm1, %xmm310100; SSE4-NEXT:    pxor %xmm0, %xmm310101; SSE4-NEXT:    pxor %xmm2, %xmm010102; SSE4-NEXT:    pcmpgtq %xmm3, %xmm010103; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm110104; SSE4-NEXT:    movapd %xmm1, %xmm010105; SSE4-NEXT:    retq10106;10107; AVX1-LABEL: test190:10108; AVX1:       # %bb.0: # %entry10109; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]10110; AVX1-NEXT:    # xmm2 = mem[0,0]10111; AVX1-NEXT:    vpxor %xmm2, %xmm1, %xmm310112; AVX1-NEXT:    vpxor %xmm2, %xmm0, %xmm210113; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm210114; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm010115; AVX1-NEXT:    retq10116;10117; AVX2-LABEL: test190:10118; AVX2:       # %bb.0: # %entry10119; AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]10120; AVX2-NEXT:    vpxor %xmm2, %xmm1, %xmm310121; AVX2-NEXT:    vpxor %xmm2, %xmm0, %xmm210122; AVX2-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm210123; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm010124; AVX2-NEXT:    retq10125;10126; AVX512F-LABEL: test190:10127; AVX512F:       # %bb.0: # %entry10128; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm110129; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm010130; AVX512F-NEXT:    vpmaxuq %zmm1, %zmm0, %zmm010131; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm010132; AVX512F-NEXT:    retq10133;10134; AVX512BW-LABEL: test190:10135; AVX512BW:       # %bb.0: # %entry10136; AVX512BW-NEXT:    vpmaxuq %xmm1, %xmm0, %xmm010137; AVX512BW-NEXT:    retq10138entry:10139  %cmp = icmp ule <2 x i64> %a, %b10140  %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a10141  ret <2 x i64> %sel10142}10143 10144define <2 x i64> @test191(<2 x i64> %a, <2 x i64> %b) {10145; SSE2-LABEL: test191:10146; SSE2:       # %bb.0: # %entry10147; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]10148; SSE2-NEXT:    movdqa %xmm0, %xmm310149; SSE2-NEXT:    pxor %xmm2, %xmm310150; SSE2-NEXT:    pxor %xmm1, %xmm210151; SSE2-NEXT:    movdqa %xmm2, %xmm410152; SSE2-NEXT:    pcmpgtd %xmm3, %xmm410153; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]10154; SSE2-NEXT:    pcmpeqd %xmm3, %xmm210155; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]10156; SSE2-NEXT:    pand %xmm5, %xmm210157; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]10158; SSE2-NEXT:    por %xmm2, %xmm310159; SSE2-NEXT:    pand %xmm3, %xmm010160; SSE2-NEXT:    pandn %xmm1, %xmm310161; SSE2-NEXT:    por %xmm3, %xmm010162; SSE2-NEXT:    retq10163;10164; SSE4-LABEL: test191:10165; SSE4:       # %bb.0: # %entry10166; SSE4-NEXT:    movdqa %xmm0, %xmm210167; SSE4-NEXT:    movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]10168; SSE4-NEXT:    movdqa %xmm2, %xmm310169; SSE4-NEXT:    pxor %xmm0, %xmm310170; SSE4-NEXT:    pxor %xmm1, %xmm010171; SSE4-NEXT:    pcmpgtq %xmm3, %xmm010172; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm110173; SSE4-NEXT:    movapd %xmm1, %xmm010174; SSE4-NEXT:    retq10175;10176; AVX1-LABEL: test191:10177; AVX1:       # %bb.0: # %entry10178; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]10179; AVX1-NEXT:    # xmm2 = mem[0,0]10180; AVX1-NEXT:    vpxor %xmm2, %xmm0, %xmm310181; AVX1-NEXT:    vpxor %xmm2, %xmm1, %xmm210182; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm210183; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm010184; AVX1-NEXT:    retq10185;10186; AVX2-LABEL: test191:10187; AVX2:       # %bb.0: # %entry10188; AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]10189; AVX2-NEXT:    vpxor %xmm2, %xmm0, %xmm310190; AVX2-NEXT:    vpxor %xmm2, %xmm1, %xmm210191; AVX2-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm210192; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm010193; AVX2-NEXT:    retq10194;10195; AVX512F-LABEL: test191:10196; AVX512F:       # %bb.0: # %entry10197; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm110198; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm010199; AVX512F-NEXT:    vpminuq %zmm1, %zmm0, %zmm010200; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm010201; AVX512F-NEXT:    retq10202;10203; AVX512BW-LABEL: test191:10204; AVX512BW:       # %bb.0: # %entry10205; AVX512BW-NEXT:    vpminuq %xmm1, %xmm0, %xmm010206; AVX512BW-NEXT:    retq10207entry:10208  %cmp = icmp ugt <2 x i64> %a, %b10209  %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a10210  ret <2 x i64> %sel10211}10212 10213define <2 x i64> @test192(<2 x i64> %a, <2 x i64> %b) {10214; SSE2-LABEL: test192:10215; SSE2:       # %bb.0: # %entry10216; SSE2-NEXT:    movdqa {{.*#+}} xmm2 = [9223372039002259456,9223372039002259456]10217; SSE2-NEXT:    movdqa %xmm0, %xmm310218; SSE2-NEXT:    pxor %xmm2, %xmm310219; SSE2-NEXT:    pxor %xmm1, %xmm210220; SSE2-NEXT:    movdqa %xmm2, %xmm410221; SSE2-NEXT:    pcmpgtd %xmm3, %xmm410222; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[0,0,2,2]10223; SSE2-NEXT:    pcmpeqd %xmm3, %xmm210224; SSE2-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]10225; SSE2-NEXT:    pand %xmm5, %xmm210226; SSE2-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,3,3]10227; SSE2-NEXT:    por %xmm2, %xmm310228; SSE2-NEXT:    pand %xmm3, %xmm010229; SSE2-NEXT:    pandn %xmm1, %xmm310230; SSE2-NEXT:    por %xmm3, %xmm010231; SSE2-NEXT:    retq10232;10233; SSE4-LABEL: test192:10234; SSE4:       # %bb.0: # %entry10235; SSE4-NEXT:    movdqa %xmm0, %xmm210236; SSE4-NEXT:    movdqa {{.*#+}} xmm0 = [9223372036854775808,9223372036854775808]10237; SSE4-NEXT:    movdqa %xmm2, %xmm310238; SSE4-NEXT:    pxor %xmm0, %xmm310239; SSE4-NEXT:    pxor %xmm1, %xmm010240; SSE4-NEXT:    pcmpgtq %xmm3, %xmm010241; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm110242; SSE4-NEXT:    movapd %xmm1, %xmm010243; SSE4-NEXT:    retq10244;10245; AVX1-LABEL: test192:10246; AVX1:       # %bb.0: # %entry10247; AVX1-NEXT:    vmovddup {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]10248; AVX1-NEXT:    # xmm2 = mem[0,0]10249; AVX1-NEXT:    vpxor %xmm2, %xmm0, %xmm310250; AVX1-NEXT:    vpxor %xmm2, %xmm1, %xmm210251; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm210252; AVX1-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm010253; AVX1-NEXT:    retq10254;10255; AVX2-LABEL: test192:10256; AVX2:       # %bb.0: # %entry10257; AVX2-NEXT:    vpbroadcastq {{.*#+}} xmm2 = [9223372036854775808,9223372036854775808]10258; AVX2-NEXT:    vpxor %xmm2, %xmm0, %xmm310259; AVX2-NEXT:    vpxor %xmm2, %xmm1, %xmm210260; AVX2-NEXT:    vpcmpgtq %xmm3, %xmm2, %xmm210261; AVX2-NEXT:    vblendvpd %xmm2, %xmm0, %xmm1, %xmm010262; AVX2-NEXT:    retq10263;10264; AVX512F-LABEL: test192:10265; AVX512F:       # %bb.0: # %entry10266; AVX512F-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm110267; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm010268; AVX512F-NEXT:    vpminuq %zmm1, %zmm0, %zmm010269; AVX512F-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm010270; AVX512F-NEXT:    retq10271;10272; AVX512BW-LABEL: test192:10273; AVX512BW:       # %bb.0: # %entry10274; AVX512BW-NEXT:    vpminuq %xmm1, %xmm0, %xmm010275; AVX512BW-NEXT:    retq10276entry:10277  %cmp = icmp uge <2 x i64> %a, %b10278  %sel = select <2 x i1> %cmp, <2 x i64> %b, <2 x i64> %a10279  ret <2 x i64> %sel10280}10281 10282; comparisons for smin/smax patterns can be reused10283define <8 x i64> @concat_smin_smax(<4 x i64> %a0, <4 x i64> %a1) {10284; SSE2-LABEL: concat_smin_smax:10285; SSE2:       # %bb.0:10286; SSE2-NEXT:    movdqa {{.*#+}} xmm6 = [2147483648,2147483648]10287; SSE2-NEXT:    movdqa %xmm0, %xmm410288; SSE2-NEXT:    pxor %xmm6, %xmm410289; SSE2-NEXT:    movdqa %xmm2, %xmm510290; SSE2-NEXT:    pxor %xmm6, %xmm510291; SSE2-NEXT:    movdqa %xmm5, %xmm710292; SSE2-NEXT:    pcmpgtd %xmm4, %xmm710293; SSE2-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[0,0,2,2]10294; SSE2-NEXT:    pcmpeqd %xmm4, %xmm510295; SSE2-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,3,3]10296; SSE2-NEXT:    pand %xmm8, %xmm410297; SSE2-NEXT:    pshufd {{.*#+}} xmm5 = xmm7[1,1,3,3]10298; SSE2-NEXT:    por %xmm4, %xmm510299; SSE2-NEXT:    movdqa %xmm5, %xmm710300; SSE2-NEXT:    pandn %xmm2, %xmm710301; SSE2-NEXT:    movdqa %xmm0, %xmm410302; SSE2-NEXT:    pand %xmm5, %xmm410303; SSE2-NEXT:    por %xmm7, %xmm410304; SSE2-NEXT:    movdqa %xmm1, %xmm710305; SSE2-NEXT:    pxor %xmm6, %xmm710306; SSE2-NEXT:    pxor %xmm3, %xmm610307; SSE2-NEXT:    movdqa %xmm6, %xmm810308; SSE2-NEXT:    pcmpgtd %xmm7, %xmm810309; SSE2-NEXT:    pshufd {{.*#+}} xmm9 = xmm8[0,0,2,2]10310; SSE2-NEXT:    pcmpeqd %xmm7, %xmm610311; SSE2-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[1,1,3,3]10312; SSE2-NEXT:    pand %xmm9, %xmm610313; SSE2-NEXT:    pshufd {{.*#+}} xmm7 = xmm8[1,1,3,3]10314; SSE2-NEXT:    por %xmm6, %xmm710315; SSE2-NEXT:    movdqa %xmm7, %xmm610316; SSE2-NEXT:    pandn %xmm3, %xmm610317; SSE2-NEXT:    movdqa %xmm7, %xmm810318; SSE2-NEXT:    pandn %xmm1, %xmm810319; SSE2-NEXT:    pand %xmm7, %xmm110320; SSE2-NEXT:    por %xmm6, %xmm110321; SSE2-NEXT:    pand %xmm5, %xmm210322; SSE2-NEXT:    pandn %xmm0, %xmm510323; SSE2-NEXT:    por %xmm5, %xmm210324; SSE2-NEXT:    pand %xmm7, %xmm310325; SSE2-NEXT:    por %xmm8, %xmm310326; SSE2-NEXT:    movdqa %xmm4, %xmm010327; SSE2-NEXT:    retq10328;10329; SSE4-LABEL: concat_smin_smax:10330; SSE4:       # %bb.0:10331; SSE4-NEXT:    movdqa %xmm1, %xmm410332; SSE4-NEXT:    movdqa %xmm0, %xmm510333; SSE4-NEXT:    movdqa %xmm2, %xmm810334; SSE4-NEXT:    pcmpgtq %xmm0, %xmm810335; SSE4-NEXT:    movdqa %xmm2, %xmm610336; SSE4-NEXT:    movdqa %xmm8, %xmm010337; SSE4-NEXT:    blendvpd %xmm0, %xmm5, %xmm610338; SSE4-NEXT:    movdqa %xmm3, %xmm710339; SSE4-NEXT:    pcmpgtq %xmm1, %xmm710340; SSE4-NEXT:    movdqa %xmm3, %xmm110341; SSE4-NEXT:    movdqa %xmm7, %xmm010342; SSE4-NEXT:    blendvpd %xmm0, %xmm4, %xmm110343; SSE4-NEXT:    movdqa %xmm8, %xmm010344; SSE4-NEXT:    blendvpd %xmm0, %xmm2, %xmm510345; SSE4-NEXT:    movdqa %xmm7, %xmm010346; SSE4-NEXT:    blendvpd %xmm0, %xmm3, %xmm410347; SSE4-NEXT:    movapd %xmm6, %xmm010348; SSE4-NEXT:    movapd %xmm5, %xmm210349; SSE4-NEXT:    movapd %xmm4, %xmm310350; SSE4-NEXT:    retq10351;10352; AVX1-LABEL: concat_smin_smax:10353; AVX1:       # %bb.0:10354; AVX1-NEXT:    vpcmpgtq %xmm1, %xmm0, %xmm210355; AVX1-NEXT:    vextractf128 $1, %ymm1, %xmm310356; AVX1-NEXT:    vextractf128 $1, %ymm0, %xmm410357; AVX1-NEXT:    vpcmpgtq %xmm3, %xmm4, %xmm310358; AVX1-NEXT:    vinsertf128 $1, %xmm3, %ymm2, %ymm310359; AVX1-NEXT:    vblendvpd %ymm3, %ymm1, %ymm0, %ymm210360; AVX1-NEXT:    vblendvpd %ymm3, %ymm0, %ymm1, %ymm110361; AVX1-NEXT:    vmovapd %ymm2, %ymm010362; AVX1-NEXT:    retq10363;10364; AVX2-LABEL: concat_smin_smax:10365; AVX2:       # %bb.0:10366; AVX2-NEXT:    vpcmpgtq %ymm1, %ymm0, %ymm310367; AVX2-NEXT:    vblendvpd %ymm3, %ymm1, %ymm0, %ymm210368; AVX2-NEXT:    vblendvpd %ymm3, %ymm0, %ymm1, %ymm110369; AVX2-NEXT:    vmovapd %ymm2, %ymm010370; AVX2-NEXT:    retq10371;10372; AVX512F-LABEL: concat_smin_smax:10373; AVX512F:       # %bb.0:10374; AVX512F-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm110375; AVX512F-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm010376; AVX512F-NEXT:    vpminsq %zmm1, %zmm0, %zmm210377; AVX512F-NEXT:    vpmaxsq %zmm1, %zmm0, %zmm010378; AVX512F-NEXT:    vinserti64x4 $1, %ymm0, %zmm2, %zmm010379; AVX512F-NEXT:    retq10380;10381; AVX512BW-LABEL: concat_smin_smax:10382; AVX512BW:       # %bb.0:10383; AVX512BW-NEXT:    vpminsq %ymm1, %ymm0, %ymm210384; AVX512BW-NEXT:    vpmaxsq %ymm1, %ymm0, %ymm010385; AVX512BW-NEXT:    vinserti64x4 $1, %ymm0, %zmm2, %zmm010386; AVX512BW-NEXT:    retq10387  %cmp = icmp slt <4 x i64> %a0, %a110388  %min = select <4 x i1> %cmp, <4 x i64> %a0, <4 x i64> %a110389  %max = select <4 x i1> %cmp, <4 x i64> %a1, <4 x i64> %a010390  %res = shufflevector <4 x i64> %min, <4 x i64> %max, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>10391  ret <8 x i64> %res10392}10393