brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.4 KiB · 5a53a2d Raw
292 lines · plain
1; Test vector insertion of constants.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s4 5; Test v16i8 insertion into the first element.6define <16 x i8> @f1(<16 x i8> %val) {7; CHECK-LABEL: f1:8; CHECK: vleib %v24, 0, 09; CHECK: br %r1410  %ret = insertelement <16 x i8> %val, i8 0, i32 011  ret <16 x i8> %ret12}13 14; Test v16i8 insertion into the last element.15define <16 x i8> @f2(<16 x i8> %val) {16; CHECK-LABEL: f2:17; CHECK: vleib %v24, 100, 1518; CHECK: br %r1419  %ret = insertelement <16 x i8> %val, i8 100, i32 1520  ret <16 x i8> %ret21}22 23; Test v16i8 insertion with the maximum signed value.24define <16 x i8> @f3(<16 x i8> %val) {25; CHECK-LABEL: f3:26; CHECK: vleib %v24, 127, 1027; CHECK: br %r1428  %ret = insertelement <16 x i8> %val, i8 127, i32 1029  ret <16 x i8> %ret30}31 32; Test v16i8 insertion with the minimum signed value.33define <16 x i8> @f4(<16 x i8> %val) {34; CHECK-LABEL: f4:35; CHECK: vleib %v24, -128, 1136; CHECK: br %r1437  %ret = insertelement <16 x i8> %val, i8 128, i32 1138  ret <16 x i8> %ret39}40 41; Test v16i8 insertion with the maximum unsigned value.42define <16 x i8> @f5(<16 x i8> %val) {43; CHECK-LABEL: f5:44; CHECK: vleib %v24, -1, 1245; CHECK: br %r1446  %ret = insertelement <16 x i8> %val, i8 255, i32 1247  ret <16 x i8> %ret48}49 50; Test v16i8 insertion into a variable element.51define <16 x i8> @f6(<16 x i8> %val, i32 %index) {52; CHECK-LABEL: f6:53; CHECK-NOT: vleib54; CHECK: br %r1455  %ret = insertelement <16 x i8> %val, i8 0, i32 %index56  ret <16 x i8> %ret57}58 59; Test v8i16 insertion into the first element.60define <8 x i16> @f7(<8 x i16> %val) {61; CHECK-LABEL: f7:62; CHECK: vleih %v24, 0, 063; CHECK: br %r1464  %ret = insertelement <8 x i16> %val, i16 0, i32 065  ret <8 x i16> %ret66}67 68; Test v8i16 insertion into the last element.69define <8 x i16> @f8(<8 x i16> %val) {70; CHECK-LABEL: f8:71; CHECK: vleih %v24, 0, 772; CHECK: br %r1473  %ret = insertelement <8 x i16> %val, i16 0, i32 774  ret <8 x i16> %ret75}76 77; Test v8i16 insertion with the maximum signed value.78define <8 x i16> @f9(<8 x i16> %val) {79; CHECK-LABEL: f9:80; CHECK: vleih %v24, 32767, 481; CHECK: br %r1482  %ret = insertelement <8 x i16> %val, i16 32767, i32 483  ret <8 x i16> %ret84}85 86; Test v8i16 insertion with the minimum signed value.87define <8 x i16> @f10(<8 x i16> %val) {88; CHECK-LABEL: f10:89; CHECK: vleih %v24, -32768, 590; CHECK: br %r1491  %ret = insertelement <8 x i16> %val, i16 32768, i32 592  ret <8 x i16> %ret93}94 95; Test v8i16 insertion with the maximum unsigned value.96define <8 x i16> @f11(<8 x i16> %val) {97; CHECK-LABEL: f11:98; CHECK: vleih %v24, -1, 699; CHECK: br %r14100  %ret = insertelement <8 x i16> %val, i16 65535, i32 6101  ret <8 x i16> %ret102}103 104; Test v8i16 insertion into a variable element.105define <8 x i16> @f12(<8 x i16> %val, i32 %index) {106; CHECK-LABEL: f12:107; CHECK-NOT: vleih108; CHECK: br %r14109  %ret = insertelement <8 x i16> %val, i16 0, i32 %index110  ret <8 x i16> %ret111}112 113; Test v4i32 insertion into the first element.114define <4 x i32> @f13(<4 x i32> %val) {115; CHECK-LABEL: f13:116; CHECK: vleif %v24, 0, 0117; CHECK: br %r14118  %ret = insertelement <4 x i32> %val, i32 0, i32 0119  ret <4 x i32> %ret120}121 122; Test v4i32 insertion into the last element.123define <4 x i32> @f14(<4 x i32> %val) {124; CHECK-LABEL: f14:125; CHECK: vleif %v24, 0, 3126; CHECK: br %r14127  %ret = insertelement <4 x i32> %val, i32 0, i32 3128  ret <4 x i32> %ret129}130 131; Test v4i32 insertion with the maximum value allowed by VLEIF.132define <4 x i32> @f15(<4 x i32> %val) {133; CHECK-LABEL: f15:134; CHECK: vleif %v24, 32767, 1135; CHECK: br %r14136  %ret = insertelement <4 x i32> %val, i32 32767, i32 1137  ret <4 x i32> %ret138}139 140; Test v4i32 insertion with the next value up.141define <4 x i32> @f16(<4 x i32> %val) {142; CHECK-LABEL: f16:143; CHECK-NOT: vleif144; CHECK: br %r14145  %ret = insertelement <4 x i32> %val, i32 32768, i32 1146  ret <4 x i32> %ret147}148 149; Test v4i32 insertion with the minimum value allowed by VLEIF.150define <4 x i32> @f17(<4 x i32> %val) {151; CHECK-LABEL: f17:152; CHECK: vleif %v24, -32768, 2153; CHECK: br %r14154  %ret = insertelement <4 x i32> %val, i32 -32768, i32 2155  ret <4 x i32> %ret156}157 158; Test v4i32 insertion with the next value down.159define <4 x i32> @f18(<4 x i32> %val) {160; CHECK-LABEL: f18:161; CHECK-NOT: vleif162; CHECK: br %r14163  %ret = insertelement <4 x i32> %val, i32 -32769, i32 2164  ret <4 x i32> %ret165}166 167; Test v4i32 insertion into a variable element.168define <4 x i32> @f19(<4 x i32> %val, i32 %index) {169; CHECK-LABEL: f19:170; CHECK-NOT: vleif171; CHECK: br %r14172  %ret = insertelement <4 x i32> %val, i32 0, i32 %index173  ret <4 x i32> %ret174}175 176; Test v2i64 insertion into the first element.177define <2 x i64> @f20(<2 x i64> %val) {178; CHECK-LABEL: f20:179; CHECK: vleig %v24, 0, 0180; CHECK: br %r14181  %ret = insertelement <2 x i64> %val, i64 0, i32 0182  ret <2 x i64> %ret183}184 185; Test v2i64 insertion into the last element.186define <2 x i64> @f21(<2 x i64> %val) {187; CHECK-LABEL: f21:188; CHECK: vleig %v24, 0, 1189; CHECK: br %r14190  %ret = insertelement <2 x i64> %val, i64 0, i32 1191  ret <2 x i64> %ret192}193 194; Test v2i64 insertion with the maximum value allowed by VLEIG.195define <2 x i64> @f22(<2 x i64> %val) {196; CHECK-LABEL: f22:197; CHECK: vleig %v24, 32767, 1198; CHECK: br %r14199  %ret = insertelement <2 x i64> %val, i64 32767, i32 1200  ret <2 x i64> %ret201}202 203; Test v2i64 insertion with the next value up.204define <2 x i64> @f23(<2 x i64> %val) {205; CHECK-LABEL: f23:206; CHECK-NOT: vleig207; CHECK: br %r14208  %ret = insertelement <2 x i64> %val, i64 32768, i32 1209  ret <2 x i64> %ret210}211 212; Test v2i64 insertion with the minimum value allowed by VLEIG.213define <2 x i64> @f24(<2 x i64> %val) {214; CHECK-LABEL: f24:215; CHECK: vleig %v24, -32768, 0216; CHECK: br %r14217  %ret = insertelement <2 x i64> %val, i64 -32768, i32 0218  ret <2 x i64> %ret219}220 221; Test v2i64 insertion with the next value down.222define <2 x i64> @f25(<2 x i64> %val) {223; CHECK-LABEL: f25:224; CHECK-NOT: vleig225; CHECK: br %r14226  %ret = insertelement <2 x i64> %val, i64 -32769, i32 0227  ret <2 x i64> %ret228}229 230; Test v2i64 insertion into a variable element.231define <2 x i64> @f26(<2 x i64> %val, i32 %index) {232; CHECK-LABEL: f26:233; CHECK-NOT: vleig234; CHECK: br %r14235  %ret = insertelement <2 x i64> %val, i64 0, i32 %index236  ret <2 x i64> %ret237}238 239; Test v4f32 insertion of 0 into the first element.240define <4 x float> @f27(<4 x float> %val) {241; CHECK-LABEL: f27:242; CHECK: vleif %v24, 0, 0243; CHECK: br %r14244  %ret = insertelement <4 x float> %val, float 0.0, i32 0245  ret <4 x float> %ret246}247 248; Test v4f32 insertion of 0 into the last element.249define <4 x float> @f28(<4 x float> %val) {250; CHECK-LABEL: f28:251; CHECK: vleif %v24, 0, 3252; CHECK: br %r14253  %ret = insertelement <4 x float> %val, float 0.0, i32 3254  ret <4 x float> %ret255}256 257; Test v4f32 insertion of a nonzero value.258define <4 x float> @f29(<4 x float> %val) {259; CHECK-LABEL: f29:260; CHECK-NOT: vleif261; CHECK: br %r14262  %ret = insertelement <4 x float> %val, float 1.0, i32 1263  ret <4 x float> %ret264}265 266; Test v2f64 insertion of 0 into the first element.267define <2 x double> @f30(<2 x double> %val) {268; CHECK-LABEL: f30:269; CHECK: vleig %v24, 0, 0270; CHECK: br %r14271  %ret = insertelement <2 x double> %val, double 0.0, i32 0272  ret <2 x double> %ret273}274 275; Test v2f64 insertion of 0 into the last element.276define <2 x double> @f31(<2 x double> %val) {277; CHECK-LABEL: f31:278; CHECK: vleig %v24, 0, 1279; CHECK: br %r14280  %ret = insertelement <2 x double> %val, double 0.0, i32 1281  ret <2 x double> %ret282}283 284; Test v2f64 insertion of a nonzero value.285define <2 x double> @f32(<2 x double> %val) {286; CHECK-LABEL: f32:287; CHECK-NOT: vleig288; CHECK: br %r14289  %ret = insertelement <2 x double> %val, double 1.0, i32 1290  ret <2 x double> %ret291}292