brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.8 KiB · ee75083 Raw
303 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=skx | FileCheck %s3 4define <32 x i8> @test256_1(<32 x i8> %x, <32 x i8> %y) nounwind {5; CHECK-LABEL: test256_1:6; CHECK:       ## %bb.0:7; CHECK-NEXT:    vpcmpeqb %ymm1, %ymm0, %k18; CHECK-NEXT:    vpblendmb %ymm0, %ymm1, %ymm0 {%k1}9; CHECK-NEXT:    retq10  %mask = icmp eq <32 x i8> %x, %y11  %max = select <32 x i1> %mask, <32 x i8> %x, <32 x i8> %y12  ret <32 x i8> %max13}14 15define <32 x i8> @test256_2(<32 x i8> %x, <32 x i8> %y, <32 x i8> %x1) nounwind {16; CHECK-LABEL: test256_2:17; CHECK:       ## %bb.0:18; CHECK-NEXT:    vpcmpgtb %ymm1, %ymm0, %k119; CHECK-NEXT:    vpblendmb %ymm0, %ymm2, %ymm0 {%k1}20; CHECK-NEXT:    retq21  %mask = icmp sgt <32 x i8> %x, %y22  %max = select <32 x i1> %mask, <32 x i8> %x, <32 x i8> %x123  ret <32 x i8> %max24}25 26define <16 x i16> @test256_3(<16 x i16> %x, <16 x i16> %y, <16 x i16> %x1) nounwind {27; CHECK-LABEL: test256_3:28; CHECK:       ## %bb.0:29; CHECK-NEXT:    vpcmpnltw %ymm1, %ymm0, %k130; CHECK-NEXT:    vpblendmw %ymm2, %ymm1, %ymm0 {%k1}31; CHECK-NEXT:    retq32  %mask = icmp sge <16 x i16> %x, %y33  %max = select <16 x i1> %mask, <16 x i16> %x1, <16 x i16> %y34  ret <16 x i16> %max35}36 37define <32 x i8> @test256_4(<32 x i8> %x, <32 x i8> %y, <32 x i8> %x1) nounwind {38; CHECK-LABEL: test256_4:39; CHECK:       ## %bb.0:40; CHECK-NEXT:    vpcmpnleub %ymm1, %ymm0, %k141; CHECK-NEXT:    vpblendmb %ymm0, %ymm2, %ymm0 {%k1}42; CHECK-NEXT:    retq43  %mask = icmp ugt <32 x i8> %x, %y44  %max = select <32 x i1> %mask, <32 x i8> %x, <32 x i8> %x145  ret <32 x i8> %max46}47 48define <16 x i16> @test256_5(<16 x i16> %x, <16 x i16> %x1, ptr %yp) nounwind {49; CHECK-LABEL: test256_5:50; CHECK:       ## %bb.0:51; CHECK-NEXT:    vpcmpeqw (%rdi), %ymm0, %k152; CHECK-NEXT:    vpblendmw %ymm0, %ymm1, %ymm0 {%k1}53; CHECK-NEXT:    retq54  %y = load <16 x i16>, ptr %yp, align 455  %mask = icmp eq <16 x i16> %x, %y56  %max = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> %x157  ret <16 x i16> %max58}59 60define <16 x i16> @test256_6(<16 x i16> %x, <16 x i16> %x1, ptr %y.ptr) nounwind {61; CHECK-LABEL: test256_6:62; CHECK:       ## %bb.0:63; CHECK-NEXT:    vpcmpgtw (%rdi), %ymm0, %k164; CHECK-NEXT:    vpblendmw %ymm0, %ymm1, %ymm0 {%k1}65; CHECK-NEXT:    retq66  %y = load <16 x i16>, ptr %y.ptr, align 467  %mask = icmp sgt <16 x i16> %x, %y68  %max = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> %x169  ret <16 x i16> %max70}71 72define <16 x i16> @test256_7(<16 x i16> %x, <16 x i16> %x1, ptr %y.ptr) nounwind {73; CHECK-LABEL: test256_7:74; CHECK:       ## %bb.0:75; CHECK-NEXT:    vpcmplew (%rdi), %ymm0, %k176; CHECK-NEXT:    vpblendmw %ymm0, %ymm1, %ymm0 {%k1}77; CHECK-NEXT:    retq78  %y = load <16 x i16>, ptr %y.ptr, align 479  %mask = icmp sle <16 x i16> %x, %y80  %max = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> %x181  ret <16 x i16> %max82}83 84define <16 x i16> @test256_8(<16 x i16> %x, <16 x i16> %x1, ptr %y.ptr) nounwind {85; CHECK-LABEL: test256_8:86; CHECK:       ## %bb.0:87; CHECK-NEXT:    vpcmpleuw (%rdi), %ymm0, %k188; CHECK-NEXT:    vpblendmw %ymm0, %ymm1, %ymm0 {%k1}89; CHECK-NEXT:    retq90  %y = load <16 x i16>, ptr %y.ptr, align 491  %mask = icmp ule <16 x i16> %x, %y92  %max = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> %x193  ret <16 x i16> %max94}95 96define <16 x i16> @test256_9(<16 x i16> %x, <16 x i16> %y, <16 x i16> %x1, <16 x i16> %y1) nounwind {97; CHECK-LABEL: test256_9:98; CHECK:       ## %bb.0:99; CHECK-NEXT:    vpcmpeqw %ymm1, %ymm0, %k1100; CHECK-NEXT:    vpcmpeqw %ymm3, %ymm2, %k1 {%k1}101; CHECK-NEXT:    vpblendmw %ymm0, %ymm1, %ymm0 {%k1}102; CHECK-NEXT:    retq103  %mask1 = icmp eq <16 x i16> %x1, %y1104  %mask0 = icmp eq <16 x i16> %x, %y105  %mask = select <16 x i1> %mask0, <16 x i1> %mask1, <16 x i1> zeroinitializer106  %max = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> %y107  ret <16 x i16> %max108}109 110define <32 x i8> @test256_10(<32 x i8> %x, <32 x i8> %y, <32 x i8> %x1, <32 x i8> %y1) nounwind {111; CHECK-LABEL: test256_10:112; CHECK:       ## %bb.0:113; CHECK-NEXT:    vpcmpleb %ymm1, %ymm0, %k1114; CHECK-NEXT:    vpcmpnltb %ymm3, %ymm2, %k1 {%k1}115; CHECK-NEXT:    vpblendmb %ymm0, %ymm2, %ymm0 {%k1}116; CHECK-NEXT:    retq117  %mask1 = icmp sge <32 x i8> %x1, %y1118  %mask0 = icmp sle <32 x i8> %x, %y119  %mask = select <32 x i1> %mask0, <32 x i1> %mask1, <32 x i1> zeroinitializer120  %max = select <32 x i1> %mask, <32 x i8> %x, <32 x i8> %x1121  ret <32 x i8> %max122}123 124define <32 x i8> @test256_11(<32 x i8> %x, ptr %y.ptr, <32 x i8> %x1, <32 x i8> %y1) nounwind {125; CHECK-LABEL: test256_11:126; CHECK:       ## %bb.0:127; CHECK-NEXT:    vpcmpgtb %ymm2, %ymm1, %k1128; CHECK-NEXT:    vpcmpgtb (%rdi), %ymm0, %k1 {%k1}129; CHECK-NEXT:    vpblendmb %ymm0, %ymm1, %ymm0 {%k1}130; CHECK-NEXT:    retq131  %mask1 = icmp sgt <32 x i8> %x1, %y1132  %y = load <32 x i8>, ptr %y.ptr, align 4133  %mask0 = icmp sgt <32 x i8> %x, %y134  %mask = select <32 x i1> %mask0, <32 x i1> %mask1, <32 x i1> zeroinitializer135  %max = select <32 x i1> %mask, <32 x i8> %x, <32 x i8> %x1136  ret <32 x i8> %max137}138 139define <16 x i16> @test256_12(<16 x i16> %x, ptr %y.ptr, <16 x i16> %x1, <16 x i16> %y1) nounwind {140; CHECK-LABEL: test256_12:141; CHECK:       ## %bb.0:142; CHECK-NEXT:    vpcmpnltw %ymm2, %ymm1, %k1143; CHECK-NEXT:    vpcmpleuw (%rdi), %ymm0, %k1 {%k1}144; CHECK-NEXT:    vpblendmw %ymm0, %ymm1, %ymm0 {%k1}145; CHECK-NEXT:    retq146  %mask1 = icmp sge <16 x i16> %x1, %y1147  %y = load <16 x i16>, ptr %y.ptr, align 4148  %mask0 = icmp ule <16 x i16> %x, %y149  %mask = select <16 x i1> %mask0, <16 x i1> %mask1, <16 x i1> zeroinitializer150  %max = select <16 x i1> %mask, <16 x i16> %x, <16 x i16> %x1151  ret <16 x i16> %max152}153 154define <16 x i8> @test128_1(<16 x i8> %x, <16 x i8> %y) nounwind {155; CHECK-LABEL: test128_1:156; CHECK:       ## %bb.0:157; CHECK-NEXT:    vpcmpeqb %xmm1, %xmm0, %k1158; CHECK-NEXT:    vpblendmb %xmm0, %xmm1, %xmm0 {%k1}159; CHECK-NEXT:    retq160  %mask = icmp eq <16 x i8> %x, %y161  %max = select <16 x i1> %mask, <16 x i8> %x, <16 x i8> %y162  ret <16 x i8> %max163}164 165define <16 x i8> @test128_2(<16 x i8> %x, <16 x i8> %y, <16 x i8> %x1) nounwind {166; CHECK-LABEL: test128_2:167; CHECK:       ## %bb.0:168; CHECK-NEXT:    vpcmpgtb %xmm1, %xmm0, %k1169; CHECK-NEXT:    vpblendmb %xmm0, %xmm2, %xmm0 {%k1}170; CHECK-NEXT:    retq171  %mask = icmp sgt <16 x i8> %x, %y172  %max = select <16 x i1> %mask, <16 x i8> %x, <16 x i8> %x1173  ret <16 x i8> %max174}175 176define <8 x i16> @test128_3(<8 x i16> %x, <8 x i16> %y, <8 x i16> %x1) nounwind {177; CHECK-LABEL: test128_3:178; CHECK:       ## %bb.0:179; CHECK-NEXT:    vpcmpnltw %xmm1, %xmm0, %k1180; CHECK-NEXT:    vpblendmw %xmm2, %xmm1, %xmm0 {%k1}181; CHECK-NEXT:    retq182  %mask = icmp sge <8 x i16> %x, %y183  %max = select <8 x i1> %mask, <8 x i16> %x1, <8 x i16> %y184  ret <8 x i16> %max185}186 187define <16 x i8> @test128_4(<16 x i8> %x, <16 x i8> %y, <16 x i8> %x1) nounwind {188; CHECK-LABEL: test128_4:189; CHECK:       ## %bb.0:190; CHECK-NEXT:    vpcmpnleub %xmm1, %xmm0, %k1191; CHECK-NEXT:    vpblendmb %xmm0, %xmm2, %xmm0 {%k1}192; CHECK-NEXT:    retq193  %mask = icmp ugt <16 x i8> %x, %y194  %max = select <16 x i1> %mask, <16 x i8> %x, <16 x i8> %x1195  ret <16 x i8> %max196}197 198define <8 x i16> @test128_5(<8 x i16> %x, <8 x i16> %x1, ptr %yp) nounwind {199; CHECK-LABEL: test128_5:200; CHECK:       ## %bb.0:201; CHECK-NEXT:    vpcmpeqw (%rdi), %xmm0, %k1202; CHECK-NEXT:    vpblendmw %xmm0, %xmm1, %xmm0 {%k1}203; CHECK-NEXT:    retq204  %y = load <8 x i16>, ptr %yp, align 4205  %mask = icmp eq <8 x i16> %x, %y206  %max = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> %x1207  ret <8 x i16> %max208}209 210define <8 x i16> @test128_6(<8 x i16> %x, <8 x i16> %x1, ptr %y.ptr) nounwind {211; CHECK-LABEL: test128_6:212; CHECK:       ## %bb.0:213; CHECK-NEXT:    vpcmpgtw (%rdi), %xmm0, %k1214; CHECK-NEXT:    vpblendmw %xmm0, %xmm1, %xmm0 {%k1}215; CHECK-NEXT:    retq216  %y = load <8 x i16>, ptr %y.ptr, align 4217  %mask = icmp sgt <8 x i16> %x, %y218  %max = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> %x1219  ret <8 x i16> %max220}221 222define <8 x i16> @test128_7(<8 x i16> %x, <8 x i16> %x1, ptr %y.ptr) nounwind {223; CHECK-LABEL: test128_7:224; CHECK:       ## %bb.0:225; CHECK-NEXT:    vpcmplew (%rdi), %xmm0, %k1226; CHECK-NEXT:    vpblendmw %xmm0, %xmm1, %xmm0 {%k1}227; CHECK-NEXT:    retq228  %y = load <8 x i16>, ptr %y.ptr, align 4229  %mask = icmp sle <8 x i16> %x, %y230  %max = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> %x1231  ret <8 x i16> %max232}233 234define <8 x i16> @test128_8(<8 x i16> %x, <8 x i16> %x1, ptr %y.ptr) nounwind {235; CHECK-LABEL: test128_8:236; CHECK:       ## %bb.0:237; CHECK-NEXT:    vpcmpleuw (%rdi), %xmm0, %k1238; CHECK-NEXT:    vpblendmw %xmm0, %xmm1, %xmm0 {%k1}239; CHECK-NEXT:    retq240  %y = load <8 x i16>, ptr %y.ptr, align 4241  %mask = icmp ule <8 x i16> %x, %y242  %max = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> %x1243  ret <8 x i16> %max244}245 246define <8 x i16> @test128_9(<8 x i16> %x, <8 x i16> %y, <8 x i16> %x1, <8 x i16> %y1) nounwind {247; CHECK-LABEL: test128_9:248; CHECK:       ## %bb.0:249; CHECK-NEXT:    vpcmpeqw %xmm1, %xmm0, %k1250; CHECK-NEXT:    vpcmpeqw %xmm3, %xmm2, %k1 {%k1}251; CHECK-NEXT:    vpblendmw %xmm0, %xmm1, %xmm0 {%k1}252; CHECK-NEXT:    retq253  %mask1 = icmp eq <8 x i16> %x1, %y1254  %mask0 = icmp eq <8 x i16> %x, %y255  %mask = select <8 x i1> %mask0, <8 x i1> %mask1, <8 x i1> zeroinitializer256  %max = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> %y257  ret <8 x i16> %max258}259 260define <16 x i8> @test128_10(<16 x i8> %x, <16 x i8> %y, <16 x i8> %x1, <16 x i8> %y1) nounwind {261; CHECK-LABEL: test128_10:262; CHECK:       ## %bb.0:263; CHECK-NEXT:    vpcmpleb %xmm1, %xmm0, %k1264; CHECK-NEXT:    vpcmpnltb %xmm3, %xmm2, %k1 {%k1}265; CHECK-NEXT:    vpblendmb %xmm0, %xmm2, %xmm0 {%k1}266; CHECK-NEXT:    retq267  %mask1 = icmp sge <16 x i8> %x1, %y1268  %mask0 = icmp sle <16 x i8> %x, %y269  %mask = select <16 x i1> %mask0, <16 x i1> %mask1, <16 x i1> zeroinitializer270  %max = select <16 x i1> %mask, <16 x i8> %x, <16 x i8> %x1271  ret <16 x i8> %max272}273 274define <16 x i8> @test128_11(<16 x i8> %x, ptr %y.ptr, <16 x i8> %x1, <16 x i8> %y1) nounwind {275; CHECK-LABEL: test128_11:276; CHECK:       ## %bb.0:277; CHECK-NEXT:    vpcmpgtb %xmm2, %xmm1, %k1278; CHECK-NEXT:    vpcmpgtb (%rdi), %xmm0, %k1 {%k1}279; CHECK-NEXT:    vpblendmb %xmm0, %xmm1, %xmm0 {%k1}280; CHECK-NEXT:    retq281  %mask1 = icmp sgt <16 x i8> %x1, %y1282  %y = load <16 x i8>, ptr %y.ptr, align 4283  %mask0 = icmp sgt <16 x i8> %x, %y284  %mask = select <16 x i1> %mask0, <16 x i1> %mask1, <16 x i1> zeroinitializer285  %max = select <16 x i1> %mask, <16 x i8> %x, <16 x i8> %x1286  ret <16 x i8> %max287}288 289define <8 x i16> @test128_12(<8 x i16> %x, ptr %y.ptr, <8 x i16> %x1, <8 x i16> %y1) nounwind {290; CHECK-LABEL: test128_12:291; CHECK:       ## %bb.0:292; CHECK-NEXT:    vpcmpnltw %xmm2, %xmm1, %k1293; CHECK-NEXT:    vpcmpleuw (%rdi), %xmm0, %k1 {%k1}294; CHECK-NEXT:    vpblendmw %xmm0, %xmm1, %xmm0 {%k1}295; CHECK-NEXT:    retq296  %mask1 = icmp sge <8 x i16> %x1, %y1297  %y = load <8 x i16>, ptr %y.ptr, align 4298  %mask0 = icmp ule <8 x i16> %x, %y299  %mask = select <8 x i1> %mask0, <8 x i1> %mask1, <8 x i1> zeroinitializer300  %max = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> %x1301  ret <8 x i16> %max302}303