brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.9 KiB · cb8850e Raw
249 lines · plain
1; Test usage of VBLEND on z17.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z17 | FileCheck %s4 5define <16 x i8> @f1(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3) {6; CHECK-LABEL: f1:7; CHECK: vblendb %v24, %v26, %v28, %v248; CHECK-NEXT: br %r149  %cmp = icmp slt <16 x i8> %val1, zeroinitializer10  %ret = select <16 x i1> %cmp, <16 x i8> %val2, <16 x i8> %val311  ret <16 x i8> %ret12}13 14define <16 x i8> @f2(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3) {15; CHECK-LABEL: f2:16; CHECK: vblendb %v24, %v28, %v26, %v2417; CHECK-NEXT: br %r1418  %cmp = icmp sge <16 x i8> %val1, zeroinitializer19  %ret = select <16 x i1> %cmp, <16 x i8> %val2, <16 x i8> %val320  ret <16 x i8> %ret21}22 23define <16 x i8> @f3(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3) {24; CHECK-LABEL: f3:25; CHECK: vblendb %v24, %v26, %v28, %v2426; CHECK-NEXT: br %r1427  %mask = and <16 x i8> %val1, <i8 128, i8 128, i8 128, i8 128,28                                i8 128, i8 128, i8 128, i8 128,29                                i8 128, i8 128, i8 128, i8 128,30                                i8 128, i8 128, i8 128, i8 128>;31  %cmp = icmp ne <16 x i8> %mask, zeroinitializer32  %ret = select <16 x i1> %cmp, <16 x i8> %val2, <16 x i8> %val333  ret <16 x i8> %ret34}35 36define <16 x i8> @f4(<16 x i8> %val1, <16 x i8> %val2, <16 x i8> %val3) {37; CHECK-LABEL: f4:38; CHECK: vblendb %v24, %v28, %v26, %v2439; CHECK-NEXT: br %r1440  %mask = and <16 x i8> %val1, <i8 128, i8 128, i8 128, i8 128,41                                i8 128, i8 128, i8 128, i8 128,42                                i8 128, i8 128, i8 128, i8 128,43                                i8 128, i8 128, i8 128, i8 128>;44  %cmp = icmp eq <16 x i8> %mask, zeroinitializer45  %ret = select <16 x i1> %cmp, <16 x i8> %val2, <16 x i8> %val346  ret <16 x i8> %ret47}48 49define <8 x i16> @f5(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3) {50; CHECK-LABEL: f5:51; CHECK: vblendh %v24, %v26, %v28, %v2452; CHECK-NEXT: br %r1453  %cmp = icmp slt <8 x i16> %val1, zeroinitializer54  %ret = select <8 x i1> %cmp, <8 x i16> %val2, <8 x i16> %val355  ret <8 x i16> %ret56}57 58define <8 x i16> @f6(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3) {59; CHECK-LABEL: f6:60; CHECK: vblendh %v24, %v28, %v26, %v2461; CHECK-NEXT: br %r1462  %cmp = icmp sge <8 x i16> %val1, zeroinitializer63  %ret = select <8 x i1> %cmp, <8 x i16> %val2, <8 x i16> %val364  ret <8 x i16> %ret65}66 67define <8 x i16> @f7(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3) {68; CHECK-LABEL: f7:69; CHECK: vblendh %v24, %v26, %v28, %v2470; CHECK-NEXT: br %r1471  %mask = and <8 x i16> %val1, <i16 32768, i16 32768, i16 32768, i16 32768,72                                i16 32768, i16 32768, i16 32768, i16 32768>;73  %cmp = icmp ne <8 x i16> %mask, zeroinitializer74  %ret = select <8 x i1> %cmp, <8 x i16> %val2, <8 x i16> %val375  ret <8 x i16> %ret76}77 78define <8 x i16> @f8(<8 x i16> %val1, <8 x i16> %val2, <8 x i16> %val3) {79; CHECK-LABEL: f8:80; CHECK: vblendh %v24, %v28, %v26, %v2481; CHECK-NEXT: br %r1482  %mask = and <8 x i16> %val1, <i16 32768, i16 32768, i16 32768, i16 32768,83                                i16 32768, i16 32768, i16 32768, i16 32768>;84  %cmp = icmp eq <8 x i16> %mask, zeroinitializer85  %ret = select <8 x i1> %cmp, <8 x i16> %val2, <8 x i16> %val386  ret <8 x i16> %ret87}88 89define <4 x i32> @f9(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3) {90; CHECK-LABEL: f9:91; CHECK: vblendf %v24, %v26, %v28, %v2492; CHECK-NEXT: br %r1493  %cmp = icmp slt <4 x i32> %val1, zeroinitializer94  %ret = select <4 x i1> %cmp, <4 x i32> %val2, <4 x i32> %val395  ret <4 x i32> %ret96}97 98define <4 x i32> @f10(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3) {99; CHECK-LABEL: f10:100; CHECK: vblendf %v24, %v28, %v26, %v24101; CHECK-NEXT: br %r14102  %cmp = icmp sge <4 x i32> %val1, zeroinitializer103  %ret = select <4 x i1> %cmp, <4 x i32> %val2, <4 x i32> %val3104  ret <4 x i32> %ret105}106 107define <4 x i32> @f11(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3) {108; CHECK-LABEL: f11:109; CHECK: vblendf %v24, %v26, %v28, %v24110; CHECK-NEXT: br %r14111  %mask = and <4 x i32> %val1, <i32 2147483648, i32 2147483648,112                                i32 2147483648, i32 2147483648>;113  %cmp = icmp ne <4 x i32> %mask, zeroinitializer114  %ret = select <4 x i1> %cmp, <4 x i32> %val2, <4 x i32> %val3115  ret <4 x i32> %ret116}117 118define <4 x i32> @f12(<4 x i32> %val1, <4 x i32> %val2, <4 x i32> %val3) {119; CHECK-LABEL: f12:120; CHECK: vblendf %v24, %v28, %v26, %v24121; CHECK-NEXT: br %r14122  %mask = and <4 x i32> %val1, <i32 2147483648, i32 2147483648,123                                i32 2147483648, i32 2147483648>;124  %cmp = icmp eq <4 x i32> %mask, zeroinitializer125  %ret = select <4 x i1> %cmp, <4 x i32> %val2, <4 x i32> %val3126  ret <4 x i32> %ret127}128 129define <2 x i64> @f13(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3) {130; CHECK-LABEL: f13:131; CHECK: vblendg %v24, %v26, %v28, %v24132; CHECK-NEXT: br %r14133  %cmp = icmp slt <2 x i64> %val1, zeroinitializer134  %ret = select <2 x i1> %cmp, <2 x i64> %val2, <2 x i64> %val3135  ret <2 x i64> %ret136}137 138define <2 x i64> @f14(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3) {139; CHECK-LABEL: f14:140; CHECK: vblendg %v24, %v28, %v26, %v24141; CHECK-NEXT: br %r14142  %cmp = icmp sge <2 x i64> %val1, zeroinitializer143  %ret = select <2 x i1> %cmp, <2 x i64> %val2, <2 x i64> %val3144  ret <2 x i64> %ret145}146 147define <2 x i64> @f15(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3) {148; CHECK-LABEL: f15:149; CHECK: vblendg %v24, %v26, %v28, %v24150; CHECK-NEXT: br %r14151  %mask = and <2 x i64> %val1, <i64 9223372036854775808,152                                i64 9223372036854775808>;153  %cmp = icmp ne <2 x i64> %mask, zeroinitializer154  %ret = select <2 x i1> %cmp, <2 x i64> %val2, <2 x i64> %val3155  ret <2 x i64> %ret156}157 158define <2 x i64> @f16(<2 x i64> %val1, <2 x i64> %val2, <2 x i64> %val3) {159; CHECK-LABEL: f16:160; CHECK: vblendg %v24, %v28, %v26, %v24161; CHECK-NEXT: br %r14162  %mask = and <2 x i64> %val1, <i64 9223372036854775808,163                                i64 9223372036854775808>;164  %cmp = icmp eq <2 x i64> %mask, zeroinitializer165  %ret = select <2 x i1> %cmp, <2 x i64> %val2, <2 x i64> %val3166  ret <2 x i64> %ret167}168 169define <4 x float> @f17(<4 x i32> %val1, <4 x float> %val2, <4 x float> %val3) {170; CHECK-LABEL: f17:171; CHECK: vblendf %v24, %v26, %v28, %v24172; CHECK-NEXT: br %r14173  %cmp = icmp slt <4 x i32> %val1, zeroinitializer174  %ret = select <4 x i1> %cmp, <4 x float> %val2, <4 x float> %val3175  ret <4 x float> %ret176}177 178define <4 x float> @f18(<4 x i32> %val1, <4 x float> %val2, <4 x float> %val3) {179; CHECK-LABEL: f18:180; CHECK: vblendf %v24, %v28, %v26, %v24181; CHECK-NEXT: br %r14182  %cmp = icmp sge <4 x i32> %val1, zeroinitializer183  %ret = select <4 x i1> %cmp, <4 x float> %val2, <4 x float> %val3184  ret <4 x float> %ret185}186 187define <4 x float> @f19(<4 x i32> %val1, <4 x float> %val2, <4 x float> %val3) {188; CHECK-LABEL: f19:189; CHECK: vblendf %v24, %v26, %v28, %v24190; CHECK-NEXT: br %r14191  %mask = and <4 x i32> %val1, <i32 2147483648, i32 2147483648,192                                i32 2147483648, i32 2147483648>;193  %cmp = icmp ne <4 x i32> %mask, zeroinitializer194  %ret = select <4 x i1> %cmp, <4 x float> %val2, <4 x float> %val3195  ret <4 x float> %ret196}197 198define <4 x float> @f20(<4 x i32> %val1, <4 x float> %val2, <4 x float> %val3) {199; CHECK-LABEL: f20:200; CHECK: vblendf %v24, %v28, %v26, %v24201; CHECK-NEXT: br %r14202  %mask = and <4 x i32> %val1, <i32 2147483648, i32 2147483648,203                                i32 2147483648, i32 2147483648>;204  %cmp = icmp eq <4 x i32> %mask, zeroinitializer205  %ret = select <4 x i1> %cmp, <4 x float> %val2, <4 x float> %val3206  ret <4 x float> %ret207}208 209define <2 x double> @f21(<2 x i64> %val1, <2 x double> %val2, <2 x double> %val3) {210; CHECK-LABEL: f21:211; CHECK: vblendg %v24, %v26, %v28, %v24212; CHECK-NEXT: br %r14213  %cmp = icmp slt <2 x i64> %val1, zeroinitializer214  %ret = select <2 x i1> %cmp, <2 x double> %val2, <2 x double> %val3215  ret <2 x double> %ret216}217 218define <2 x double> @f22(<2 x i64> %val1, <2 x double> %val2, <2 x double> %val3) {219; CHECK-LABEL: f22:220; CHECK: vblendg %v24, %v28, %v26, %v24221; CHECK-NEXT: br %r14222  %cmp = icmp sge <2 x i64> %val1, zeroinitializer223  %ret = select <2 x i1> %cmp, <2 x double> %val2, <2 x double> %val3224  ret <2 x double> %ret225}226 227define <2 x double> @f23(<2 x i64> %val1, <2 x double> %val2, <2 x double> %val3) {228; CHECK-LABEL: f23:229; CHECK: vblendg %v24, %v26, %v28, %v24230; CHECK-NEXT: br %r14231  %mask = and <2 x i64> %val1, <i64 9223372036854775808,232                                i64 9223372036854775808>;233  %cmp = icmp ne <2 x i64> %mask, zeroinitializer234  %ret = select <2 x i1> %cmp, <2 x double> %val2, <2 x double> %val3235  ret <2 x double> %ret236}237 238define <2 x double> @f24(<2 x i64> %val1, <2 x double> %val2, <2 x double> %val3) {239; CHECK-LABEL: f24:240; CHECK: vblendg %v24, %v28, %v26, %v24241; CHECK-NEXT: br %r14242  %mask = and <2 x i64> %val1, <i64 9223372036854775808,243                                i64 9223372036854775808>;244  %cmp = icmp eq <2 x i64> %mask, zeroinitializer245  %ret = select <2 x i1> %cmp, <2 x double> %val2, <2 x double> %val3246  ret <2 x double> %ret247}248 249