101 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mattr=+altivec -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LE3; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -mattr=+altivec,+direct-move -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=BE4 5; LE-LABEL: .LCPI0_0:6; LE-NEXT: .byte 317; LE-NEXT: .byte 158; LE-NEXT: .byte 309; LE-NEXT: .byte 1410; LE-NEXT: .byte 2911; LE-NEXT: .byte 1312; LE-NEXT: .byte 2813; LE-NEXT: .byte 1214; LE-NEXT: .byte 3115; LE-NEXT: .byte 1516; LE-NEXT: .byte 3117; LE-NEXT: .byte 1518; LE-NEXT: .byte 3119; LE-NEXT: .byte 1520; LE-NEXT: .byte 3121; LE-NEXT: .byte 1522 23; BE-LABEL: .LCPI0_0:24; BE-NEXT: .byte 025; BE-NEXT: .byte 1626; BE-NEXT: .byte 127; BE-NEXT: .byte 1628; BE-NEXT: .byte 229; BE-NEXT: .byte 1630; BE-NEXT: .byte 331; BE-NEXT: .byte 1632; BE-NEXT: .byte 033; BE-NEXT: .byte 1634; BE-NEXT: .byte 035; BE-NEXT: .byte 1636; BE-NEXT: .byte 037; BE-NEXT: .byte 1638; BE-NEXT: .byte 039; BE-NEXT: .byte 1640 41define <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@ha45; LE-NEXT: xxlxor vs36, vs36, vs3646; LE-NEXT: addi r3, r3, .LCPI0_0@toc@l47; LE-NEXT: lxvd2x vs0, 0, r348; LE-NEXT: xxswapd vs35, vs049; LE-NEXT: vperm v2, v4, v2, v350; LE-NEXT: blr51;52; BE-LABEL: test1:53; BE: # %bb.0:54; BE-NEXT: addis r3, r2, .LCPI0_0@toc@ha55; BE-NEXT: xxlxor vs36, vs36, vs3656; BE-NEXT: addi r3, r3, .LCPI0_0@toc@l57; BE-NEXT: lxvw4x vs35, 0, r358; BE-NEXT: vperm v2, v2, v4, v359; BE-NEXT: blr60 %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> %shuffle62}63 64; LE-LABEL: .LCPI1_0:65; LE-NEXT: .byte 3166; LE-NEXT: .byte 1567; LE-NEXT: .byte 3168; LE-NEXT: .byte 1469; LE-NEXT: .byte 3170; LE-NEXT: .byte 1371; LE-NEXT: .byte 3172; LE-NEXT: .byte 1273; LE-NEXT: .byte 3174; LE-NEXT: .byte 1175; LE-NEXT: .byte 3176; LE-NEXT: .byte 1077; LE-NEXT: .byte 3178; LE-NEXT: .byte 979; LE-NEXT: .byte 3180; LE-NEXT: .byte 881 82define <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@ha86; LE-NEXT: xxlxor vs36, vs36, vs3687; LE-NEXT: addi r3, r3, .LCPI1_0@toc@l88; LE-NEXT: lxvd2x vs0, 0, r389; LE-NEXT: xxswapd vs35, vs090; LE-NEXT: vperm v2, v2, v4, v391; LE-NEXT: blr92;93; BE-LABEL: test2:94; BE: # %bb.0:95; BE-NEXT: xxlxor vs35, vs35, vs3596; BE-NEXT: vmrghb v2, v3, v297; BE-NEXT: blr98 %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> %shuffle100}101