brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · cb61d31 Raw
111 lines · plain
1; Test that vector zexts are done efficently also in case of fewer elements2; than allowed, e.g. <2 x i32>.3;4; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s5 6 7define <2 x i16> @fun1(<2 x i8> %val1) {8; CHECK-LABEL: fun1:9; CHECK:      	vuplhb	%v24, %v2410; CHECK-NEXT: 	br	%r1411  %z = zext <2 x i8> %val1 to <2 x i16>12  ret <2 x i16> %z13}14 15define <2 x i32> @fun2(<2 x i8> %val1) {16; CHECK-LABEL: fun2:17; CHECK:        larl	%r1, .LCPI1_018; CHECK-NEXT:   vl	%v0, 0(%r1), 319; CHECK-NEXT:   vperm	%v24, %v0, %v24, %v020; CHECK-NEXT: 	br	%r1421  %z = zext <2 x i8> %val1 to <2 x i32>22  ret <2 x i32> %z23}24 25define <2 x i64> @fun3(<2 x i8> %val1) {26; CHECK-LABEL: fun3:27; CHECK: 	larl	%r1, .LCPI2_028; CHECK-NEXT: 	vl	%v0, 0(%r1), 329; CHECK-NEXT: 	vperm	%v24, %v0, %v24, %v030; CHECK-NEXT: 	br	%r1431  %z = zext <2 x i8> %val1 to <2 x i64>32  ret <2 x i64> %z33}34 35define <2 x i32> @fun4(<2 x i16> %val1) {36; CHECK-LABEL: fun4:37; CHECK:      	vuplhh	%v24, %v2438; CHECK-NEXT: 	br	%r1439  %z = zext <2 x i16> %val1 to <2 x i32>40  ret <2 x i32> %z41}42 43define <2 x i64> @fun5(<2 x i16> %val1) {44; CHECK-LABEL: fun5:45; CHECK: 	larl	%r1, .LCPI4_046; CHECK-NEXT: 	vl	%v0, 0(%r1), 347; CHECK-NEXT: 	vperm	%v24, %v0, %v24, %v048; CHECK-NEXT: 	br	%r1449  %z = zext <2 x i16> %val1 to <2 x i64>50  ret <2 x i64> %z51}52 53define <2 x i64> @fun6(<2 x i32> %val1) {54; CHECK-LABEL: fun6:55; CHECK:      	vuplhf	%v24, %v2456; CHECK-NEXT: 	br	%r1457  %z = zext <2 x i32> %val1 to <2 x i64>58  ret <2 x i64> %z59}60 61define <4 x i16> @fun7(<4 x i8> %val1) {62; CHECK-LABEL: fun7:63; CHECK:      	vuplhb	%v24, %v2464; CHECK-NEXT: 	br	%r1465  %z = zext <4 x i8> %val1 to <4 x i16>66  ret <4 x i16> %z67}68 69define <4 x i32> @fun8(<4 x i8> %val1) {70; CHECK-LABEL: fun8:71; CHECK: 	larl	%r1, .LCPI7_072; CHECK-NEXT: 	vl	%v0, 0(%r1), 373; CHECK-NEXT: 	vperm	%v24, %v0, %v24, %v074; CHECK-NEXT: 	br	%r1475  %z = zext <4 x i8> %val1 to <4 x i32>76  ret <4 x i32> %z77}78 79define <4 x i32> @fun9(<4 x i16> %val1) {80; CHECK-LABEL: fun9:81; CHECK:      	vuplhh	%v24, %v2482; CHECK-NEXT: 	br	%r1483  %z = zext <4 x i16> %val1 to <4 x i32>84  ret <4 x i32> %z85}86 87define <8 x i16> @fun10(<8 x i8> %val1) {88; CHECK-LABEL: fun10:89; CHECK:      	vuplhb	%v24, %v2490; CHECK-NEXT: 	br	%r1491  %z = zext <8 x i8> %val1 to <8 x i16>92  ret <8 x i16> %z93}94 95define <2 x i32> @fun11(<2 x i64> %Arg1, <2 x i64> %Arg2) {96; CHECK-LABEL: fun11:97; CHECK:      vgbm    %v0, 098; CHECK-NEXT: vceqg   %v1, %v24, %v099; CHECK-NEXT: vceqg   %v0, %v26, %v0100; CHECK-NEXT: vo      %v0, %v1, %v0101; CHECK-NEXT: vrepig  %v1, 1102; CHECK-NEXT: vn      %v0, %v0, %v1103; CHECK-NEXT: vpkg    %v24, %v0, %v0104; CHECK-NEXT: br      %r14105  %i3 = icmp eq <2 x i64> %Arg1, zeroinitializer106  %i5 = icmp eq <2 x i64> %Arg2, zeroinitializer107  %i6 = or <2 x i1> %i3, %i5108  %i7 = zext <2 x i1> %i6 to <2 x i32>109  ret <2 x i32> %i7110}111