brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · 4beec05 Raw
176 lines · plain
1; Test vector splat.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s4 5; Test v16i8 splat of the first element.6define <16 x i8> @f1(<16 x i8> %val) {7; CHECK-LABEL: f1:8; CHECK: vrepb %v24, %v24, 09; CHECK: br %r1410  %ret = shufflevector <16 x i8> %val, <16 x i8> undef,11                       <16 x i32> zeroinitializer12  ret <16 x i8> %ret13}14 15; Test v16i8 splat of the last element.16define <16 x i8> @f2(<16 x i8> %val) {17; CHECK-LABEL: f2:18; CHECK: vrepb %v24, %v24, 1519; CHECK: br %r1420  %ret = shufflevector <16 x i8> %val, <16 x i8> undef,21                       <16 x i32> <i32 15, i32 15, i32 15, i32 15,22                                   i32 15, i32 15, i32 15, i32 15,23                                   i32 15, i32 15, i32 15, i32 15,24                                   i32 15, i32 15, i32 15, i32 15>25  ret <16 x i8> %ret26}27 28; Test v16i8 splat of an arbitrary element, using the second operand of29; the shufflevector.30define <16 x i8> @f3(<16 x i8> %val) {31; CHECK-LABEL: f3:32; CHECK: vrepb %v24, %v24, 433; CHECK: br %r1434  %ret = shufflevector <16 x i8> undef, <16 x i8> %val,35                       <16 x i32> <i32 20, i32 20, i32 20, i32 20,36                                   i32 20, i32 20, i32 20, i32 20,37                                   i32 20, i32 20, i32 20, i32 20,38                                   i32 20, i32 20, i32 20, i32 20>39  ret <16 x i8> %ret40}41 42; Test v8i16 splat of the first element.43define <8 x i16> @f4(<8 x i16> %val) {44; CHECK-LABEL: f4:45; CHECK: vreph %v24, %v24, 046; CHECK: br %r1447  %ret = shufflevector <8 x i16> %val, <8 x i16> undef,48                       <8 x i32> zeroinitializer49  ret <8 x i16> %ret50}51 52; Test v8i16 splat of the last element.53define <8 x i16> @f5(<8 x i16> %val) {54; CHECK-LABEL: f5:55; CHECK: vreph %v24, %v24, 756; CHECK: br %r1457  %ret = shufflevector <8 x i16> %val, <8 x i16> undef,58                       <8 x i32> <i32 7, i32 7, i32 7, i32 7,59                                  i32 7, i32 7, i32 7, i32 7>60  ret <8 x i16> %ret61}62 63; Test v8i16 splat of an arbitrary element, using the second operand of64; the shufflevector.65define <8 x i16> @f6(<8 x i16> %val) {66; CHECK-LABEL: f6:67; CHECK: vreph %v24, %v24, 268; CHECK: br %r1469  %ret = shufflevector <8 x i16> undef, <8 x i16> %val,70                       <8 x i32> <i32 10, i32 10, i32 10, i32 10,71                                  i32 10, i32 10, i32 10, i32 10>72  ret <8 x i16> %ret73}74 75; Test v4i32 splat of the first element.76define <4 x i32> @f7(<4 x i32> %val) {77; CHECK-LABEL: f7:78; CHECK: vrepf %v24, %v24, 079; CHECK: br %r1480  %ret = shufflevector <4 x i32> %val, <4 x i32> undef,81                       <4 x i32> zeroinitializer82  ret <4 x i32> %ret83}84 85; Test v4i32 splat of the last element.86define <4 x i32> @f8(<4 x i32> %val) {87; CHECK-LABEL: f8:88; CHECK: vrepf %v24, %v24, 389; CHECK: br %r1490  %ret = shufflevector <4 x i32> %val, <4 x i32> undef,91                       <4 x i32> <i32 3, i32 3, i32 3, i32 3>92  ret <4 x i32> %ret93}94 95; Test v4i32 splat of an arbitrary element, using the second operand of96; the shufflevector.97define <4 x i32> @f9(<4 x i32> %val) {98; CHECK-LABEL: f9:99; CHECK: vrepf %v24, %v24, 1100; CHECK: br %r14101  %ret = shufflevector <4 x i32> undef, <4 x i32> %val,102                       <4 x i32> <i32 5, i32 5, i32 5, i32 5>103  ret <4 x i32> %ret104}105 106; Test v2i64 splat of the first element.107define <2 x i64> @f10(<2 x i64> %val) {108; CHECK-LABEL: f10:109; CHECK: vrepg %v24, %v24, 0110; CHECK: br %r14111  %ret = shufflevector <2 x i64> %val, <2 x i64> undef,112                       <2 x i32> zeroinitializer113  ret <2 x i64> %ret114}115 116; Test v2i64 splat of the last element.117define <2 x i64> @f11(<2 x i64> %val) {118; CHECK-LABEL: f11:119; CHECK: vrepg %v24, %v24, 1120; CHECK: br %r14121  %ret = shufflevector <2 x i64> %val, <2 x i64> undef,122                       <2 x i32> <i32 1, i32 1>123  ret <2 x i64> %ret124}125 126; Test v4f32 splat of the first element.127define <4 x float> @f12(<4 x float> %val) {128; CHECK-LABEL: f12:129; CHECK: vrepf %v24, %v24, 0130; CHECK: br %r14131  %ret = shufflevector <4 x float> %val, <4 x float> undef,132                       <4 x i32> zeroinitializer133  ret <4 x float> %ret134}135 136; Test v4f32 splat of the last element.137define <4 x float> @f13(<4 x float> %val) {138; CHECK-LABEL: f13:139; CHECK: vrepf %v24, %v24, 3140; CHECK: br %r14141  %ret = shufflevector <4 x float> %val, <4 x float> undef,142                       <4 x i32> <i32 3, i32 3, i32 3, i32 3>143  ret <4 x float> %ret144}145 146; Test v4f32 splat of an arbitrary element, using the second operand of147; the shufflevector.148define <4 x float> @f14(<4 x float> %val) {149; CHECK-LABEL: f14:150; CHECK: vrepf %v24, %v24, 1151; CHECK: br %r14152  %ret = shufflevector <4 x float> undef, <4 x float> %val,153                       <4 x i32> <i32 5, i32 5, i32 5, i32 5>154  ret <4 x float> %ret155}156 157; Test v2f64 splat of the first element.158define <2 x double> @f15(<2 x double> %val) {159; CHECK-LABEL: f15:160; CHECK: vrepg %v24, %v24, 0161; CHECK: br %r14162  %ret = shufflevector <2 x double> %val, <2 x double> undef,163                       <2 x i32> zeroinitializer164  ret <2 x double> %ret165}166 167; Test v2f64 splat of the last element.168define <2 x double> @f16(<2 x double> %val) {169; CHECK-LABEL: f16:170; CHECK: vrepg %v24, %v24, 1171; CHECK: br %r14172  %ret = shufflevector <2 x double> %val, <2 x double> undef,173                       <2 x i32> <i32 1, i32 1>174  ret <2 x double> %ret175}176