Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / PowerPC / pr77748.ll
blobd4928f95002c1fab81d528d528da3c7a65d3f058
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2 ; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mattr=+altivec -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LE
3 ; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -mattr=+altivec,+direct-move -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=BE
5 ; LE-LABEL: .LCPI0_0:
6 ; LE-NEXT:      .byte   31
7 ; LE-NEXT:      .byte   15
8 ; LE-NEXT:      .byte   30
9 ; LE-NEXT:      .byte   14
10 ; LE-NEXT:      .byte   29
11 ; LE-NEXT:      .byte   13
12 ; LE-NEXT:      .byte   28
13 ; LE-NEXT:      .byte   12
14 ; LE-NEXT:      .byte   31
15 ; LE-NEXT:      .byte   15
16 ; LE-NEXT:      .byte   31
17 ; LE-NEXT:      .byte   15
18 ; LE-NEXT:      .byte   31
19 ; LE-NEXT:      .byte   15
20 ; LE-NEXT:      .byte   31
21 ; LE-NEXT:      .byte   15
23 ; BE-LABEL: .LCPI0_0:
24 ; BE-NEXT:      .byte   0
25 ; BE-NEXT:      .byte   16
26 ; BE-NEXT:      .byte   1
27 ; BE-NEXT:      .byte   16
28 ; BE-NEXT:      .byte   2
29 ; BE-NEXT:      .byte   16
30 ; BE-NEXT:      .byte   3
31 ; BE-NEXT:      .byte   16
32 ; BE-NEXT:      .byte   0
33 ; BE-NEXT:      .byte   16
34 ; BE-NEXT:      .byte   0
35 ; BE-NEXT:      .byte   16
36 ; BE-NEXT:      .byte   0
37 ; BE-NEXT:      .byte   16
38 ; BE-NEXT:      .byte   0
39 ; BE-NEXT:      .byte   16
41 define <16 x i8> @test1(<16 x i8> %a) {
42 ; LE-LABEL: test1:
43 ; LE:       # %bb.0:
44 ; LE-NEXT:    addis r3, r2, .LCPI0_0@toc@ha
45 ; LE-NEXT:    xxlxor vs36, vs36, vs36
46 ; LE-NEXT:    addi r3, r3, .LCPI0_0@toc@l
47 ; LE-NEXT:    lxvd2x vs0, 0, r3
48 ; LE-NEXT:    xxswapd vs35, vs0
49 ; LE-NEXT:    vperm v2, v4, v2, v3
50 ; LE-NEXT:    blr
52 ; BE-LABEL: test1:
53 ; BE:       # %bb.0:
54 ; BE-NEXT:    addis r3, r2, .LCPI0_0@toc@ha
55 ; BE-NEXT:    xxlxor vs36, vs36, vs36
56 ; BE-NEXT:    addi r3, r3, .LCPI0_0@toc@l
57 ; BE-NEXT:    lxvw4x vs35, 0, r3
58 ; BE-NEXT:    vperm v2, v2, v4, v3
59 ; BE-NEXT:    blr
60   %shuffle = shufflevector <16 x i8> %a, <16 x i8> zeroinitializer, <16 x i32> <i32 0, i32 16, i32 1, i32 16, i32 2, i32 16, i32 3, i32 16, i32 poison, i32 16, i32 poison, i32 16, i32 poison, i32 16, i32 poison, i32 16>
61   ret <16 x i8> %shuffle
64 ; LE-LABEL: .LCPI1_0:
65 ; LE-NEXT:      .byte   31
66 ; LE-NEXT:      .byte   15
67 ; LE-NEXT:      .byte   31
68 ; LE-NEXT:      .byte   14
69 ; LE-NEXT:      .byte   31
70 ; LE-NEXT:      .byte   13
71 ; LE-NEXT:      .byte   31
72 ; LE-NEXT:      .byte   12
73 ; LE-NEXT:      .byte   31
74 ; LE-NEXT:      .byte   11
75 ; LE-NEXT:      .byte   31
76 ; LE-NEXT:      .byte   10
77 ; LE-NEXT:      .byte   31
78 ; LE-NEXT:      .byte   9
79 ; LE-NEXT:      .byte   31
80 ; LE-NEXT:      .byte   8
82 define <16 x i8> @test2(<16 x i8> %a) {
83 ; LE-LABEL: test2:
84 ; LE:       # %bb.0:
85 ; LE-NEXT:    addis r3, r2, .LCPI1_0@toc@ha
86 ; LE-NEXT:    xxlxor vs36, vs36, vs36
87 ; LE-NEXT:    addi r3, r3, .LCPI1_0@toc@l
88 ; LE-NEXT:    lxvd2x vs0, 0, r3
89 ; LE-NEXT:    xxswapd vs35, vs0
90 ; LE-NEXT:    vperm v2, v2, v4, v3
91 ; LE-NEXT:    blr
93 ; BE-LABEL: test2:
94 ; BE:       # %bb.0:
95 ; BE-NEXT:    xxlxor vs35, vs35, vs35
96 ; BE-NEXT:    vmrghb v2, v3, v2
97 ; BE-NEXT:    blr
98   %shuffle = shufflevector <16 x i8> %a, <16 x i8> zeroinitializer, <16 x i32> <i32 16, i32 0, i32 16, i32 1, i32 16, i32 2, i32 16, i32 3, i32 16, i32 4, i32 poison, i32 5, i32 poison, i32 6, i32 poison, i32 7>
99   ret <16 x i8> %shuffle