brintos

brintos / llvm-project-archived public Read only

0
0
Text · 42.0 KiB · 5b09e45 Raw
1138 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=skx | FileCheck %s --check-prefix=VLX3; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=knl | FileCheck %s --check-prefix=NoVLX4 5define <4 x i64> @test256_1(<4 x i64> %x, <4 x i64> %y) nounwind {6; VLX-LABEL: test256_1:7; VLX:       # %bb.0:8; VLX-NEXT:    vpcmpeqq %ymm1, %ymm0, %k19; VLX-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}10; VLX-NEXT:    retq11;12; NoVLX-LABEL: test256_1:13; NoVLX:       # %bb.0:14; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm115; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm016; NoVLX-NEXT:    vpcmpeqq %zmm1, %zmm0, %k117; NoVLX-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}18; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm019; NoVLX-NEXT:    retq20  %mask = icmp eq <4 x i64> %x, %y21  %max = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> %y22  ret <4 x i64> %max23}24 25define <4 x i64> @test256_2(<4 x i64> %x, <4 x i64> %y, <4 x i64> %x1) nounwind {26; VLX-LABEL: test256_2:27; VLX:       # %bb.0:28; VLX-NEXT:    vpcmpgtq %ymm1, %ymm0, %k129; VLX-NEXT:    vpblendmq %ymm2, %ymm1, %ymm0 {%k1}30; VLX-NEXT:    retq31;32; NoVLX-LABEL: test256_2:33; NoVLX:       # %bb.0:34; NoVLX-NEXT:    # kill: def $ymm2 killed $ymm2 def $zmm235; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm136; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm037; NoVLX-NEXT:    vpcmpgtq %zmm1, %zmm0, %k138; NoVLX-NEXT:    vpblendmq %zmm2, %zmm1, %zmm0 {%k1}39; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm040; NoVLX-NEXT:    retq41  %mask = icmp sgt <4 x i64> %x, %y42  %max = select <4 x i1> %mask, <4 x i64> %x1, <4 x i64> %y43  ret <4 x i64> %max44}45 46define <8 x i32> @test256_3(<8 x i32> %x, <8 x i32> %y, <8 x i32> %x1) nounwind {47; VLX-LABEL: test256_3:48; VLX:       # %bb.0:49; VLX-NEXT:    vpcmpnltd %ymm1, %ymm0, %k150; VLX-NEXT:    vpblendmd %ymm2, %ymm1, %ymm0 {%k1}51; VLX-NEXT:    retq52;53; NoVLX-LABEL: test256_3:54; NoVLX:       # %bb.0:55; NoVLX-NEXT:    # kill: def $ymm2 killed $ymm2 def $zmm256; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm157; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm058; NoVLX-NEXT:    vpcmpnltd %zmm1, %zmm0, %k159; NoVLX-NEXT:    vpblendmd %zmm2, %zmm1, %zmm0 {%k1}60; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm061; NoVLX-NEXT:    retq62  %mask = icmp sge <8 x i32> %x, %y63  %max = select <8 x i1> %mask, <8 x i32> %x1, <8 x i32> %y64  ret <8 x i32> %max65}66 67define <4 x i64> @test256_4(<4 x i64> %x, <4 x i64> %y, <4 x i64> %x1) nounwind {68; VLX-LABEL: test256_4:69; VLX:       # %bb.0:70; VLX-NEXT:    vpcmpnleuq %ymm1, %ymm0, %k171; VLX-NEXT:    vpblendmq %ymm2, %ymm1, %ymm0 {%k1}72; VLX-NEXT:    retq73;74; NoVLX-LABEL: test256_4:75; NoVLX:       # %bb.0:76; NoVLX-NEXT:    # kill: def $ymm2 killed $ymm2 def $zmm277; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm178; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm079; NoVLX-NEXT:    vpcmpnleuq %zmm1, %zmm0, %k180; NoVLX-NEXT:    vpblendmq %zmm2, %zmm1, %zmm0 {%k1}81; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm082; NoVLX-NEXT:    retq83  %mask = icmp ugt <4 x i64> %x, %y84  %max = select <4 x i1> %mask, <4 x i64> %x1, <4 x i64> %y85  ret <4 x i64> %max86}87 88define <8 x i32> @test256_5(<8 x i32> %x, <8 x i32> %x1, ptr %yp) nounwind {89; VLX-LABEL: test256_5:90; VLX:       # %bb.0:91; VLX-NEXT:    vpcmpeqd (%rdi), %ymm0, %k192; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}93; VLX-NEXT:    retq94;95; NoVLX-LABEL: test256_5:96; NoVLX:       # %bb.0:97; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm198; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm099; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2100; NoVLX-NEXT:    vpcmpeqd %zmm2, %zmm0, %k1101; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}102; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0103; NoVLX-NEXT:    retq104  %y = load <8 x i32>, ptr %yp, align 4105  %mask = icmp eq <8 x i32> %x, %y106  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1107  ret <8 x i32> %max108}109 110define <8 x i32> @test256_5b(<8 x i32> %x, <8 x i32> %x1, ptr %yp) nounwind {111; VLX-LABEL: test256_5b:112; VLX:       # %bb.0:113; VLX-NEXT:    vpcmpeqd (%rdi), %ymm0, %k1114; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}115; VLX-NEXT:    retq116;117; NoVLX-LABEL: test256_5b:118; NoVLX:       # %bb.0:119; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1120; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0121; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2122; NoVLX-NEXT:    vpcmpeqd %zmm0, %zmm2, %k1123; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}124; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0125; NoVLX-NEXT:    retq126  %y = load <8 x i32>, ptr %yp, align 4127  %mask = icmp eq <8 x i32> %y, %x128  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1129  ret <8 x i32> %max130}131 132define <8 x i32> @test256_6(<8 x i32> %x, <8 x i32> %x1, ptr %y.ptr) nounwind {133; VLX-LABEL: test256_6:134; VLX:       # %bb.0:135; VLX-NEXT:    vpcmpgtd (%rdi), %ymm0, %k1136; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}137; VLX-NEXT:    retq138;139; NoVLX-LABEL: test256_6:140; NoVLX:       # %bb.0:141; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1142; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0143; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2144; NoVLX-NEXT:    vpcmpgtd %zmm2, %zmm0, %k1145; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}146; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0147; NoVLX-NEXT:    retq148  %y = load <8 x i32>, ptr %y.ptr, align 4149  %mask = icmp sgt <8 x i32> %x, %y150  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1151  ret <8 x i32> %max152}153 154define <8 x i32> @test256_6b(<8 x i32> %x, <8 x i32> %x1, ptr %y.ptr) nounwind {155; VLX-LABEL: test256_6b:156; VLX:       # %bb.0:157; VLX-NEXT:    vpcmpgtd (%rdi), %ymm0, %k1158; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}159; VLX-NEXT:    retq160;161; NoVLX-LABEL: test256_6b:162; NoVLX:       # %bb.0:163; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1164; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0165; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2166; NoVLX-NEXT:    vpcmpgtd %zmm2, %zmm0, %k1167; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}168; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0169; NoVLX-NEXT:    retq170  %y = load <8 x i32>, ptr %y.ptr, align 4171  %mask = icmp slt <8 x i32> %y, %x172  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1173  ret <8 x i32> %max174}175 176define <8 x i32> @test256_7(<8 x i32> %x, <8 x i32> %x1, ptr %y.ptr) nounwind {177; VLX-LABEL: test256_7:178; VLX:       # %bb.0:179; VLX-NEXT:    vpcmpled (%rdi), %ymm0, %k1180; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}181; VLX-NEXT:    retq182;183; NoVLX-LABEL: test256_7:184; NoVLX:       # %bb.0:185; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1186; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0187; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2188; NoVLX-NEXT:    vpcmpled %zmm2, %zmm0, %k1189; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}190; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0191; NoVLX-NEXT:    retq192  %y = load <8 x i32>, ptr %y.ptr, align 4193  %mask = icmp sle <8 x i32> %x, %y194  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1195  ret <8 x i32> %max196}197 198define <8 x i32> @test256_7b(<8 x i32> %x, <8 x i32> %x1, ptr %y.ptr) nounwind {199; VLX-LABEL: test256_7b:200; VLX:       # %bb.0:201; VLX-NEXT:    vpcmpled (%rdi), %ymm0, %k1202; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}203; VLX-NEXT:    retq204;205; NoVLX-LABEL: test256_7b:206; NoVLX:       # %bb.0:207; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1208; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0209; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2210; NoVLX-NEXT:    vpcmpnltd %zmm0, %zmm2, %k1211; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}212; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0213; NoVLX-NEXT:    retq214  %y = load <8 x i32>, ptr %y.ptr, align 4215  %mask = icmp sge <8 x i32> %y, %x216  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1217  ret <8 x i32> %max218}219 220define <8 x i32> @test256_8(<8 x i32> %x, <8 x i32> %x1, ptr %y.ptr) nounwind {221; VLX-LABEL: test256_8:222; VLX:       # %bb.0:223; VLX-NEXT:    vpcmpleud (%rdi), %ymm0, %k1224; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}225; VLX-NEXT:    retq226;227; NoVLX-LABEL: test256_8:228; NoVLX:       # %bb.0:229; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1230; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0231; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2232; NoVLX-NEXT:    vpcmpleud %zmm2, %zmm0, %k1233; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}234; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0235; NoVLX-NEXT:    retq236  %y = load <8 x i32>, ptr %y.ptr, align 4237  %mask = icmp ule <8 x i32> %x, %y238  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1239  ret <8 x i32> %max240}241 242define <8 x i32> @test256_8b(<8 x i32> %x, <8 x i32> %x1, ptr %y.ptr) nounwind {243; VLX-LABEL: test256_8b:244; VLX:       # %bb.0:245; VLX-NEXT:    vpcmpleud (%rdi), %ymm0, %k1246; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}247; VLX-NEXT:    retq248;249; NoVLX-LABEL: test256_8b:250; NoVLX:       # %bb.0:251; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1252; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0253; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2254; NoVLX-NEXT:    vpcmpnltud %zmm0, %zmm2, %k1255; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}256; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0257; NoVLX-NEXT:    retq258  %y = load <8 x i32>, ptr %y.ptr, align 4259  %mask = icmp uge <8 x i32> %y, %x260  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1261  ret <8 x i32> %max262}263 264define <8 x i32> @test256_9(<8 x i32> %x, <8 x i32> %y, <8 x i32> %x1, <8 x i32> %y1) nounwind {265; VLX-LABEL: test256_9:266; VLX:       # %bb.0:267; VLX-NEXT:    vpcmpeqd %ymm1, %ymm0, %k1268; VLX-NEXT:    vpcmpeqd %ymm3, %ymm2, %k1 {%k1}269; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}270; VLX-NEXT:    retq271;272; NoVLX-LABEL: test256_9:273; NoVLX:       # %bb.0:274; NoVLX-NEXT:    # kill: def $ymm3 killed $ymm3 def $zmm3275; NoVLX-NEXT:    # kill: def $ymm2 killed $ymm2 def $zmm2276; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1277; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0278; NoVLX-NEXT:    vpcmpeqd %zmm1, %zmm0, %k1279; NoVLX-NEXT:    vpcmpeqd %zmm3, %zmm2, %k1 {%k1}280; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}281; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0282; NoVLX-NEXT:    retq283  %mask1 = icmp eq <8 x i32> %x1, %y1284  %mask0 = icmp eq <8 x i32> %x, %y285  %mask = select <8 x i1> %mask0, <8 x i1> %mask1, <8 x i1> zeroinitializer286  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %y287  ret <8 x i32> %max288}289 290define <4 x i64> @test256_10(<4 x i64> %x, <4 x i64> %y, <4 x i64> %x1, <4 x i64> %y1) nounwind {291; VLX-LABEL: test256_10:292; VLX:       # %bb.0:293; VLX-NEXT:    vpcmpleq %ymm1, %ymm0, %k1294; VLX-NEXT:    vpcmpnltq %ymm3, %ymm2, %k1 {%k1}295; VLX-NEXT:    vpblendmq %ymm0, %ymm2, %ymm0 {%k1}296; VLX-NEXT:    retq297;298; NoVLX-LABEL: test256_10:299; NoVLX:       # %bb.0:300; NoVLX-NEXT:    # kill: def $ymm3 killed $ymm3 def $zmm3301; NoVLX-NEXT:    # kill: def $ymm2 killed $ymm2 def $zmm2302; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1303; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0304; NoVLX-NEXT:    vpcmpleq %zmm1, %zmm0, %k1305; NoVLX-NEXT:    vpcmpnltq %zmm3, %zmm2, %k1 {%k1}306; NoVLX-NEXT:    vpblendmq %zmm0, %zmm2, %zmm0 {%k1}307; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0308; NoVLX-NEXT:    retq309  %mask1 = icmp sge <4 x i64> %x1, %y1310  %mask0 = icmp sle <4 x i64> %x, %y311  %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer312  %max = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> %x1313  ret <4 x i64> %max314}315 316define <4 x i64> @test256_11(<4 x i64> %x, ptr %y.ptr, <4 x i64> %x1, <4 x i64> %y1) nounwind {317; VLX-LABEL: test256_11:318; VLX:       # %bb.0:319; VLX-NEXT:    vpcmpgtq %ymm2, %ymm1, %k1320; VLX-NEXT:    vpcmpgtq (%rdi), %ymm0, %k1 {%k1}321; VLX-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}322; VLX-NEXT:    retq323;324; NoVLX-LABEL: test256_11:325; NoVLX:       # %bb.0:326; NoVLX-NEXT:    # kill: def $ymm2 killed $ymm2 def $zmm2327; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1328; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0329; NoVLX-NEXT:    vmovdqu (%rdi), %ymm3330; NoVLX-NEXT:    vpcmpgtq %zmm3, %zmm0, %k1331; NoVLX-NEXT:    vpcmpgtq %zmm2, %zmm1, %k1 {%k1}332; NoVLX-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}333; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0334; NoVLX-NEXT:    retq335  %mask1 = icmp sgt <4 x i64> %x1, %y1336  %y = load <4 x i64>, ptr %y.ptr, align 4337  %mask0 = icmp sgt <4 x i64> %x, %y338  %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer339  %max = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> %x1340  ret <4 x i64> %max341}342 343define <8 x i32> @test256_12(<8 x i32> %x, ptr %y.ptr, <8 x i32> %x1, <8 x i32> %y1) nounwind {344; VLX-LABEL: test256_12:345; VLX:       # %bb.0:346; VLX-NEXT:    vpcmpnltd %ymm2, %ymm1, %k1347; VLX-NEXT:    vpcmpleud (%rdi), %ymm0, %k1 {%k1}348; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}349; VLX-NEXT:    retq350;351; NoVLX-LABEL: test256_12:352; NoVLX:       # %bb.0:353; NoVLX-NEXT:    # kill: def $ymm2 killed $ymm2 def $zmm2354; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1355; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0356; NoVLX-NEXT:    vmovdqu (%rdi), %ymm3357; NoVLX-NEXT:    vpcmpleud %zmm3, %zmm0, %k1358; NoVLX-NEXT:    vpcmpnltd %zmm2, %zmm1, %k1 {%k1}359; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}360; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0361; NoVLX-NEXT:    retq362  %mask1 = icmp sge <8 x i32> %x1, %y1363  %y = load <8 x i32>, ptr %y.ptr, align 4364  %mask0 = icmp ule <8 x i32> %x, %y365  %mask = select <8 x i1> %mask0, <8 x i1> %mask1, <8 x i1> zeroinitializer366  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1367  ret <8 x i32> %max368}369 370define <4 x i64> @test256_13(<4 x i64> %x, <4 x i64> %x1, ptr %yb.ptr) nounwind {371; VLX-LABEL: test256_13:372; VLX:       # %bb.0:373; VLX-NEXT:    vpcmpeqq (%rdi){1to4}, %ymm0, %k1374; VLX-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}375; VLX-NEXT:    retq376;377; NoVLX-LABEL: test256_13:378; NoVLX:       # %bb.0:379; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1380; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0381; NoVLX-NEXT:    vpcmpeqq (%rdi){1to8}, %zmm0, %k1382; NoVLX-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}383; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0384; NoVLX-NEXT:    retq385  %yb = load i64, ptr %yb.ptr, align 4386  %y.0 = insertelement <4 x i64> undef, i64 %yb, i32 0387  %y = shufflevector <4 x i64> %y.0, <4 x i64> undef, <4 x i32> zeroinitializer388  %mask = icmp eq <4 x i64> %x, %y389  %max = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> %x1390  ret <4 x i64> %max391}392 393define <8 x i32> @test256_14(<8 x i32> %x, ptr %yb.ptr, <8 x i32> %x1) nounwind {394; VLX-LABEL: test256_14:395; VLX:       # %bb.0:396; VLX-NEXT:    vpcmpled (%rdi){1to8}, %ymm0, %k1397; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}398; VLX-NEXT:    retq399;400; NoVLX-LABEL: test256_14:401; NoVLX:       # %bb.0:402; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1403; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0404; NoVLX-NEXT:    vpcmpled (%rdi){1to16}, %zmm0, %k1405; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}406; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0407; NoVLX-NEXT:    retq408  %yb = load i32, ptr %yb.ptr, align 4409  %y.0 = insertelement <8 x i32> undef, i32 %yb, i32 0410  %y = shufflevector <8 x i32> %y.0, <8 x i32> undef, <8 x i32> zeroinitializer411  %mask = icmp sle <8 x i32> %x, %y412  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1413  ret <8 x i32> %max414}415 416define <8 x i32> @test256_15(<8 x i32> %x, ptr %yb.ptr, <8 x i32> %x1, <8 x i32> %y1) nounwind {417; VLX-LABEL: test256_15:418; VLX:       # %bb.0:419; VLX-NEXT:    vpcmpnltd %ymm2, %ymm1, %k1420; VLX-NEXT:    vpcmpgtd (%rdi){1to8}, %ymm0, %k1 {%k1}421; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}422; VLX-NEXT:    retq423;424; NoVLX-LABEL: test256_15:425; NoVLX:       # %bb.0:426; NoVLX-NEXT:    # kill: def $ymm2 killed $ymm2 def $zmm2427; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1428; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0429; NoVLX-NEXT:    vpcmpnltd %zmm2, %zmm1, %k1430; NoVLX-NEXT:    vpcmpgtd (%rdi){1to16}, %zmm0, %k1 {%k1}431; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}432; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0433; NoVLX-NEXT:    retq434  %mask1 = icmp sge <8 x i32> %x1, %y1435  %yb = load i32, ptr %yb.ptr, align 4436  %y.0 = insertelement <8 x i32> undef, i32 %yb, i32 0437  %y = shufflevector <8 x i32> %y.0, <8 x i32> undef, <8 x i32> zeroinitializer438  %mask0 = icmp sgt <8 x i32> %x, %y439  %mask = select <8 x i1> %mask0, <8 x i1> %mask1, <8 x i1> zeroinitializer440  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1441  ret <8 x i32> %max442}443 444define <4 x i64> @test256_16(<4 x i64> %x, ptr %yb.ptr, <4 x i64> %x1, <4 x i64> %y1) nounwind {445; VLX-LABEL: test256_16:446; VLX:       # %bb.0:447; VLX-NEXT:    vpcmpnltq %ymm2, %ymm1, %k1448; VLX-NEXT:    vpcmpgtq (%rdi){1to4}, %ymm0, %k1 {%k1}449; VLX-NEXT:    vpblendmq %ymm0, %ymm1, %ymm0 {%k1}450; VLX-NEXT:    retq451;452; NoVLX-LABEL: test256_16:453; NoVLX:       # %bb.0:454; NoVLX-NEXT:    # kill: def $ymm2 killed $ymm2 def $zmm2455; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1456; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0457; NoVLX-NEXT:    vpcmpnltq %zmm2, %zmm1, %k1458; NoVLX-NEXT:    vpcmpgtq (%rdi){1to8}, %zmm0, %k1 {%k1}459; NoVLX-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}460; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0461; NoVLX-NEXT:    retq462  %mask1 = icmp sge <4 x i64> %x1, %y1463  %yb = load i64, ptr %yb.ptr, align 4464  %y.0 = insertelement <4 x i64> undef, i64 %yb, i32 0465  %y = shufflevector <4 x i64> %y.0, <4 x i64> undef, <4 x i32> zeroinitializer466  %mask0 = icmp sgt <4 x i64> %x, %y467  %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer468  %max = select <4 x i1> %mask, <4 x i64> %x, <4 x i64> %x1469  ret <4 x i64> %max470}471 472define <8 x i32> @test256_17(<8 x i32> %x, <8 x i32> %x1, ptr %yp) nounwind {473; VLX-LABEL: test256_17:474; VLX:       # %bb.0:475; VLX-NEXT:    vpcmpneqd (%rdi), %ymm0, %k1476; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}477; VLX-NEXT:    retq478;479; NoVLX-LABEL: test256_17:480; NoVLX:       # %bb.0:481; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1482; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0483; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2484; NoVLX-NEXT:    vpcmpneqd %zmm2, %zmm0, %k1485; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}486; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0487; NoVLX-NEXT:    retq488  %y = load <8 x i32>, ptr %yp, align 4489  %mask = icmp ne <8 x i32> %x, %y490  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1491  ret <8 x i32> %max492}493 494define <8 x i32> @test256_18(<8 x i32> %x, <8 x i32> %x1, ptr %yp) nounwind {495; VLX-LABEL: test256_18:496; VLX:       # %bb.0:497; VLX-NEXT:    vpcmpneqd (%rdi), %ymm0, %k1498; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}499; VLX-NEXT:    retq500;501; NoVLX-LABEL: test256_18:502; NoVLX:       # %bb.0:503; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1504; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0505; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2506; NoVLX-NEXT:    vpcmpneqd %zmm0, %zmm2, %k1507; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}508; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0509; NoVLX-NEXT:    retq510  %y = load <8 x i32>, ptr %yp, align 4511  %mask = icmp ne <8 x i32> %y, %x512  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1513  ret <8 x i32> %max514}515 516define <8 x i32> @test256_19(<8 x i32> %x, <8 x i32> %x1, ptr %yp) nounwind {517; VLX-LABEL: test256_19:518; VLX:       # %bb.0:519; VLX-NEXT:    vpcmpnltud (%rdi), %ymm0, %k1520; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}521; VLX-NEXT:    retq522;523; NoVLX-LABEL: test256_19:524; NoVLX:       # %bb.0:525; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1526; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0527; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2528; NoVLX-NEXT:    vpcmpnltud %zmm2, %zmm0, %k1529; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}530; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0531; NoVLX-NEXT:    retq532  %y = load <8 x i32>, ptr %yp, align 4533  %mask = icmp uge <8 x i32> %x, %y534  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1535  ret <8 x i32> %max536}537 538define <8 x i32> @test256_20(<8 x i32> %x, <8 x i32> %x1, ptr %yp) nounwind {539; VLX-LABEL: test256_20:540; VLX:       # %bb.0:541; VLX-NEXT:    vpcmpleud (%rdi), %ymm0, %k1542; VLX-NEXT:    vpblendmd %ymm0, %ymm1, %ymm0 {%k1}543; VLX-NEXT:    retq544;545; NoVLX-LABEL: test256_20:546; NoVLX:       # %bb.0:547; NoVLX-NEXT:    # kill: def $ymm1 killed $ymm1 def $zmm1548; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0549; NoVLX-NEXT:    vmovdqu (%rdi), %ymm2550; NoVLX-NEXT:    vpcmpnltud %zmm0, %zmm2, %k1551; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}552; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0553; NoVLX-NEXT:    retq554  %y = load <8 x i32>, ptr %yp, align 4555  %mask = icmp uge <8 x i32> %y, %x556  %max = select <8 x i1> %mask, <8 x i32> %x, <8 x i32> %x1557  ret <8 x i32> %max558}559 560define <2 x i64> @test128_1(<2 x i64> %x, <2 x i64> %y) nounwind {561; VLX-LABEL: test128_1:562; VLX:       # %bb.0:563; VLX-NEXT:    vpcmpeqq %xmm1, %xmm0, %k1564; VLX-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}565; VLX-NEXT:    retq566;567; NoVLX-LABEL: test128_1:568; NoVLX:       # %bb.0:569; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1570; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0571; NoVLX-NEXT:    vpcmpeqq %zmm1, %zmm0, %k1572; NoVLX-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}573; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0574; NoVLX-NEXT:    retq575  %mask = icmp eq <2 x i64> %x, %y576  %max = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> %y577  ret <2 x i64> %max578}579 580define <2 x i64> @test128_2(<2 x i64> %x, <2 x i64> %y, <2 x i64> %x1) nounwind {581; VLX-LABEL: test128_2:582; VLX:       # %bb.0:583; VLX-NEXT:    vpcmpgtq %xmm1, %xmm0, %k1584; VLX-NEXT:    vpblendmq %xmm2, %xmm1, %xmm0 {%k1}585; VLX-NEXT:    retq586;587; NoVLX-LABEL: test128_2:588; NoVLX:       # %bb.0:589; NoVLX-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2590; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1591; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0592; NoVLX-NEXT:    vpcmpgtq %zmm1, %zmm0, %k1593; NoVLX-NEXT:    vpblendmq %zmm2, %zmm1, %zmm0 {%k1}594; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0595; NoVLX-NEXT:    retq596  %mask = icmp sgt <2 x i64> %x, %y597  %max = select <2 x i1> %mask, <2 x i64> %x1, <2 x i64> %y598  ret <2 x i64> %max599}600 601define <4 x i32> @test128_3(<4 x i32> %x, <4 x i32> %y, <4 x i32> %x1) nounwind {602; VLX-LABEL: test128_3:603; VLX:       # %bb.0:604; VLX-NEXT:    vpcmpnltd %xmm1, %xmm0, %k1605; VLX-NEXT:    vpblendmd %xmm2, %xmm1, %xmm0 {%k1}606; VLX-NEXT:    retq607;608; NoVLX-LABEL: test128_3:609; NoVLX:       # %bb.0:610; NoVLX-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2611; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1612; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0613; NoVLX-NEXT:    vpcmpnltd %zmm1, %zmm0, %k1614; NoVLX-NEXT:    vpblendmd %zmm2, %zmm1, %zmm0 {%k1}615; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0616; NoVLX-NEXT:    retq617  %mask = icmp sge <4 x i32> %x, %y618  %max = select <4 x i1> %mask, <4 x i32> %x1, <4 x i32> %y619  ret <4 x i32> %max620}621 622define <2 x i64> @test128_4(<2 x i64> %x, <2 x i64> %y, <2 x i64> %x1) nounwind {623; VLX-LABEL: test128_4:624; VLX:       # %bb.0:625; VLX-NEXT:    vpcmpnleuq %xmm1, %xmm0, %k1626; VLX-NEXT:    vpblendmq %xmm2, %xmm1, %xmm0 {%k1}627; VLX-NEXT:    retq628;629; NoVLX-LABEL: test128_4:630; NoVLX:       # %bb.0:631; NoVLX-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2632; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1633; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0634; NoVLX-NEXT:    vpcmpnleuq %zmm1, %zmm0, %k1635; NoVLX-NEXT:    vpblendmq %zmm2, %zmm1, %zmm0 {%k1}636; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0637; NoVLX-NEXT:    retq638  %mask = icmp ugt <2 x i64> %x, %y639  %max = select <2 x i1> %mask, <2 x i64> %x1, <2 x i64> %y640  ret <2 x i64> %max641}642 643define <4 x i32> @test128_5(<4 x i32> %x, <4 x i32> %x1, ptr %yp) nounwind {644; VLX-LABEL: test128_5:645; VLX:       # %bb.0:646; VLX-NEXT:    vpcmpeqd (%rdi), %xmm0, %k1647; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}648; VLX-NEXT:    retq649;650; NoVLX-LABEL: test128_5:651; NoVLX:       # %bb.0:652; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1653; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0654; NoVLX-NEXT:    vmovdqu (%rdi), %xmm2655; NoVLX-NEXT:    vpcmpeqd %zmm2, %zmm0, %k1656; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}657; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0658; NoVLX-NEXT:    retq659  %y = load <4 x i32>, ptr %yp, align 4660  %mask = icmp eq <4 x i32> %x, %y661  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1662  ret <4 x i32> %max663}664 665define <4 x i32> @test128_5b(<4 x i32> %x, <4 x i32> %x1, ptr %yp) nounwind {666; VLX-LABEL: test128_5b:667; VLX:       # %bb.0:668; VLX-NEXT:    vpcmpeqd (%rdi), %xmm0, %k1669; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}670; VLX-NEXT:    retq671;672; NoVLX-LABEL: test128_5b:673; NoVLX:       # %bb.0:674; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1675; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0676; NoVLX-NEXT:    vmovdqu (%rdi), %xmm2677; NoVLX-NEXT:    vpcmpeqd %zmm0, %zmm2, %k1678; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}679; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0680; NoVLX-NEXT:    retq681  %y = load <4 x i32>, ptr %yp, align 4682  %mask = icmp eq <4 x i32> %y, %x683  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1684  ret <4 x i32> %max685}686 687define <4 x i32> @test128_6(<4 x i32> %x, <4 x i32> %x1, ptr %y.ptr) nounwind {688; VLX-LABEL: test128_6:689; VLX:       # %bb.0:690; VLX-NEXT:    vpcmpgtd (%rdi), %xmm0, %k1691; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}692; VLX-NEXT:    retq693;694; NoVLX-LABEL: test128_6:695; NoVLX:       # %bb.0:696; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1697; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0698; NoVLX-NEXT:    vmovdqu (%rdi), %xmm2699; NoVLX-NEXT:    vpcmpgtd %zmm2, %zmm0, %k1700; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}701; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0702; NoVLX-NEXT:    retq703  %y = load <4 x i32>, ptr %y.ptr, align 4704  %mask = icmp sgt <4 x i32> %x, %y705  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1706  ret <4 x i32> %max707}708 709define <4 x i32> @test128_6b(<4 x i32> %x, <4 x i32> %x1, ptr %y.ptr) nounwind {710; VLX-LABEL: test128_6b:711; VLX:       # %bb.0:712; VLX-NEXT:    vpcmpgtd (%rdi), %xmm0, %k1713; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}714; VLX-NEXT:    retq715;716; NoVLX-LABEL: test128_6b:717; NoVLX:       # %bb.0:718; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1719; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0720; NoVLX-NEXT:    vmovdqu (%rdi), %xmm2721; NoVLX-NEXT:    vpcmpgtd %zmm2, %zmm0, %k1722; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}723; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0724; NoVLX-NEXT:    retq725  %y = load <4 x i32>, ptr %y.ptr, align 4726  %mask = icmp slt <4 x i32> %y, %x727  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1728  ret <4 x i32> %max729}730 731define <4 x i32> @test128_7(<4 x i32> %x, <4 x i32> %x1, ptr %y.ptr) nounwind {732; VLX-LABEL: test128_7:733; VLX:       # %bb.0:734; VLX-NEXT:    vpcmpled (%rdi), %xmm0, %k1735; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}736; VLX-NEXT:    retq737;738; NoVLX-LABEL: test128_7:739; NoVLX:       # %bb.0:740; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1741; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0742; NoVLX-NEXT:    vmovdqu (%rdi), %xmm2743; NoVLX-NEXT:    vpcmpled %zmm2, %zmm0, %k1744; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}745; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0746; NoVLX-NEXT:    retq747  %y = load <4 x i32>, ptr %y.ptr, align 4748  %mask = icmp sle <4 x i32> %x, %y749  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1750  ret <4 x i32> %max751}752 753define <4 x i32> @test128_7b(<4 x i32> %x, <4 x i32> %x1, ptr %y.ptr) nounwind {754; VLX-LABEL: test128_7b:755; VLX:       # %bb.0:756; VLX-NEXT:    vpcmpled (%rdi), %xmm0, %k1757; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}758; VLX-NEXT:    retq759;760; NoVLX-LABEL: test128_7b:761; NoVLX:       # %bb.0:762; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1763; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0764; NoVLX-NEXT:    vmovdqu (%rdi), %xmm2765; NoVLX-NEXT:    vpcmpnltd %zmm0, %zmm2, %k1766; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}767; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0768; NoVLX-NEXT:    retq769  %y = load <4 x i32>, ptr %y.ptr, align 4770  %mask = icmp sge <4 x i32> %y, %x771  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1772  ret <4 x i32> %max773}774 775define <4 x i32> @test128_8(<4 x i32> %x, <4 x i32> %x1, ptr %y.ptr) nounwind {776; VLX-LABEL: test128_8:777; VLX:       # %bb.0:778; VLX-NEXT:    vpcmpleud (%rdi), %xmm0, %k1779; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}780; VLX-NEXT:    retq781;782; NoVLX-LABEL: test128_8:783; NoVLX:       # %bb.0:784; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1785; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0786; NoVLX-NEXT:    vmovdqu (%rdi), %xmm2787; NoVLX-NEXT:    vpcmpleud %zmm2, %zmm0, %k1788; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}789; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0790; NoVLX-NEXT:    retq791  %y = load <4 x i32>, ptr %y.ptr, align 4792  %mask = icmp ule <4 x i32> %x, %y793  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1794  ret <4 x i32> %max795}796 797define <4 x i32> @test128_8b(<4 x i32> %x, <4 x i32> %x1, ptr %y.ptr) nounwind {798; VLX-LABEL: test128_8b:799; VLX:       # %bb.0:800; VLX-NEXT:    vpcmpleud (%rdi), %xmm0, %k1801; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}802; VLX-NEXT:    retq803;804; NoVLX-LABEL: test128_8b:805; NoVLX:       # %bb.0:806; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1807; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0808; NoVLX-NEXT:    vmovdqu (%rdi), %xmm2809; NoVLX-NEXT:    vpcmpnltud %zmm0, %zmm2, %k1810; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}811; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0812; NoVLX-NEXT:    retq813  %y = load <4 x i32>, ptr %y.ptr, align 4814  %mask = icmp uge <4 x i32> %y, %x815  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1816  ret <4 x i32> %max817}818 819define <4 x i32> @test128_9(<4 x i32> %x, <4 x i32> %y, <4 x i32> %x1, <4 x i32> %y1) nounwind {820; VLX-LABEL: test128_9:821; VLX:       # %bb.0:822; VLX-NEXT:    vpcmpeqd %xmm1, %xmm0, %k1823; VLX-NEXT:    vpcmpeqd %xmm3, %xmm2, %k1 {%k1}824; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}825; VLX-NEXT:    retq826;827; NoVLX-LABEL: test128_9:828; NoVLX:       # %bb.0:829; NoVLX-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3830; NoVLX-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2831; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1832; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0833; NoVLX-NEXT:    vpcmpeqd %zmm1, %zmm0, %k1834; NoVLX-NEXT:    vpcmpeqd %zmm3, %zmm2, %k1 {%k1}835; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}836; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0837; NoVLX-NEXT:    retq838  %mask1 = icmp eq <4 x i32> %x1, %y1839  %mask0 = icmp eq <4 x i32> %x, %y840  %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer841  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %y842  ret <4 x i32> %max843}844 845define <2 x i64> @test128_10(<2 x i64> %x, <2 x i64> %y, <2 x i64> %x1, <2 x i64> %y1) nounwind {846; VLX-LABEL: test128_10:847; VLX:       # %bb.0:848; VLX-NEXT:    vpcmpleq %xmm1, %xmm0, %k1849; VLX-NEXT:    vpcmpnltq %xmm3, %xmm2, %k1 {%k1}850; VLX-NEXT:    vpblendmq %xmm0, %xmm2, %xmm0 {%k1}851; VLX-NEXT:    retq852;853; NoVLX-LABEL: test128_10:854; NoVLX:       # %bb.0:855; NoVLX-NEXT:    # kill: def $xmm3 killed $xmm3 def $zmm3856; NoVLX-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2857; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1858; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0859; NoVLX-NEXT:    vpcmpleq %zmm1, %zmm0, %k1860; NoVLX-NEXT:    vpcmpnltq %zmm3, %zmm2, %k1 {%k1}861; NoVLX-NEXT:    vpblendmq %zmm0, %zmm2, %zmm0 {%k1}862; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0863; NoVLX-NEXT:    retq864  %mask1 = icmp sge <2 x i64> %x1, %y1865  %mask0 = icmp sle <2 x i64> %x, %y866  %mask = select <2 x i1> %mask0, <2 x i1> %mask1, <2 x i1> zeroinitializer867  %max = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> %x1868  ret <2 x i64> %max869}870 871define <2 x i64> @test128_11(<2 x i64> %x, ptr %y.ptr, <2 x i64> %x1, <2 x i64> %y1) nounwind {872; VLX-LABEL: test128_11:873; VLX:       # %bb.0:874; VLX-NEXT:    vpcmpgtq %xmm2, %xmm1, %k1875; VLX-NEXT:    vpcmpgtq (%rdi), %xmm0, %k1 {%k1}876; VLX-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}877; VLX-NEXT:    retq878;879; NoVLX-LABEL: test128_11:880; NoVLX:       # %bb.0:881; NoVLX-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2882; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1883; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0884; NoVLX-NEXT:    vmovdqu (%rdi), %xmm3885; NoVLX-NEXT:    vpcmpgtq %zmm3, %zmm0, %k1886; NoVLX-NEXT:    vpcmpgtq %zmm2, %zmm1, %k1 {%k1}887; NoVLX-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}888; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0889; NoVLX-NEXT:    retq890  %mask1 = icmp sgt <2 x i64> %x1, %y1891  %y = load <2 x i64>, ptr %y.ptr, align 4892  %mask0 = icmp sgt <2 x i64> %x, %y893  %mask = select <2 x i1> %mask0, <2 x i1> %mask1, <2 x i1> zeroinitializer894  %max = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> %x1895  ret <2 x i64> %max896}897 898define <4 x i32> @test128_12(<4 x i32> %x, ptr %y.ptr, <4 x i32> %x1, <4 x i32> %y1) nounwind {899; VLX-LABEL: test128_12:900; VLX:       # %bb.0:901; VLX-NEXT:    vpcmpnltd %xmm2, %xmm1, %k1902; VLX-NEXT:    vpcmpleud (%rdi), %xmm0, %k1 {%k1}903; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}904; VLX-NEXT:    retq905;906; NoVLX-LABEL: test128_12:907; NoVLX:       # %bb.0:908; NoVLX-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2909; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1910; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0911; NoVLX-NEXT:    vmovdqu (%rdi), %xmm3912; NoVLX-NEXT:    vpcmpleud %zmm3, %zmm0, %k1913; NoVLX-NEXT:    vpcmpnltd %zmm2, %zmm1, %k1 {%k1}914; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}915; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0916; NoVLX-NEXT:    retq917  %mask1 = icmp sge <4 x i32> %x1, %y1918  %y = load <4 x i32>, ptr %y.ptr, align 4919  %mask0 = icmp ule <4 x i32> %x, %y920  %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer921  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1922  ret <4 x i32> %max923}924 925define <2 x i64> @test128_13(<2 x i64> %x, <2 x i64> %x1, ptr %yb.ptr) nounwind {926; VLX-LABEL: test128_13:927; VLX:       # %bb.0:928; VLX-NEXT:    vpcmpeqq (%rdi){1to2}, %xmm0, %k1929; VLX-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}930; VLX-NEXT:    retq931;932; NoVLX-LABEL: test128_13:933; NoVLX:       # %bb.0:934; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1935; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0936; NoVLX-NEXT:    vpcmpeqq (%rdi){1to8}, %zmm0, %k1937; NoVLX-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}938; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0939; NoVLX-NEXT:    retq940  %yb = load i64, ptr %yb.ptr, align 4941  %y.0 = insertelement <2 x i64> undef, i64 %yb, i32 0942  %y = insertelement <2 x i64> %y.0, i64 %yb, i32 1943  %mask = icmp eq <2 x i64> %x, %y944  %max = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> %x1945  ret <2 x i64> %max946}947 948define <4 x i32> @test128_14(<4 x i32> %x, ptr %yb.ptr, <4 x i32> %x1) nounwind {949; VLX-LABEL: test128_14:950; VLX:       # %bb.0:951; VLX-NEXT:    vpcmpled (%rdi){1to4}, %xmm0, %k1952; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}953; VLX-NEXT:    retq954;955; NoVLX-LABEL: test128_14:956; NoVLX:       # %bb.0:957; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1958; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0959; NoVLX-NEXT:    vpcmpled (%rdi){1to16}, %zmm0, %k1960; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}961; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0962; NoVLX-NEXT:    retq963  %yb = load i32, ptr %yb.ptr, align 4964  %y.0 = insertelement <4 x i32> undef, i32 %yb, i32 0965  %y = shufflevector <4 x i32> %y.0, <4 x i32> undef, <4 x i32> zeroinitializer966  %mask = icmp sle <4 x i32> %x, %y967  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1968  ret <4 x i32> %max969}970 971define <4 x i32> @test128_15(<4 x i32> %x, ptr %yb.ptr, <4 x i32> %x1, <4 x i32> %y1) nounwind {972; VLX-LABEL: test128_15:973; VLX:       # %bb.0:974; VLX-NEXT:    vpcmpnltd %xmm2, %xmm1, %k1975; VLX-NEXT:    vpcmpgtd (%rdi){1to4}, %xmm0, %k1 {%k1}976; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}977; VLX-NEXT:    retq978;979; NoVLX-LABEL: test128_15:980; NoVLX:       # %bb.0:981; NoVLX-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm2982; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm1983; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm0984; NoVLX-NEXT:    vpcmpnltd %zmm2, %zmm1, %k1985; NoVLX-NEXT:    vpcmpgtd (%rdi){1to16}, %zmm0, %k1 {%k1}986; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}987; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm0988; NoVLX-NEXT:    retq989  %mask1 = icmp sge <4 x i32> %x1, %y1990  %yb = load i32, ptr %yb.ptr, align 4991  %y.0 = insertelement <4 x i32> undef, i32 %yb, i32 0992  %y = shufflevector <4 x i32> %y.0, <4 x i32> undef, <4 x i32> zeroinitializer993  %mask0 = icmp sgt <4 x i32> %x, %y994  %mask = select <4 x i1> %mask0, <4 x i1> %mask1, <4 x i1> zeroinitializer995  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x1996  ret <4 x i32> %max997}998 999define <2 x i64> @test128_16(<2 x i64> %x, ptr %yb.ptr, <2 x i64> %x1, <2 x i64> %y1) nounwind {1000; VLX-LABEL: test128_16:1001; VLX:       # %bb.0:1002; VLX-NEXT:    vpcmpnltq %xmm2, %xmm1, %k11003; VLX-NEXT:    vpcmpgtq (%rdi){1to2}, %xmm0, %k1 {%k1}1004; VLX-NEXT:    vpblendmq %xmm0, %xmm1, %xmm0 {%k1}1005; VLX-NEXT:    retq1006;1007; NoVLX-LABEL: test128_16:1008; NoVLX:       # %bb.0:1009; NoVLX-NEXT:    # kill: def $xmm2 killed $xmm2 def $zmm21010; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11011; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01012; NoVLX-NEXT:    vpcmpnltq %zmm2, %zmm1, %k11013; NoVLX-NEXT:    vpcmpgtq (%rdi){1to8}, %zmm0, %k1 {%k1}1014; NoVLX-NEXT:    vpblendmq %zmm0, %zmm1, %zmm0 {%k1}1015; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01016; NoVLX-NEXT:    retq1017  %mask1 = icmp sge <2 x i64> %x1, %y11018  %yb = load i64, ptr %yb.ptr, align 41019  %y.0 = insertelement <2 x i64> undef, i64 %yb, i32 01020  %y = insertelement <2 x i64> %y.0, i64 %yb, i32 11021  %mask0 = icmp sgt <2 x i64> %x, %y1022  %mask = select <2 x i1> %mask0, <2 x i1> %mask1, <2 x i1> zeroinitializer1023  %max = select <2 x i1> %mask, <2 x i64> %x, <2 x i64> %x11024  ret <2 x i64> %max1025}1026 1027define <4 x i32> @test128_17(<4 x i32> %x, <4 x i32> %x1, ptr %y.ptr) nounwind {1028; VLX-LABEL: test128_17:1029; VLX:       # %bb.0:1030; VLX-NEXT:    vpcmpneqd (%rdi), %xmm0, %k11031; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1032; VLX-NEXT:    retq1033;1034; NoVLX-LABEL: test128_17:1035; NoVLX:       # %bb.0:1036; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11037; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01038; NoVLX-NEXT:    vmovdqu (%rdi), %xmm21039; NoVLX-NEXT:    vpcmpneqd %zmm2, %zmm0, %k11040; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1041; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01042; NoVLX-NEXT:    retq1043  %y = load <4 x i32>, ptr %y.ptr, align 41044  %mask = icmp ne <4 x i32> %x, %y1045  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x11046  ret <4 x i32> %max1047}1048 1049define <4 x i32> @test128_18(<4 x i32> %x, <4 x i32> %x1, ptr %y.ptr) nounwind {1050; VLX-LABEL: test128_18:1051; VLX:       # %bb.0:1052; VLX-NEXT:    vpcmpneqd (%rdi), %xmm0, %k11053; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1054; VLX-NEXT:    retq1055;1056; NoVLX-LABEL: test128_18:1057; NoVLX:       # %bb.0:1058; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11059; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01060; NoVLX-NEXT:    vmovdqu (%rdi), %xmm21061; NoVLX-NEXT:    vpcmpneqd %zmm0, %zmm2, %k11062; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1063; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01064; NoVLX-NEXT:    retq1065  %y = load <4 x i32>, ptr %y.ptr, align 41066  %mask = icmp ne <4 x i32> %y, %x1067  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x11068  ret <4 x i32> %max1069}1070 1071define <4 x i32> @test128_19(<4 x i32> %x, <4 x i32> %x1, ptr %y.ptr) nounwind {1072; VLX-LABEL: test128_19:1073; VLX:       # %bb.0:1074; VLX-NEXT:    vpcmpnltud (%rdi), %xmm0, %k11075; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1076; VLX-NEXT:    retq1077;1078; NoVLX-LABEL: test128_19:1079; NoVLX:       # %bb.0:1080; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11081; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01082; NoVLX-NEXT:    vmovdqu (%rdi), %xmm21083; NoVLX-NEXT:    vpcmpnltud %zmm2, %zmm0, %k11084; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1085; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01086; NoVLX-NEXT:    retq1087  %y = load <4 x i32>, ptr %y.ptr, align 41088  %mask = icmp uge <4 x i32> %x, %y1089  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x11090  ret <4 x i32> %max1091}1092 1093define <4 x i32> @test128_20(<4 x i32> %x, <4 x i32> %x1, ptr %y.ptr) nounwind {1094; VLX-LABEL: test128_20:1095; VLX:       # %bb.0:1096; VLX-NEXT:    vpcmpleud (%rdi), %xmm0, %k11097; VLX-NEXT:    vpblendmd %xmm0, %xmm1, %xmm0 {%k1}1098; VLX-NEXT:    retq1099;1100; NoVLX-LABEL: test128_20:1101; NoVLX:       # %bb.0:1102; NoVLX-NEXT:    # kill: def $xmm1 killed $xmm1 def $zmm11103; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 def $zmm01104; NoVLX-NEXT:    vmovdqu (%rdi), %xmm21105; NoVLX-NEXT:    vpcmpnltud %zmm0, %zmm2, %k11106; NoVLX-NEXT:    vpblendmd %zmm0, %zmm1, %zmm0 {%k1}1107; NoVLX-NEXT:    # kill: def $xmm0 killed $xmm0 killed $zmm01108; NoVLX-NEXT:    retq1109  %y = load <4 x i32>, ptr %y.ptr, align 41110  %mask = icmp uge <4 x i32> %y, %x1111  %max = select <4 x i1> %mask, <4 x i32> %x, <4 x i32> %x11112  ret <4 x i32> %max1113}1114 1115define <8 x i32> @testnm_and(<8 x i32> %a, <8 x i32> %b, <8 x i32> %x, <8 x i32> %y) {1116; VLX-LABEL: testnm_and:1117; VLX:       # %bb.0:1118; VLX-NEXT:    vpor %ymm1, %ymm0, %ymm01119; VLX-NEXT:    vptestnmd %ymm0, %ymm0, %k11120; VLX-NEXT:    vpblendmd %ymm2, %ymm3, %ymm0 {%k1}1121; VLX-NEXT:    retq1122;1123; NoVLX-LABEL: testnm_and:1124; NoVLX:       # %bb.0:1125; NoVLX-NEXT:    # kill: def $ymm3 killed $ymm3 def $zmm31126; NoVLX-NEXT:    # kill: def $ymm2 killed $ymm2 def $zmm21127; NoVLX-NEXT:    vpor %ymm1, %ymm0, %ymm01128; NoVLX-NEXT:    vptestnmd %zmm0, %zmm0, %k11129; NoVLX-NEXT:    vpblendmd %zmm2, %zmm3, %zmm0 {%k1}1130; NoVLX-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm01131; NoVLX-NEXT:    retq1132  %c = icmp eq <8 x i32> %a, zeroinitializer1133  %d = icmp eq <8 x i32> %b, zeroinitializer1134  %e = and <8 x i1> %c, %d1135  %z = select <8 x i1> %e, <8 x i32> %x, <8 x i32> %y1136  ret <8 x i32> %z1137}1138