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