[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / PowerPC / memcpy-vec.ll
blobc4e60f8c4b1f5acc1f19655b03a7481282d4ce73
1 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 < %s | FileCheck  %s -check-prefix=PWR7
2 ; RUN: llc -verify-machineinstrs -mcpu=pwr8 < %s | FileCheck  %s -check-prefix=PWR8
3 target datalayout = "E-m:e-i64:64-n32:64"
4 target triple = "powerpc64-unknown-linux-gnu"
6 ; Function Attrs: nounwind
7 define void @foo1(double* nocapture %x, double* nocapture readonly %y) #0 {
8 entry:
9   %0 = bitcast double* %x to i8*
10   %1 = bitcast double* %y to i8*
11   tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 32, i1 false)
12   ret void
14 ; PWR7-LABEL: @foo1
15 ; PWR7-NOT: bl memcpy
16 ; PWR7-DAG: li [[OFFSET:[0-9]+]], 16
17 ; PWR7-DAG: lxvd2x [[TMP0:[0-9]+]], 4, [[OFFSET]]
18 ; PWR7-DAG: stxvd2x [[TMP0]], 3, [[OFFSET]]
19 ; PWR7-DAG: lxvd2x [[TMP1:[0-9]+]], 0, 4
20 ; PWR7-DAG: stxvd2x [[TMP1]], 0, 3
21 ; PWR7: blr
23 ; PWR8-LABEL: @foo1
24 ; PWR8: lxvw4x
25 ; PWR8: stxvw4x
26 ; PWR8: blr
29 ; Function Attrs: nounwind
30 declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i1) #0
32 ; Function Attrs: nounwind
33 define void @foo2(double* nocapture %x, double* nocapture readonly %y) #0 {
34 entry:
35   %0 = bitcast double* %x to i8*
36   %1 = bitcast double* %y to i8*
37   tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %0, i8* align 8 %1, i64 128, i1 false)
38   ret void
40 ; PWR7-LABEL: @foo2
41 ; PWR7: bl memcpy
42 ; PWR7: blr
44 ; PWR8-LABEL: @foo2
45 ; PWR8: lxvw4x
46 ; PWR8: stxvw4x
47 ; PWR8: blr
50 ; Function Attrs: nounwind
51 define void @bar1(double* nocapture %x) #0 {
52 entry:
53   %0 = bitcast double* %x to i8*
54   tail call void @llvm.memset.p0i8.i64(i8* align 8 %0, i8 0, i64 128, i1 false)
55   ret void
57 ; PWR7-LABEL: @bar1
58 ; PWR7-NOT: bl memset
59 ; PWR7: stxvw4x
60 ; PWR7: blr
62 ; PWR8-LABEL: @bar1
63 ; PWR8-NOT: bl memset
64 ; PWR8: stxvw4x
65 ; PWR8: blr
68 ; Function Attrs: nounwind
69 define void @bar2(double* nocapture %x) #0 {
70 entry:
71   %0 = bitcast double* %x to i8*
72   tail call void @llvm.memset.p0i8.i64(i8* align 32 %0, i8 0, i64 128, i1 false)
73   ret void
75 ; PWR7-LABEL: @bar2
76 ; PWR7-NOT: bl memset
77 ; PWR7: stxvw4x
78 ; PWR7: blr
80 ; PWR8-LABEL: @bar2
81 ; PWR8-NOT: bl memset
82 ; PWR8: stxvw4x
83 ; PWR8: blr
86 ; Function Attrs: nounwind
87 declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i1) #0
89 attributes #0 = { nounwind }