xref: /llvm-project/llvm/test/CodeGen/PowerPC/load-v4i8-improved.ll (revision 427fb35192f1f7bb694a5910b05abc5925a798b2)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu < %s \
3; RUN:   -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names | FileCheck --check-prefix=CHECK-LE \
4; RUN:   -implicit-check-not vmrg -implicit-check-not=vperm %s
5; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64-unknown-linux-gnu < %s \
6; RUN:   -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names | FileCheck \
7; RUN:   -implicit-check-not vmrg -implicit-check-not=vperm %s
8; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64-ibm-aix-xcoff < %s \
9; RUN:   -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names | FileCheck \
10; RUN:   -implicit-check-not vmrg -implicit-check-not=vperm %s
11; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc-ibm-aix-xcoff < %s \
12; RUN:   -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names | FileCheck \
13; RUN:   --check-prefix=CHECK-AIX-32 -implicit-check-not vmrg \
14; RUN:   -implicit-check-not=vperm %s
15
16define <16 x i8> @test(ptr %s, ptr %t) {
17; CHECK-LE-LABEL: test:
18; CHECK-LE:       # %bb.0: # %entry
19; CHECK-LE-NEXT:    lfiwzx f0, 0, r3
20; CHECK-LE-NEXT:    xxspltw v2, vs0, 1
21; CHECK-LE-NEXT:    blr
22;
23; CHECK-LABEL: test:
24; CHECK:       # %bb.0: # %entry
25; CHECK-NEXT:    lfiwzx f0, 0, r3
26; CHECK-NEXT:    xxspltw v2, vs0, 1
27; CHECK-NEXT:    blr
28;
29; CHECK-AIX-32-LABEL: test:
30; CHECK-AIX-32:       # %bb.0: # %entry
31; CHECK-AIX-32-NEXT:    lfiwzx f0, 0, r3
32; CHECK-AIX-32-NEXT:    xxspltw v2, vs0, 1
33; CHECK-AIX-32-NEXT:    blr
34
35entry:
36  %0 = load <4 x i8>, ptr %s, align 4
37  %1 = shufflevector <4 x i8> %0, <4 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>
38  ret <16 x i8> %1
39}
40