xref: /llvm-project/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-shuffle-concat.ll (revision b6c0f1bfa79a3a32d841ac5ab1f94c3aee3b5d90)
13d084e37SLuke Lau; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2f565b79fSLuke Lau; RUN: llc < %s -mtriple=riscv32 -mattr=+v -verify-machineinstrs | FileCheck -check-prefix=VLA %s
3f565b79fSLuke Lau; RUN: llc < %s -mtriple=riscv64 -mattr=+v -verify-machineinstrs | FileCheck -check-prefix=VLA %s
428c29fbeSLuke Lau
5f565b79fSLuke Lau; RUN: llc < %s -mtriple=riscv32 -mattr=+v -riscv-v-vector-bits-max=128 -verify-machineinstrs | FileCheck -check-prefix=VLS %s
6f565b79fSLuke Lau; RUN: llc < %s -mtriple=riscv64 -mattr=+v -riscv-v-vector-bits-max=128 -verify-machineinstrs | FileCheck -check-prefix=VLS %s
73d084e37SLuke Lau
83d084e37SLuke Laudefine <8 x i32> @concat_2xv4i32(<4 x i32> %a, <4 x i32> %b) {
9f565b79fSLuke Lau; VLA-LABEL: concat_2xv4i32:
10f565b79fSLuke Lau; VLA:       # %bb.0:
11f565b79fSLuke Lau; VLA-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
12*b6c0f1bfSLuke Lau; VLA-NEXT:    vmv1r.v v10, v9
13f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v10, 4
14f565b79fSLuke Lau; VLA-NEXT:    ret
15f565b79fSLuke Lau;
16f565b79fSLuke Lau; VLS-LABEL: concat_2xv4i32:
17f565b79fSLuke Lau; VLS:       # %bb.0:
18f565b79fSLuke Lau; VLS-NEXT:    ret
193d084e37SLuke Lau  %ab = shufflevector <4 x i32> %a, <4 x i32> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
203d084e37SLuke Lau  ret <8 x i32> %ab
213d084e37SLuke Lau}
223d084e37SLuke Lau
233d084e37SLuke Laudefine <8 x i32> @concat_4xv2i32(<2 x i32> %a, <2 x i32> %b, <2 x i32> %c, <2 x i32> %d) {
24f565b79fSLuke Lau; VLA-LABEL: concat_4xv2i32:
25f565b79fSLuke Lau; VLA:       # %bb.0:
26f565b79fSLuke Lau; VLA-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
27f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v10, v11, 2
28f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v9, 2
29f565b79fSLuke Lau; VLA-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
30f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v10, 4
31f565b79fSLuke Lau; VLA-NEXT:    ret
32f565b79fSLuke Lau;
33f565b79fSLuke Lau; VLS-LABEL: concat_4xv2i32:
34f565b79fSLuke Lau; VLS:       # %bb.0:
35*b6c0f1bfSLuke Lau; VLS-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
36f565b79fSLuke Lau; VLS-NEXT:    vmv1r.v v13, v10
37f565b79fSLuke Lau; VLS-NEXT:    vmv1r.v v12, v8
38f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v13, v11, 2
39f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v12, v9, 2
40f565b79fSLuke Lau; VLS-NEXT:    vmv2r.v v8, v12
41f565b79fSLuke Lau; VLS-NEXT:    ret
423d084e37SLuke Lau  %ab = shufflevector <2 x i32> %a, <2 x i32> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
433d084e37SLuke Lau  %cd = shufflevector <2 x i32> %c, <2 x i32> %d, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
443d084e37SLuke Lau  %abcd = shufflevector <4 x i32> %ab, <4 x i32> %cd, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
453d084e37SLuke Lau  ret <8 x i32> %abcd
463d084e37SLuke Lau}
473d084e37SLuke Lau
483d084e37SLuke Laudefine <8 x i32> @concat_8xv1i32(<1 x i32> %a, <1 x i32> %b, <1 x i32> %c, <1 x i32> %d, <1 x i32> %e, <1 x i32> %f, <1 x i32> %g, <1 x i32> %h) {
49f565b79fSLuke Lau; VLA-LABEL: concat_8xv1i32:
50f565b79fSLuke Lau; VLA:       # %bb.0:
51f565b79fSLuke Lau; VLA-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
52f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v14, v15, 1
53f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v12, v13, 1
54f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v10, v11, 1
55f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v9, 1
56f565b79fSLuke Lau; VLA-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
579122c523SPengcheng Wang; VLA-NEXT:    vslideup.vi v12, v14, 2
58f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v10, 2
59f565b79fSLuke Lau; VLA-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
60f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v12, 4
61f565b79fSLuke Lau; VLA-NEXT:    ret
62f565b79fSLuke Lau;
63f565b79fSLuke Lau; VLS-LABEL: concat_8xv1i32:
64f565b79fSLuke Lau; VLS:       # %bb.0:
65*b6c0f1bfSLuke Lau; VLS-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
66f565b79fSLuke Lau; VLS-NEXT:    vmv1r.v v17, v12
679122c523SPengcheng Wang; VLS-NEXT:    vmv1r.v v16, v8
68f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v14, v15, 1
69f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v17, v13, 1
70f565b79fSLuke Lau; VLS-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
71f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v17, v14, 2
72f565b79fSLuke Lau; VLS-NEXT:    vsetivli zero, 2, e32, mf2, ta, ma
73f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v10, v11, 1
74f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v16, v9, 1
75f565b79fSLuke Lau; VLS-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
76f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v16, v10, 2
77f565b79fSLuke Lau; VLS-NEXT:    vmv2r.v v8, v16
78f565b79fSLuke Lau; VLS-NEXT:    ret
793d084e37SLuke Lau  %ab = shufflevector <1 x i32> %a, <1 x i32> %b, <2 x i32> <i32 0, i32 1>
803d084e37SLuke Lau  %cd = shufflevector <1 x i32> %c, <1 x i32> %d, <2 x i32> <i32 0, i32 1>
813d084e37SLuke Lau  %abcd = shufflevector <2 x i32> %ab, <2 x i32> %cd, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
823d084e37SLuke Lau  %ef = shufflevector <1 x i32> %e, <1 x i32> %f, <2 x i32> <i32 0, i32 1>
833d084e37SLuke Lau  %gh = shufflevector <1 x i32> %g, <1 x i32> %h, <2 x i32> <i32 0, i32 1>
843d084e37SLuke Lau  %efgh = shufflevector <2 x i32> %ef, <2 x i32> %gh, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
853d084e37SLuke Lau  %abcdefgh = shufflevector <4 x i32> %abcd, <4 x i32> %efgh, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
863d084e37SLuke Lau  ret <8 x i32> %abcdefgh
873d084e37SLuke Lau}
883d084e37SLuke Lau
893d084e37SLuke Laudefine <16 x i32> @concat_2xv8i32(<8 x i32> %a, <8 x i32> %b) {
90f565b79fSLuke Lau; VLA-LABEL: concat_2xv8i32:
91f565b79fSLuke Lau; VLA:       # %bb.0:
92f565b79fSLuke Lau; VLA-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
93*b6c0f1bfSLuke Lau; VLA-NEXT:    vmv2r.v v12, v10
94f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v12, 8
95f565b79fSLuke Lau; VLA-NEXT:    ret
96f565b79fSLuke Lau;
97f565b79fSLuke Lau; VLS-LABEL: concat_2xv8i32:
98f565b79fSLuke Lau; VLS:       # %bb.0:
99f565b79fSLuke Lau; VLS-NEXT:    ret
1003d084e37SLuke Lau  %v = shufflevector <8 x i32> %a, <8 x i32> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1013d084e37SLuke Lau  ret <16 x i32> %v
1023d084e37SLuke Lau}
1033d084e37SLuke Lau
1043d084e37SLuke Laudefine <16 x i32> @concat_4xv4i32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c, <4 x i32> %d) {
105f565b79fSLuke Lau; VLA-LABEL: concat_4xv4i32:
106f565b79fSLuke Lau; VLA:       # %bb.0:
107*b6c0f1bfSLuke Lau; VLA-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
108f565b79fSLuke Lau; VLA-NEXT:    vmv1r.v v14, v11
109f565b79fSLuke Lau; VLA-NEXT:    vmv1r.v v12, v10
110f565b79fSLuke Lau; VLA-NEXT:    vmv1r.v v10, v9
111f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v12, v14, 4
112f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v10, 4
113f565b79fSLuke Lau; VLA-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
114f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v12, 8
115f565b79fSLuke Lau; VLA-NEXT:    ret
116f565b79fSLuke Lau;
117f565b79fSLuke Lau; VLS-LABEL: concat_4xv4i32:
118f565b79fSLuke Lau; VLS:       # %bb.0:
119f565b79fSLuke Lau; VLS-NEXT:    ret
1203d084e37SLuke Lau  %ab = shufflevector <4 x i32> %a, <4 x i32> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1213d084e37SLuke Lau  %cd = shufflevector <4 x i32> %c, <4 x i32> %d, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1223d084e37SLuke Lau  %abcd = shufflevector <8 x i32> %ab, <8 x i32> %cd, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1233d084e37SLuke Lau  ret <16 x i32> %abcd
1243d084e37SLuke Lau}
1253d084e37SLuke Lau
1263d084e37SLuke Laudefine <16 x i32> @concat_8xv2i32(<2 x i32> %a, <2 x i32> %b, <2 x i32> %c, <2 x i32> %d, <2 x i32> %e, <2 x i32> %f, <2 x i32> %g, <2 x i32> %h) {
127f565b79fSLuke Lau; VLA-LABEL: concat_8xv2i32:
128f565b79fSLuke Lau; VLA:       # %bb.0:
129f565b79fSLuke Lau; VLA-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
130f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v14, v15, 2
131f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v12, v13, 2
132f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v10, v11, 2
133f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v9, 2
134f565b79fSLuke Lau; VLA-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
1359122c523SPengcheng Wang; VLA-NEXT:    vslideup.vi v12, v14, 4
136f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v10, 4
137f565b79fSLuke Lau; VLA-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
138f565b79fSLuke Lau; VLA-NEXT:    vslideup.vi v8, v12, 8
139f565b79fSLuke Lau; VLA-NEXT:    ret
140f565b79fSLuke Lau;
141f565b79fSLuke Lau; VLS-LABEL: concat_8xv2i32:
142f565b79fSLuke Lau; VLS:       # %bb.0:
143*b6c0f1bfSLuke Lau; VLS-NEXT:    vsetivli zero, 4, e32, m1, ta, ma
144f565b79fSLuke Lau; VLS-NEXT:    vmv1r.v v19, v14
145f565b79fSLuke Lau; VLS-NEXT:    vmv1r.v v18, v12
146f565b79fSLuke Lau; VLS-NEXT:    vmv1r.v v17, v10
147f565b79fSLuke Lau; VLS-NEXT:    vmv1r.v v16, v8
148f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v19, v15, 2
149f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v18, v13, 2
150f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v17, v11, 2
151f565b79fSLuke Lau; VLS-NEXT:    vslideup.vi v16, v9, 2
152f565b79fSLuke Lau; VLS-NEXT:    vmv4r.v v8, v16
153f565b79fSLuke Lau; VLS-NEXT:    ret
1543d084e37SLuke Lau  %ab = shufflevector <2 x i32> %a, <2 x i32> %b, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
1553d084e37SLuke Lau  %cd = shufflevector <2 x i32> %c, <2 x i32> %d, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
1563d084e37SLuke Lau  %abcd = shufflevector <4 x i32> %ab, <4 x i32> %cd, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1573d084e37SLuke Lau  %ef = shufflevector <2 x i32> %e, <2 x i32> %f, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
1583d084e37SLuke Lau  %gh = shufflevector <2 x i32> %g, <2 x i32> %h, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
1593d084e37SLuke Lau  %efgh = shufflevector <4 x i32> %ef, <4 x i32> %gh, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1603d084e37SLuke Lau  %abcdefgh = shufflevector <8 x i32> %abcd, <8 x i32> %efgh, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1613d084e37SLuke Lau  ret <16 x i32> %abcdefgh
1623d084e37SLuke Lau}
1633d084e37SLuke Lau
1643d084e37SLuke Laudefine <32 x i32> @concat_2xv16i32(<16 x i32> %a, <16 x i32> %b) {
16528c29fbeSLuke Lau; VLA-LABEL: concat_2xv16i32:
16628c29fbeSLuke Lau; VLA:       # %bb.0:
167*b6c0f1bfSLuke Lau; VLA-NEXT:    vsetivli zero, 1, e8, m1, ta, ma
16828c29fbeSLuke Lau; VLA-NEXT:    vmv4r.v v16, v12
16928c29fbeSLuke Lau; VLA-NEXT:    li a0, 32
17028c29fbeSLuke Lau; VLA-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
17128c29fbeSLuke Lau; VLA-NEXT:    vslideup.vi v8, v16, 16
17228c29fbeSLuke Lau; VLA-NEXT:    ret
17328c29fbeSLuke Lau;
17428c29fbeSLuke Lau; VLS-LABEL: concat_2xv16i32:
17528c29fbeSLuke Lau; VLS:       # %bb.0:
17628c29fbeSLuke Lau; VLS-NEXT:    ret
1773d084e37SLuke Lau  %ab = shufflevector <16 x i32> %a, <16 x i32> %b, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
1783d084e37SLuke Lau  ret <32 x i32> %ab
1793d084e37SLuke Lau}
1803d084e37SLuke Lau
1813d084e37SLuke Laudefine <32 x i32> @concat_4xv8i32(<8 x i32> %a, <8 x i32> %b, <8 x i32> %c, <8 x i32> %d) {
18228c29fbeSLuke Lau; VLA-LABEL: concat_4xv8i32:
18328c29fbeSLuke Lau; VLA:       # %bb.0:
184*b6c0f1bfSLuke Lau; VLA-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
18506d24524SLuke Lau; VLA-NEXT:    vmv2r.v v20, v14
18606d24524SLuke Lau; VLA-NEXT:    vmv2r.v v16, v12
18706d24524SLuke Lau; VLA-NEXT:    vmv2r.v v12, v10
1889122c523SPengcheng Wang; VLA-NEXT:    li a0, 32
18906d24524SLuke Lau; VLA-NEXT:    vslideup.vi v16, v20, 8
19006d24524SLuke Lau; VLA-NEXT:    vslideup.vi v8, v12, 8
19128c29fbeSLuke Lau; VLA-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
19206d24524SLuke Lau; VLA-NEXT:    vslideup.vi v8, v16, 16
19328c29fbeSLuke Lau; VLA-NEXT:    ret
19428c29fbeSLuke Lau;
19528c29fbeSLuke Lau; VLS-LABEL: concat_4xv8i32:
19628c29fbeSLuke Lau; VLS:       # %bb.0:
19728c29fbeSLuke Lau; VLS-NEXT:    ret
1983d084e37SLuke Lau  %ab = shufflevector <8 x i32> %a, <8 x i32> %b, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1993d084e37SLuke Lau  %cd = shufflevector <8 x i32> %c, <8 x i32> %d, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
2003d084e37SLuke Lau  %abcd = shufflevector <16 x i32> %ab, <16 x i32> %cd, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
2013d084e37SLuke Lau  ret <32 x i32> %abcd
2023d084e37SLuke Lau}
2033d084e37SLuke Lau
2043d084e37SLuke Laudefine <32 x i32> @concat_8xv4i32(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c, <4 x i32> %d, <4 x i32> %e, <4 x i32> %f, <4 x i32> %g, <4 x i32> %h) {
20528c29fbeSLuke Lau; VLA-LABEL: concat_8xv4i32:
20628c29fbeSLuke Lau; VLA:       # %bb.0:
207*b6c0f1bfSLuke Lau; VLA-NEXT:    vsetivli zero, 8, e32, m2, ta, ma
20806d24524SLuke Lau; VLA-NEXT:    vmv1r.v v18, v15
20906d24524SLuke Lau; VLA-NEXT:    vmv1r.v v20, v14
2109122c523SPengcheng Wang; VLA-NEXT:    vmv1r.v v14, v13
21128c29fbeSLuke Lau; VLA-NEXT:    vmv1r.v v16, v12
2129122c523SPengcheng Wang; VLA-NEXT:    vmv1r.v v22, v11
21306d24524SLuke Lau; VLA-NEXT:    vmv1r.v v12, v10
21406d24524SLuke Lau; VLA-NEXT:    vmv1r.v v10, v9
2159122c523SPengcheng Wang; VLA-NEXT:    li a0, 32
21606d24524SLuke Lau; VLA-NEXT:    vslideup.vi v20, v18, 4
2179122c523SPengcheng Wang; VLA-NEXT:    vslideup.vi v16, v14, 4
2189122c523SPengcheng Wang; VLA-NEXT:    vslideup.vi v12, v22, 4
21906d24524SLuke Lau; VLA-NEXT:    vslideup.vi v8, v10, 4
22006d24524SLuke Lau; VLA-NEXT:    vsetivli zero, 16, e32, m4, ta, ma
2219122c523SPengcheng Wang; VLA-NEXT:    vslideup.vi v16, v20, 8
22206d24524SLuke Lau; VLA-NEXT:    vslideup.vi v8, v12, 8
22328c29fbeSLuke Lau; VLA-NEXT:    vsetvli zero, a0, e32, m8, ta, ma
22406d24524SLuke Lau; VLA-NEXT:    vslideup.vi v8, v16, 16
22528c29fbeSLuke Lau; VLA-NEXT:    ret
22628c29fbeSLuke Lau;
22728c29fbeSLuke Lau; VLS-LABEL: concat_8xv4i32:
22828c29fbeSLuke Lau; VLS:       # %bb.0:
22928c29fbeSLuke Lau; VLS-NEXT:    ret
2303d084e37SLuke Lau  %ab = shufflevector <4 x i32> %a, <4 x i32> %b, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
2313d084e37SLuke Lau  %cd = shufflevector <4 x i32> %c, <4 x i32> %d, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
2323d084e37SLuke Lau  %abcd = shufflevector <8 x i32> %ab, <8 x i32> %cd, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
2333d084e37SLuke Lau  %ef = shufflevector <4 x i32> %e, <4 x i32> %f, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
2343d084e37SLuke Lau  %gh = shufflevector <4 x i32> %g, <4 x i32> %h, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
2353d084e37SLuke Lau  %efgh = shufflevector <8 x i32> %ef, <8 x i32> %gh, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
2363d084e37SLuke Lau  %abcdefgh = shufflevector <16 x i32> %abcd, <16 x i32> %efgh, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
2373d084e37SLuke Lau  ret <32 x i32> %abcdefgh
2383d084e37SLuke Lau}
239