xref: /llvm-project/llvm/test/Instrumentation/AddressSanitizer/AMDGPU/asan_instrument_mem_intrinsics.ll (revision 67f0a6917c07df6a21580adb567b1a8964818d92)
1;RUN: opt < %s -mtriple=amdgcn-amd-amdhsa -passes=asan -S | FileCheck %s
2
3target datalayout = "e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32-p7:160:256:256:32-p8:128:128-p9:192:256:256:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1-ni:7:8:9"
4
5declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)
6declare void @llvm.memcpy.p0.p1.i64(ptr noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i64, i1 immarg)
7declare void @llvm.memcpy.p0.p2.i64(ptr noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i64, i1 immarg)
8declare void @llvm.memcpy.p0.p3.i64(ptr noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i64, i1 immarg)
9declare void @llvm.memcpy.p0.p4.i64(ptr noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i64, i1 immarg)
10declare void @llvm.memcpy.p0.p5.i64(ptr noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i64, i1 immarg)
11
12declare void @llvm.memcpy.p0.p0.i32(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i32, i1 immarg)
13declare void @llvm.memcpy.p0.p1.i32(ptr noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i32, i1 immarg)
14declare void @llvm.memcpy.p0.p2.i32(ptr noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i32, i1 immarg)
15declare void @llvm.memcpy.p0.p3.i32(ptr noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i32, i1 immarg)
16declare void @llvm.memcpy.p0.p4.i32(ptr noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i32, i1 immarg)
17declare void @llvm.memcpy.p0.p5.i32(ptr noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i32, i1 immarg)
18
19declare void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)
20declare void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i64, i1 immarg)
21declare void @llvm.memcpy.p1.p2.i64(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i64, i1 immarg)
22declare void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i64, i1 immarg)
23declare void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i64, i1 immarg)
24declare void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i64, i1 immarg)
25
26declare void @llvm.memcpy.p1.p0.i32(ptr addrspace(1) noalias nocapture writeonly, ptr noalias nocapture readonly, i32, i1 immarg)
27declare void @llvm.memcpy.p1.p1.i32(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i32, i1 immarg)
28declare void @llvm.memcpy.p1.p2.i32(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i32, i1 immarg)
29declare void @llvm.memcpy.p1.p3.i32(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i32, i1 immarg)
30declare void @llvm.memcpy.p1.p4.i32(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i32, i1 immarg)
31declare void @llvm.memcpy.p1.p5.i32(ptr addrspace(1) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i32, i1 immarg)
32
33declare void @llvm.memcpy.p2.p0.i64(ptr addrspace(2) noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)
34declare void @llvm.memcpy.p2.p1.i64(ptr addrspace(2) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i64, i1 immarg)
35declare void @llvm.memcpy.p2.p2.i64(ptr addrspace(2) noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i64, i1 immarg)
36declare void @llvm.memcpy.p2.p3.i64(ptr addrspace(2) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i64, i1 immarg)
37declare void @llvm.memcpy.p2.p4.i64(ptr addrspace(2) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i64, i1 immarg)
38declare void @llvm.memcpy.p2.p5.i64(ptr addrspace(2) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i64, i1 immarg)
39
40declare void @llvm.memcpy.p2.p0.i32(ptr addrspace(2) noalias nocapture writeonly, ptr noalias nocapture readonly, i32, i1 immarg)
41declare void @llvm.memcpy.p2.p1.i32(ptr addrspace(2) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i32, i1 immarg)
42declare void @llvm.memcpy.p2.p2.i32(ptr addrspace(2) noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i32, i1 immarg)
43declare void @llvm.memcpy.p2.p3.i32(ptr addrspace(2) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i32, i1 immarg)
44declare void @llvm.memcpy.p2.p4.i32(ptr addrspace(2) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i32, i1 immarg)
45declare void @llvm.memcpy.p2.p5.i32(ptr addrspace(2) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i32, i1 immarg)
46
47declare void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)
48declare void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i64, i1 immarg)
49declare void @llvm.memcpy.p3.p2.i64(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i64, i1 immarg)
50declare void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i64, i1 immarg)
51declare void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i64, i1 immarg)
52declare void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i64, i1 immarg)
53
54declare void @llvm.memcpy.p3.p0.i32(ptr addrspace(3) noalias nocapture writeonly, ptr noalias nocapture readonly, i32, i1 immarg)
55declare void @llvm.memcpy.p3.p1.i32(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i32, i1 immarg)
56declare void @llvm.memcpy.p3.p2.i32(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i32, i1 immarg)
57declare void @llvm.memcpy.p3.p3.i32(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i32, i1 immarg)
58declare void @llvm.memcpy.p3.p4.i32(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i32, i1 immarg)
59declare void @llvm.memcpy.p3.p5.i32(ptr addrspace(3) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i32, i1 immarg)
60
61declare void @llvm.memcpy.p4.p0.i64(ptr addrspace(4) noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)
62declare void @llvm.memcpy.p4.p1.i64(ptr addrspace(4) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i64, i1 immarg)
63declare void @llvm.memcpy.p4.p2.i64(ptr addrspace(4) noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i64, i1 immarg)
64declare void @llvm.memcpy.p4.p3.i64(ptr addrspace(4) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i64, i1 immarg)
65declare void @llvm.memcpy.p4.p4.i64(ptr addrspace(4) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i64, i1 immarg)
66declare void @llvm.memcpy.p4.p5.i64(ptr addrspace(4) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i64, i1 immarg)
67
68declare void @llvm.memcpy.p4.p0.i32(ptr addrspace(4) noalias nocapture writeonly, ptr noalias nocapture readonly, i32, i1 immarg)
69declare void @llvm.memcpy.p4.p1.i32(ptr addrspace(4) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i32, i1 immarg)
70declare void @llvm.memcpy.p4.p2.i32(ptr addrspace(4) noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i32, i1 immarg)
71declare void @llvm.memcpy.p4.p3.i32(ptr addrspace(4) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i32, i1 immarg)
72declare void @llvm.memcpy.p4.p4.i32(ptr addrspace(4) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i32, i1 immarg)
73declare void @llvm.memcpy.p4.p5.i32(ptr addrspace(4) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i32, i1 immarg)
74
75declare void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)
76declare void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i64, i1 immarg)
77declare void @llvm.memcpy.p5.p2.i64(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i64, i1 immarg)
78declare void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i64, i1 immarg)
79declare void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i64, i1 immarg)
80declare void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i64, i1 immarg)
81
82declare void @llvm.memcpy.p5.p0.i32(ptr addrspace(5) noalias nocapture writeonly, ptr noalias nocapture readonly, i32, i1 immarg)
83declare void @llvm.memcpy.p5.p1.i32(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(1) noalias nocapture readonly, i32, i1 immarg)
84declare void @llvm.memcpy.p5.p2.i32(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(2) noalias nocapture readonly, i32, i1 immarg)
85declare void @llvm.memcpy.p5.p3.i32(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(3) noalias nocapture readonly, i32, i1 immarg)
86declare void @llvm.memcpy.p5.p4.i32(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(4) noalias nocapture readonly, i32, i1 immarg)
87declare void @llvm.memcpy.p5.p5.i32(ptr addrspace(5) noalias nocapture writeonly, ptr addrspace(5) noalias nocapture readonly, i32, i1 immarg)
88
89declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg)
90declare void @llvm.memmove.p0.p1.i64(ptr nocapture writeonly, ptr addrspace(1) nocapture readonly, i64, i1 immarg)
91declare void @llvm.memmove.p0.p2.i64(ptr nocapture writeonly, ptr addrspace(2) nocapture readonly, i64, i1 immarg)
92declare void @llvm.memmove.p0.p3.i64(ptr nocapture writeonly, ptr addrspace(3) nocapture readonly, i64, i1 immarg)
93declare void @llvm.memmove.p0.p4.i64(ptr nocapture writeonly, ptr addrspace(4) nocapture readonly, i64, i1 immarg)
94declare void @llvm.memmove.p0.p5.i64(ptr nocapture writeonly, ptr addrspace(5) nocapture readonly, i64, i1 immarg)
95
96declare void @llvm.memmove.p0.p0.i32(ptr nocapture writeonly, ptr nocapture readonly, i32, i1 immarg)
97declare void @llvm.memmove.p0.p1.i32(ptr nocapture writeonly, ptr addrspace(1) nocapture readonly, i32, i1 immarg)
98declare void @llvm.memmove.p0.p2.i32(ptr nocapture writeonly, ptr addrspace(2) nocapture readonly, i32, i1 immarg)
99declare void @llvm.memmove.p0.p3.i32(ptr nocapture writeonly, ptr addrspace(3) nocapture readonly, i32, i1 immarg)
100declare void @llvm.memmove.p0.p4.i32(ptr nocapture writeonly, ptr addrspace(4) nocapture readonly, i32, i1 immarg)
101declare void @llvm.memmove.p0.p5.i32(ptr nocapture writeonly, ptr addrspace(5) nocapture readonly, i32, i1 immarg)
102
103declare void @llvm.memmove.p1.p0.i64(ptr addrspace(1) nocapture writeonly, ptr nocapture readonly, i64, i1 immarg)
104declare void @llvm.memmove.p1.p1.i64(ptr addrspace(1) nocapture writeonly, ptr addrspace(1) nocapture readonly, i64, i1 immarg)
105declare void @llvm.memmove.p1.p2.i64(ptr addrspace(1) nocapture writeonly, ptr addrspace(2) nocapture readonly, i64, i1 immarg)
106declare void @llvm.memmove.p1.p3.i64(ptr addrspace(1) nocapture writeonly, ptr addrspace(3) nocapture readonly, i64, i1 immarg)
107declare void @llvm.memmove.p1.p4.i64(ptr addrspace(1) nocapture writeonly, ptr addrspace(4) nocapture readonly, i64, i1 immarg)
108declare void @llvm.memmove.p1.p5.i64(ptr addrspace(1) nocapture writeonly, ptr addrspace(5) nocapture readonly, i64, i1 immarg)
109
110declare void @llvm.memmove.p1.p0.i32(ptr addrspace(1) nocapture writeonly, ptr nocapture readonly, i32, i1 immarg)
111declare void @llvm.memmove.p1.p1.i32(ptr addrspace(1) nocapture writeonly, ptr addrspace(1) nocapture readonly, i32, i1 immarg)
112declare void @llvm.memmove.p1.p2.i32(ptr addrspace(1) nocapture writeonly, ptr addrspace(2) nocapture readonly, i32, i1 immarg)
113declare void @llvm.memmove.p1.p3.i32(ptr addrspace(1) nocapture writeonly, ptr addrspace(3) nocapture readonly, i32, i1 immarg)
114declare void @llvm.memmove.p1.p4.i32(ptr addrspace(1) nocapture writeonly, ptr addrspace(4) nocapture readonly, i32, i1 immarg)
115declare void @llvm.memmove.p1.p5.i32(ptr addrspace(1) nocapture writeonly, ptr addrspace(5) nocapture readonly, i32, i1 immarg)
116
117declare void @llvm.memmove.p2.p0.i64(ptr addrspace(2) nocapture writeonly, ptr nocapture readonly, i64, i1 immarg)
118declare void @llvm.memmove.p2.p1.i64(ptr addrspace(2) nocapture writeonly, ptr addrspace(1) nocapture readonly, i64, i1 immarg)
119declare void @llvm.memmove.p2.p2.i64(ptr addrspace(2) nocapture writeonly, ptr addrspace(2) nocapture readonly, i64, i1 immarg)
120declare void @llvm.memmove.p2.p3.i64(ptr addrspace(2) nocapture writeonly, ptr addrspace(3) nocapture readonly, i64, i1 immarg)
121declare void @llvm.memmove.p2.p4.i64(ptr addrspace(2) nocapture writeonly, ptr addrspace(4) nocapture readonly, i64, i1 immarg)
122declare void @llvm.memmove.p2.p5.i64(ptr addrspace(2) nocapture writeonly, ptr addrspace(5) nocapture readonly, i64, i1 immarg)
123
124declare void @llvm.memmove.p2.p0.i32(ptr addrspace(2) nocapture writeonly, ptr nocapture readonly, i32, i1 immarg)
125declare void @llvm.memmove.p2.p1.i32(ptr addrspace(2) nocapture writeonly, ptr addrspace(1) nocapture readonly, i32, i1 immarg)
126declare void @llvm.memmove.p2.p2.i32(ptr addrspace(2) nocapture writeonly, ptr addrspace(2) nocapture readonly, i32, i1 immarg)
127declare void @llvm.memmove.p2.p3.i32(ptr addrspace(2) nocapture writeonly, ptr addrspace(3) nocapture readonly, i32, i1 immarg)
128declare void @llvm.memmove.p2.p4.i32(ptr addrspace(2) nocapture writeonly, ptr addrspace(4) nocapture readonly, i32, i1 immarg)
129declare void @llvm.memmove.p2.p5.i32(ptr addrspace(2) nocapture writeonly, ptr addrspace(5) nocapture readonly, i32, i1 immarg)
130
131declare void @llvm.memmove.p3.p0.i64(ptr addrspace(3) nocapture writeonly, ptr nocapture readonly, i64, i1 immarg)
132declare void @llvm.memmove.p3.p1.i64(ptr addrspace(3) nocapture writeonly, ptr addrspace(1) nocapture readonly, i64, i1 immarg)
133declare void @llvm.memmove.p3.p2.i64(ptr addrspace(3) nocapture writeonly, ptr addrspace(2) nocapture readonly, i64, i1 immarg)
134declare void @llvm.memmove.p3.p3.i64(ptr addrspace(3) nocapture writeonly, ptr addrspace(3) nocapture readonly, i64, i1 immarg)
135declare void @llvm.memmove.p3.p4.i64(ptr addrspace(3) nocapture writeonly, ptr addrspace(4) nocapture readonly, i64, i1 immarg)
136declare void @llvm.memmove.p3.p5.i64(ptr addrspace(3) nocapture writeonly, ptr addrspace(5) nocapture readonly, i64, i1 immarg)
137
138declare void @llvm.memmove.p3.p0.i32(ptr addrspace(3) nocapture writeonly, ptr nocapture readonly, i32, i1 immarg)
139declare void @llvm.memmove.p3.p1.i32(ptr addrspace(3) nocapture writeonly, ptr addrspace(1) nocapture readonly, i32, i1 immarg)
140declare void @llvm.memmove.p3.p2.i32(ptr addrspace(3) nocapture writeonly, ptr addrspace(2) nocapture readonly, i32, i1 immarg)
141declare void @llvm.memmove.p3.p3.i32(ptr addrspace(3) nocapture writeonly, ptr addrspace(3) nocapture readonly, i32, i1 immarg)
142declare void @llvm.memmove.p3.p4.i32(ptr addrspace(3) nocapture writeonly, ptr addrspace(4) nocapture readonly, i32, i1 immarg)
143declare void @llvm.memmove.p3.p5.i32(ptr addrspace(3) nocapture writeonly, ptr addrspace(5) nocapture readonly, i32, i1 immarg)
144
145declare void @llvm.memmove.p4.p0.i64(ptr addrspace(4) nocapture writeonly, ptr nocapture readonly, i64, i1 immarg)
146declare void @llvm.memmove.p4.p1.i64(ptr addrspace(4) nocapture writeonly, ptr addrspace(1) nocapture readonly, i64, i1 immarg)
147declare void @llvm.memmove.p4.p2.i64(ptr addrspace(4) nocapture writeonly, ptr addrspace(2) nocapture readonly, i64, i1 immarg)
148declare void @llvm.memmove.p4.p3.i64(ptr addrspace(4) nocapture writeonly, ptr addrspace(3) nocapture readonly, i64, i1 immarg)
149declare void @llvm.memmove.p4.p4.i64(ptr addrspace(4) nocapture writeonly, ptr addrspace(4) nocapture readonly, i64, i1 immarg)
150declare void @llvm.memmove.p4.p5.i64(ptr addrspace(4) nocapture writeonly, ptr addrspace(5) nocapture readonly, i64, i1 immarg)
151
152declare void @llvm.memmove.p4.p0.i32(ptr addrspace(4) nocapture writeonly, ptr nocapture readonly, i32, i1 immarg)
153declare void @llvm.memmove.p4.p1.i32(ptr addrspace(4) nocapture writeonly, ptr addrspace(1) nocapture readonly, i32, i1 immarg)
154declare void @llvm.memmove.p4.p2.i32(ptr addrspace(4) nocapture writeonly, ptr addrspace(2) nocapture readonly, i32, i1 immarg)
155declare void @llvm.memmove.p4.p3.i32(ptr addrspace(4) nocapture writeonly, ptr addrspace(3) nocapture readonly, i32, i1 immarg)
156declare void @llvm.memmove.p4.p4.i32(ptr addrspace(4) nocapture writeonly, ptr addrspace(4) nocapture readonly, i32, i1 immarg)
157declare void @llvm.memmove.p4.p5.i32(ptr addrspace(4) nocapture writeonly, ptr addrspace(5) nocapture readonly, i32, i1 immarg)
158
159declare void @llvm.memmove.p5.p0.i64(ptr addrspace(5) nocapture writeonly, ptr nocapture readonly, i64, i1 immarg)
160declare void @llvm.memmove.p5.p1.i64(ptr addrspace(5) nocapture writeonly, ptr addrspace(1) nocapture readonly, i64, i1 immarg)
161declare void @llvm.memmove.p5.p2.i64(ptr addrspace(5) nocapture writeonly, ptr addrspace(2) nocapture readonly, i64, i1 immarg)
162declare void @llvm.memmove.p5.p3.i64(ptr addrspace(5) nocapture writeonly, ptr addrspace(3) nocapture readonly, i64, i1 immarg)
163declare void @llvm.memmove.p5.p4.i64(ptr addrspace(5) nocapture writeonly, ptr addrspace(4) nocapture readonly, i64, i1 immarg)
164declare void @llvm.memmove.p5.p5.i64(ptr addrspace(5) nocapture writeonly, ptr addrspace(5) nocapture readonly, i64, i1 immarg)
165
166declare void @llvm.memmove.p5.p0.i32(ptr addrspace(5) nocapture writeonly, ptr nocapture readonly, i32, i1 immarg)
167declare void @llvm.memmove.p5.p1.i32(ptr addrspace(5) nocapture writeonly, ptr addrspace(1) nocapture readonly, i32, i1 immarg)
168declare void @llvm.memmove.p5.p2.i32(ptr addrspace(5) nocapture writeonly, ptr addrspace(2) nocapture readonly, i32, i1 immarg)
169declare void @llvm.memmove.p5.p3.i32(ptr addrspace(5) nocapture writeonly, ptr addrspace(3) nocapture readonly, i32, i1 immarg)
170declare void @llvm.memmove.p5.p4.i32(ptr addrspace(5) nocapture writeonly, ptr addrspace(4) nocapture readonly, i32, i1 immarg)
171declare void @llvm.memmove.p5.p5.i32(ptr addrspace(5) nocapture writeonly, ptr addrspace(5) nocapture readonly, i32, i1 immarg)
172
173declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg)
174declare void @llvm.memset.p1.i64(ptr addrspace(1) nocapture writeonly, i8, i64, i1 immarg)
175declare void @llvm.memset.p2.i64(ptr addrspace(2) nocapture writeonly, i8, i64, i1 immarg)
176declare void @llvm.memset.p3.i64(ptr addrspace(3) nocapture writeonly, i8, i64, i1 immarg)
177declare void @llvm.memset.p4.i64(ptr addrspace(4) nocapture writeonly, i8, i64, i1 immarg)
178declare void @llvm.memset.p5.i64(ptr addrspace(5) nocapture writeonly, i8, i64, i1 immarg)
179
180declare void @llvm.memset.p0.i32(ptr nocapture writeonly, i8, i32, i1 immarg)
181declare void @llvm.memset.p1.i32(ptr addrspace(1) nocapture writeonly, i8, i32, i1 immarg)
182declare void @llvm.memset.p2.i32(ptr addrspace(2) nocapture writeonly, i8, i32, i1 immarg)
183declare void @llvm.memset.p3.i32(ptr addrspace(3) nocapture writeonly, i8, i32, i1 immarg)
184declare void @llvm.memset.p4.i32(ptr addrspace(4) nocapture writeonly, i8, i32, i1 immarg)
185declare void @llvm.memset.p5.i32(ptr addrspace(5) nocapture writeonly, i8, i32, i1 immarg)
186
187define void @test_mem_intrinsic_memcpy(ptr %dest0,ptr %src0,ptr addrspace(1) %dest1,ptr addrspace(1) %src1,ptr addrspace(2) %dest2,ptr addrspace(2) %src2,ptr addrspace(3) %dest3,ptr addrspace(3) %src3,ptr addrspace(4) %dest4,ptr addrspace(4) %src4,ptr addrspace(5) %dest5,ptr addrspace(5) %src5) #0 {
188entry:
189  ;CHECK: define void @test_mem_intrinsic_memcpy(ptr [[DEST0:%.*]], ptr [[SRC0:%.*]], ptr addrspace(1) [[DEST1:%.*]], ptr addrspace(1) [[SRC1:%.*]], ptr addrspace(2) [[DEST2:%.*]], ptr addrspace(2) [[SRC2:%.*]], ptr addrspace(3) [[DEST3:%.*]], ptr addrspace(3) [[SRC3:%.*]], ptr addrspace(4) [[DEST4:%.*]], ptr addrspace(4) [[SRC4:%.*]], ptr addrspace(5) [[DEST5:%.*]], ptr addrspace(5) [[SRC5:%.*]]) #2 {
190  ;CHECK-NEXT: entry:
191  ;CHECK-NEXT: [[VR0:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr [[SRC0]], i64 64)
192  ;CHECK-NEXT: [[VR1:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
193  ;CHECK-NEXT: [[VR2:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr [[VR1]], i64 64)
194  ;CHECK-NEXT: [[VR3:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
195  ;CHECK-NEXT: [[VR4:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr [[VR3]], i64 64)
196  ;CHECK-NEXT: [[VR5:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
197  ;CHECK-NEXT: [[VR6:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr [[VR5]], i64 64)
198  ;CHECK-NEXT: [[VR7:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
199  ;CHECK-NEXT: [[VR8:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr [[VR7]], i64 64)
200  ;CHECK-NEXT: [[VR9:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
201  ;CHECK-NEXT: [[VR10:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr [[VR9]], i64 64)
202  ;CHECK-NEXT: [[VR11:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr [[SRC0]], i64 32)
203  ;CHECK-NEXT: [[VR12:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
204  ;CHECK-NEXT: [[VR13:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr [[VR12]], i64 32)
205  ;CHECK-NEXT: [[VR14:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
206  ;CHECK-NEXT: [[VR15:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr [[VR14]], i64 32)
207  ;CHECK-NEXT: [[VR16:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
208  ;CHECK-NEXT: [[VR17:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr [[VR16]], i64 32)
209  ;CHECK-NEXT: [[VR18:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
210  ;CHECK-NEXT: [[VR19:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr %18, i64 32)
211  ;CHECK-NEXT: [[VR20:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
212  ;CHECK-NEXT: [[VR21:%.*]] = call ptr @__asan_memcpy(ptr [[DEST0]], ptr [[VR20]], i64 32)
213  ;CHECK-NEXT: [[VR22:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
214  ;CHECK-NEXT: [[VR23:%.*]] = call ptr @__asan_memcpy(ptr [[VR22]], ptr [[SRC0]], i64 64)
215  ;CHECK-NEXT: [[VR24:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
216  ;CHECK-NEXT: [[VR25:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
217  ;CHECK-NEXT: [[VR26:%.*]] = call ptr @__asan_memcpy(ptr [[VR24]], ptr [[VR25]], i64 64)
218  ;CHECK-NEXT: [[VR27:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
219  ;CHECK-NEXT: [[VR28:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
220  ;CHECK-NEXT: [[VR29:%.*]] = call ptr @__asan_memcpy(ptr [[VR27]], ptr [[VR28]], i64 64)
221  ;CHECK-NEXT: [[VR30:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
222  ;CHECK-NEXT: [[VR31:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
223  ;CHECK-NEXT: [[VR32:%.*]] = call ptr @__asan_memcpy(ptr [[VR30]], ptr [[VR31]], i64 64)
224  ;CHECK-NEXT: [[VR33:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
225  ;CHECK-NEXT: [[VR34:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
226  ;CHECK-NEXT: [[VR35:%.*]] = call ptr @__asan_memcpy(ptr [[VR33]], ptr [[VR34]], i64 64)
227  ;CHECK-NEXT: [[VR36:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
228  ;CHECK-NEXT: [[VR37:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
229  ;CHECK-NEXT: [[VR38:%.*]] = call ptr @__asan_memcpy(ptr [[VR36]], ptr [[VR37]], i64 64)
230  ;CHECK-NEXT: [[VR39:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
231  ;CHECK-NEXT: [[VR40:%.*]] = call ptr @__asan_memcpy(ptr [[VR39]], ptr [[SRC0]], i64 32)
232  ;CHECK-NEXT: [[VR41:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
233  ;CHECK-NEXT: [[VR42:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
234  ;CHECK-NEXT: [[VR43:%.*]] = call ptr @__asan_memcpy(ptr [[VR41]], ptr [[VR42]], i64 32)
235  ;CHECK-NEXT: [[VR44:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
236  ;CHECK-NEXT: [[VR45:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
237  ;CHECK-NEXT: [[VR46:%.*]] = call ptr @__asan_memcpy(ptr [[VR44]], ptr [[VR45]], i64 32)
238  ;CHECK-NEXT: [[VR47:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
239  ;CHECK-NEXT: [[VR48:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
240  ;CHECK-NEXT: [[VR49:%.*]] = call ptr @__asan_memcpy(ptr [[VR47]], ptr [[VR48]], i64 32)
241  ;CHECK-NEXT: [[VR50:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
242  ;CHECK-NEXT: [[VR51:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
243  ;CHECK-NEXT: [[VR52:%.*]] = call ptr @__asan_memcpy(ptr [[VR50]], ptr [[VR51]], i64 32)
244  ;CHECK-NEXT: [[VR53:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
245  ;CHECK-NEXT: [[VR54:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
246  ;CHECK-NEXT: [[VR55:%.*]] = call ptr @__asan_memcpy(ptr [[VR53]], ptr [[VR54]], i64 32)
247  ;CHECK-NEXT: [[VR56:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
248  ;CHECK-NEXT: [[VR57:%.*]] = call ptr @__asan_memcpy(ptr [[VR56]], ptr [[SRC0]], i64 64)
249  ;CHECK-NEXT: [[VR58:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
250  ;CHECK-NEXT: [[VR59:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
251  ;CHECK-NEXT: [[VR60:%.*]] = call ptr @__asan_memcpy(ptr [[VR58]], ptr [[VR59]], i64 64)
252  ;CHECK-NEXT: [[VR61:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
253  ;CHECK-NEXT: [[VR62:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
254  ;CHECK-NEXT: [[VR63:%.*]] = call ptr @__asan_memcpy(ptr [[VR61]], ptr [[VR62]], i64 64)
255  ;CHECK-NEXT: [[VR64:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
256  ;CHECK-NEXT: [[VR65:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
257  ;CHECK-NEXT: [[VR66:%.*]] = call ptr @__asan_memcpy(ptr [[VR64]], ptr [[VR65]], i64 64)
258  ;CHECK-NEXT: [[VR67:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
259  ;CHECK-NEXT: [[VR68:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
260  ;CHECK-NEXT: [[VR69:%.*]] = call ptr @__asan_memcpy(ptr [[VR67]], ptr [[VR68]], i64 64)
261  ;CHECK-NEXT: [[VR70:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
262  ;CHECK-NEXT: [[VR71:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
263  ;CHECK-NEXT: [[VR72:%.*]] = call ptr @__asan_memcpy(ptr [[VR70]], ptr [[VR71]], i64 64)
264  ;CHECK-NEXT: [[VR73:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
265  ;CHECK-NEXT: [[VR74:%.*]] = call ptr @__asan_memcpy(ptr [[VR73]], ptr [[SRC0]], i64 32)
266  ;CHECK-NEXT: [[VR75:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
267  ;CHECK-NEXT: [[VR76:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
268  ;CHECK-NEXT: [[VR77:%.*]] = call ptr @__asan_memcpy(ptr [[VR75]], ptr [[VR76]], i64 32)
269  ;CHECK-NEXT: [[VR78:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
270  ;CHECK-NEXT: [[VR79:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
271  ;CHECK-NEXT: [[VR80:%.*]] = call ptr @__asan_memcpy(ptr [[VR78]], ptr [[VR79]], i64 32)
272  ;CHECK-NEXT: [[VR81:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
273  ;CHECK-NEXT: [[VR82:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
274  ;CHECK-NEXT: [[VR83:%.*]] = call ptr @__asan_memcpy(ptr [[VR81]], ptr [[VR82]], i64 32)
275  ;CHECK-NEXT: [[VR84:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
276  ;CHECK-NEXT: [[VR85:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
277  ;CHECK-NEXT: [[VR86:%.*]] = call ptr @__asan_memcpy(ptr [[VR84]], ptr [[VR85]], i64 32)
278  ;CHECK-NEXT: [[VR87:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
279  ;CHECK-NEXT: [[VR88:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
280  ;CHECK-NEXT: [[VR89:%.*]] = call ptr @__asan_memcpy(ptr [[VR87]], ptr [[VR88]], i64 32)
281  ;CHECK-NEXT: [[VR90:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
282  ;CHECK-NEXT: [[VR91:%.*]] = call ptr @__asan_memcpy(ptr [[VR90]], ptr [[SRC0]], i64 64)
283  ;CHECK-NEXT: [[VR92:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
284  ;CHECK-NEXT: [[VR93:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
285  ;CHECK-NEXT: [[VR94:%.*]] = call ptr @__asan_memcpy(ptr [[VR92]], ptr [[VR93]], i64 64)
286  ;CHECK-NEXT: [[VR95:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
287  ;CHECK-NEXT: [[VR96:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
288  ;CHECK-NEXT: [[VR97:%.*]] = call ptr @__asan_memcpy(ptr [[VR95]], ptr [[VR96]], i64 64)
289  ;CHECK-NEXT: [[VR98:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
290  ;CHECK-NEXT: [[VR99:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
291  ;CHECK-NEXT: [[VR100:%.*]] = call ptr @__asan_memcpy(ptr [[VR98]], ptr [[VR99]], i64 64)
292  ;CHECK-NEXT: [[VR101:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
293  ;CHECK-NEXT: [[VR102:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
294  ;CHECK-NEXT: [[VR103:%.*]] = call ptr @__asan_memcpy(ptr [[VR101]], ptr [[VR102]], i64 64)
295  ;CHECK-NEXT: [[VR104:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
296  ;CHECK-NEXT: [[VR105:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
297  ;CHECK-NEXT: [[VR106:%.*]] = call ptr @__asan_memcpy(ptr [[VR104]], ptr [[VR105]], i64 64)
298  ;CHECK-NEXT: [[VR107:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
299  ;CHECK-NEXT: [[VR108:%.*]] = call ptr @__asan_memcpy(ptr [[VR107]], ptr [[SRC0]], i64 32)
300  ;CHECK-NEXT: [[VR109:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
301  ;CHECK-NEXT: [[VR110:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
302  ;CHECK-NEXT: [[VR111:%.*]] = call ptr @__asan_memcpy(ptr [[VR109]], ptr [[VR110]], i64 32)
303  ;CHECK-NEXT: [[VR112:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
304  ;CHECK-NEXT: [[VR113:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
305  ;CHECK-NEXT: [[VR114:%.*]] = call ptr @__asan_memcpy(ptr [[VR112]], ptr [[VR113]], i64 32)
306  ;CHECK-NEXT: [[VR115:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
307  ;CHECK-NEXT: [[VR116:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
308  ;CHECK-NEXT: [[VR117:%.*]] = call ptr @__asan_memcpy(ptr [[VR115]], ptr [[VR116]], i64 32)
309  ;CHECK-NEXT: [[VR118:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
310  ;CHECK-NEXT: [[VR119:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
311  ;CHECK-NEXT: [[VR120:%.*]] = call ptr @__asan_memcpy(ptr [[VR118]], ptr [[VR119]], i64 32)
312  ;CHECK-NEXT: [[VR121:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
313  ;CHECK-NEXT: [[VR122:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
314  ;CHECK-NEXT: [[VR123:%.*]] = call ptr @__asan_memcpy(ptr [[VR121]], ptr [[VR122]], i64 32)
315  ;CHECK-NEXT: [[VR124:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
316  ;CHECK-NEXT: [[VR125:%.*]] = call ptr @__asan_memcpy(ptr [[VR124]], ptr [[SRC0]], i64 64)
317  ;CHECK-NEXT: [[VR126:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
318  ;CHECK-NEXT: [[VR127:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
319  ;CHECK-NEXT: [[VR128:%.*]] = call ptr @__asan_memcpy(ptr [[VR126]], ptr [[VR127]], i64 64)
320  ;CHECK-NEXT: [[VR129:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
321  ;CHECK-NEXT: [[VR130:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
322  ;CHECK-NEXT: [[VR131:%.*]] = call ptr @__asan_memcpy(ptr [[VR129]], ptr [[VR130]], i64 64)
323  ;CHECK-NEXT: [[VR132:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
324  ;CHECK-NEXT: [[VR133:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
325  ;CHECK-NEXT: [[VR134:%.*]] = call ptr @__asan_memcpy(ptr [[VR132]], ptr [[VR133]], i64 64)
326  ;CHECK-NEXT: [[VR135:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
327  ;CHECK-NEXT: [[VR136:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
328  ;CHECK-NEXT: [[VR137:%.*]] = call ptr @__asan_memcpy(ptr [[VR135]], ptr [[VR136]], i64 64)
329  ;CHECK-NEXT: [[VR138:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
330  ;CHECK-NEXT: [[VR139:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
331  ;CHECK-NEXT: [[VR140:%.*]] = call ptr @__asan_memcpy(ptr [[VR138]], ptr [[VR139]], i64 64)
332  ;CHECK-NEXT: [[VR141:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
333  ;CHECK-NEXT: [[VR142:%.*]] = call ptr @__asan_memcpy(ptr [[VR141]], ptr [[SRC0]], i64 32)
334  ;CHECK-NEXT: [[VR143:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
335  ;CHECK-NEXT: [[VR144:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
336  ;CHECK-NEXT: [[VR145:%.*]] = call ptr @__asan_memcpy(ptr [[VR143]], ptr [[VR144]], i64 32)
337  ;CHECK-NEXT: [[VR146:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
338  ;CHECK-NEXT: [[VR147:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
339  ;CHECK-NEXT: [[VR148:%.*]] = call ptr @__asan_memcpy(ptr [[VR146]], ptr [[VR147]], i64 32)
340  ;CHECK-NEXT: [[VR149:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
341  ;CHECK-NEXT: [[VR150:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
342  ;CHECK-NEXT: [[VR151:%.*]] = call ptr @__asan_memcpy(ptr [[VR149]], ptr [[VR150]], i64 32)
343  ;CHECK-NEXT: [[VR152:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
344  ;CHECK-NEXT: [[VR153:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
345  ;CHECK-NEXT: [[VR154:%.*]] = call ptr @__asan_memcpy(ptr [[VR152]], ptr [[VR153]], i64 32)
346  ;CHECK-NEXT: [[VR155:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
347  ;CHECK-NEXT: [[VR156:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
348  ;CHECK-NEXT: [[VR157:%.*]] = call ptr @__asan_memcpy(ptr [[VR155]], ptr [[VR156]], i64 32)
349  ;CHECK-NEXT: [[VR158:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
350  ;CHECK-NEXT: [[VR159:%.*]] = call ptr @__asan_memcpy(ptr [[VR158]], ptr [[SRC0]], i64 64)
351  ;CHECK-NEXT: [[VR160:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
352  ;CHECK-NEXT: [[VR161:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
353  ;CHECK-NEXT: [[VR162:%.*]] = call ptr @__asan_memcpy(ptr [[VR160]], ptr [[VR161]], i64 64)
354  ;CHECK-NEXT: [[VR163:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
355  ;CHECK-NEXT: [[VR164:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
356  ;CHECK-NEXT: [[VR165:%.*]] = call ptr @__asan_memcpy(ptr [[VR163]], ptr [[VR164]], i64 64)
357  ;CHECK-NEXT: [[VR166:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
358  ;CHECK-NEXT: [[VR167:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
359  ;CHECK-NEXT: [[VR168:%.*]] = call ptr @__asan_memcpy(ptr [[VR166]], ptr [[VR167]], i64 64)
360  ;CHECK-NEXT: [[VR169:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
361  ;CHECK-NEXT: [[VR170:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
362  ;CHECK-NEXT: [[VR171:%.*]] = call ptr @__asan_memcpy(ptr [[VR169]], ptr [[VR170]], i64 64)
363  ;CHECK-NEXT: [[VR172:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
364  ;CHECK-NEXT: [[VR173:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
365  ;CHECK-NEXT: [[VR174:%.*]] = call ptr @__asan_memcpy(ptr [[VR172]], ptr [[VR173]], i64 64)
366  ;CHECK-NEXT: [[VR175:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
367  ;CHECK-NEXT: [[VR176:%.*]] = call ptr @__asan_memcpy(ptr %175, ptr %src0, i64 32)
368  ;CHECK-NEXT: [[VR177:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
369  ;CHECK-NEXT: [[VR178:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
370  ;CHECK-NEXT: [[VR179:%.*]] = call ptr @__asan_memcpy(ptr [[VR177]], ptr [[VR178]], i64 32)
371  ;CHECK-NEXT: [[VR180:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
372  ;CHECK-NEXT: [[VR181:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
373  ;CHECK-NEXT: [[VR182:%.*]] = call ptr @__asan_memcpy(ptr [[VR180]], ptr [[VR181]], i64 32)
374  ;CHECK-NEXT: [[VR183:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
375  ;CHECK-NEXT: [[VR184:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
376  ;CHECK-NEXT: [[VR185:%.*]] = call ptr @__asan_memcpy(ptr [[VR183]], ptr [[VR184]], i64 32)
377  ;CHECK-NEXT: [[VR186:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
378  ;CHECK-NEXT: [[VR187:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
379  ;CHECK-NEXT: [[VR188:%.*]] = call ptr @__asan_memcpy(ptr [[VR186]], ptr [[VR187]], i64 32)
380  ;CHECK-NEXT: [[VR189:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
381  ;CHECK-NEXT: [[VR190:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
382  ;CHECK-NEXT: [[VR191:%.*]] = call ptr @__asan_memcpy(ptr [[VR189]], ptr [[VR190]], i64 32)
383
384  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %dest0, ptr align 16 %src0, i64 64, i1 false)
385  call void @llvm.memcpy.p0.p1.i64(ptr align 16 %dest0, ptr addrspace(1) align 16 %src1, i64 64, i1 false)
386  call void @llvm.memcpy.p0.p2.i64(ptr align 16 %dest0, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
387  call void @llvm.memcpy.p0.p3.i64(ptr align 16 %dest0, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
388  call void @llvm.memcpy.p0.p4.i64(ptr align 16 %dest0, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
389  call void @llvm.memcpy.p0.p5.i64(ptr align 16 %dest0, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
390
391  call void @llvm.memcpy.p0.p0.i32(ptr align 16 %dest0, ptr align 16 %src0, i32 32, i1 false)
392  call void @llvm.memcpy.p0.p1.i32(ptr align 16 %dest0, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
393  call void @llvm.memcpy.p0.p2.i32(ptr align 16 %dest0, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
394  call void @llvm.memcpy.p0.p3.i32(ptr align 16 %dest0, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
395  call void @llvm.memcpy.p0.p4.i32(ptr align 16 %dest0, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
396  call void @llvm.memcpy.p0.p5.i32(ptr align 16 %dest0, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
397
398  call void @llvm.memcpy.p1.p0.i64(ptr addrspace(1) align 16 %dest1, ptr align 16 %src0, i64 64, i1 false)
399  call void @llvm.memcpy.p1.p1.i64(ptr addrspace(1) align 16 %dest1, ptr addrspace(1) align 16 %src1, i64 64, i1 false)
400  call void @llvm.memcpy.p1.p2.i64(ptr addrspace(1) align 16 %dest1, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
401  call void @llvm.memcpy.p1.p3.i64(ptr addrspace(1) align 16 %dest1, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
402  call void @llvm.memcpy.p1.p4.i64(ptr addrspace(1) align 16 %dest1, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
403  call void @llvm.memcpy.p1.p5.i64(ptr addrspace(1) align 16 %dest1, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
404
405  call void @llvm.memcpy.p1.p0.i32(ptr addrspace(1) align 16 %dest1, ptr align 16 %src0, i32 32, i1 false)
406  call void @llvm.memcpy.p1.p1.i32(ptr addrspace(1) align 16 %dest1, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
407  call void @llvm.memcpy.p1.p2.i32(ptr addrspace(1) align 16 %dest1, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
408  call void @llvm.memcpy.p1.p3.i32(ptr addrspace(1) align 16 %dest1, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
409  call void @llvm.memcpy.p1.p4.i32(ptr addrspace(1) align 16 %dest1, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
410  call void @llvm.memcpy.p1.p5.i32(ptr addrspace(1) align 16 %dest1, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
411
412  call void @llvm.memcpy.p2.p0.i64(ptr addrspace(2) align 16 %dest2, ptr align 16 %src0, i64 64, i1 false)
413  call void @llvm.memcpy.p2.p1.i64(ptr addrspace(2) align 16 %dest2, ptr addrspace(1) align 16 %src1, i64 64, i1 false)
414  call void @llvm.memcpy.p2.p2.i64(ptr addrspace(2) align 16 %dest2, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
415  call void @llvm.memcpy.p2.p3.i64(ptr addrspace(2) align 16 %dest2, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
416  call void @llvm.memcpy.p2.p4.i64(ptr addrspace(2) align 16 %dest2, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
417  call void @llvm.memcpy.p2.p5.i64(ptr addrspace(2) align 16 %dest2, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
418
419  call void @llvm.memcpy.p2.p0.i32(ptr addrspace(2) align 16 %dest2, ptr align 16 %src0, i32 32, i1 false)
420  call void @llvm.memcpy.p2.p1.i32(ptr addrspace(2) align 16 %dest2, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
421  call void @llvm.memcpy.p2.p2.i32(ptr addrspace(2) align 16 %dest2, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
422  call void @llvm.memcpy.p2.p3.i32(ptr addrspace(2) align 16 %dest2, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
423  call void @llvm.memcpy.p2.p4.i32(ptr addrspace(2) align 16 %dest2, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
424  call void @llvm.memcpy.p2.p5.i32(ptr addrspace(2) align 16 %dest2, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
425
426  call void @llvm.memcpy.p3.p0.i64(ptr addrspace(3) align 16 %dest3, ptr align 16 %src0, i64 64, i1 false)
427  call void @llvm.memcpy.p3.p1.i64(ptr addrspace(3) align 16 %dest3, ptr addrspace(1) align 16 %src1, i64 64, i1 false)
428  call void @llvm.memcpy.p3.p2.i64(ptr addrspace(3) align 16 %dest3, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
429  call void @llvm.memcpy.p3.p3.i64(ptr addrspace(3) align 16 %dest3, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
430  call void @llvm.memcpy.p3.p4.i64(ptr addrspace(3) align 16 %dest3, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
431  call void @llvm.memcpy.p3.p5.i64(ptr addrspace(3) align 16 %dest3, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
432
433  call void @llvm.memcpy.p3.p0.i32(ptr addrspace(3) align 16 %dest3, ptr align 16 %src0, i32 32, i1 false)
434  call void @llvm.memcpy.p3.p1.i32(ptr addrspace(3) align 16 %dest3, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
435  call void @llvm.memcpy.p3.p2.i32(ptr addrspace(3) align 16 %dest3, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
436  call void @llvm.memcpy.p3.p3.i32(ptr addrspace(3) align 16 %dest3, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
437  call void @llvm.memcpy.p3.p4.i32(ptr addrspace(3) align 16 %dest3, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
438  call void @llvm.memcpy.p3.p5.i32(ptr addrspace(3) align 16 %dest3, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
439
440  call void @llvm.memcpy.p4.p0.i64(ptr addrspace(4) align 16 %dest4, ptr align 16 %src0, i64 64, i1 false)
441  call void @llvm.memcpy.p4.p1.i64(ptr addrspace(4) align 16 %dest4, ptr addrspace(1) align 16 %src1, i64 64, i1 false)
442  call void @llvm.memcpy.p4.p2.i64(ptr addrspace(4) align 16 %dest4, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
443  call void @llvm.memcpy.p4.p3.i64(ptr addrspace(4) align 16 %dest4, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
444  call void @llvm.memcpy.p4.p4.i64(ptr addrspace(4) align 16 %dest4, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
445  call void @llvm.memcpy.p4.p5.i64(ptr addrspace(4) align 16 %dest4, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
446
447  call void @llvm.memcpy.p4.p0.i32(ptr addrspace(4) align 16 %dest4, ptr align 16 %src0, i32 32, i1 false)
448  call void @llvm.memcpy.p4.p1.i32(ptr addrspace(4) align 16 %dest4, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
449  call void @llvm.memcpy.p4.p2.i32(ptr addrspace(4) align 16 %dest4, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
450  call void @llvm.memcpy.p4.p3.i32(ptr addrspace(4) align 16 %dest4, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
451  call void @llvm.memcpy.p4.p4.i32(ptr addrspace(4) align 16 %dest4, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
452  call void @llvm.memcpy.p4.p5.i32(ptr addrspace(4) align 16 %dest4, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
453
454  call void @llvm.memcpy.p5.p0.i64(ptr addrspace(5) align 16 %dest5, ptr align 16 %src0, i64 64, i1 false)
455  call void @llvm.memcpy.p5.p1.i64(ptr addrspace(5) align 16 %dest5, ptr addrspace(1) align 16 %src1, i64 64, i1 false)
456  call void @llvm.memcpy.p5.p2.i64(ptr addrspace(5) align 16 %dest5, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
457  call void @llvm.memcpy.p5.p3.i64(ptr addrspace(5) align 16 %dest5, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
458  call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) align 16 %dest5, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
459  call void @llvm.memcpy.p5.p5.i64(ptr addrspace(5) align 16 %dest5, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
460
461  call void @llvm.memcpy.p5.p0.i32(ptr addrspace(5) align 16 %dest5, ptr align 16 %src0, i32 32, i1 false)
462  call void @llvm.memcpy.p5.p1.i32(ptr addrspace(5) align 16 %dest5, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
463  call void @llvm.memcpy.p5.p2.i32(ptr addrspace(5) align 16 %dest5, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
464  call void @llvm.memcpy.p5.p3.i32(ptr addrspace(5) align 16 %dest5, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
465  call void @llvm.memcpy.p5.p4.i32(ptr addrspace(5) align 16 %dest5, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
466  call void @llvm.memcpy.p5.p5.i32(ptr addrspace(5) align 16 %dest5, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
467  ret void
468}
469
470define void @test_mem_intrinsic_memmove(ptr %dest0,ptr %src0,ptr addrspace(1) %dest1,ptr addrspace(1) %src1,ptr addrspace(2) %dest2,ptr addrspace(2) %src2,ptr addrspace(3) %dest3,ptr addrspace(3) %src3,ptr addrspace(4) %dest4,ptr addrspace(4) %src4,ptr addrspace(5) %dest5,ptr addrspace(5) %src5) #0 {
471entry:
472  ;CHECK: define void @test_mem_intrinsic_memmove(ptr [[DEST0:%.*]], ptr [[SRC0:%.*]], ptr addrspace(1) [[DEST1:%.*]], ptr addrspace(1) [[SRC1:%.*]], ptr addrspace(2) [[DEST2:%.*]], ptr addrspace(2) [[SRC2:%.*]], ptr addrspace(3) [[DEST3:%.*]], ptr addrspace(3) [[SRC3:%.*]], ptr addrspace(4) [[DEST4:%.*]], ptr addrspace(4) [[SRC4:%.*]], ptr addrspace(5) [[DEST5:%.*]], ptr addrspace(5) [[SRC5:%.*]]) #2 {
473  ;CHECK-NEXT: entry:
474  ;CHECK-NEXT: [[VR0:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr [[SRC0]], i64 64)
475  ;CHECK-NEXT: [[VR1:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
476  ;CHECK-NEXT: [[VR2:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr [[VR1]], i64 64)
477  ;CHECK-NEXT: [[VR3:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
478  ;CHECK-NEXT: [[VR4:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr [[VR3]], i64 64)
479  ;CHECK-NEXT: [[VR5:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
480  ;CHECK-NEXT: [[VR6:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr [[VR5]], i64 64)
481  ;CHECK-NEXT: [[VR7:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
482  ;CHECK-NEXT: [[VR8:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr [[VR7]], i64 64)
483  ;CHECK-NEXT: [[VR9:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
484  ;CHECK-NEXT: [[VR10:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr [[VR9]], i64 64)
485  ;CHECK-NEXT: [[VR11:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr [[SRC0]], i64 32)
486  ;CHECK-NEXT: [[VR12:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
487  ;CHECK-NEXT: [[VR13:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr [[VR12]], i64 32)
488  ;CHECK-NEXT: [[VR14:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
489  ;CHECK-NEXT: [[VR15:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr [[VR14]], i64 32)
490  ;CHECK-NEXT: [[VR16:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
491  ;CHECK-NEXT: [[VR17:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr [[VR16]], i64 32)
492  ;CHECK-NEXT: [[VR18:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
493  ;CHECK-NEXT: [[VR19:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr %18, i64 32)
494  ;CHECK-NEXT: [[VR20:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
495  ;CHECK-NEXT: [[VR21:%.*]] = call ptr @__asan_memmove(ptr [[DEST0]], ptr [[VR20]], i64 32)
496  ;CHECK-NEXT: [[VR22:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
497  ;CHECK-NEXT: [[VR23:%.*]] = call ptr @__asan_memmove(ptr [[VR22]], ptr [[SRC0]], i64 64)
498  ;CHECK-NEXT: [[VR24:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
499  ;CHECK-NEXT: [[VR25:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
500  ;CHECK-NEXT: [[VR26:%.*]] = call ptr @__asan_memmove(ptr [[VR24]], ptr [[VR25]], i64 64)
501  ;CHECK-NEXT: [[VR27:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
502  ;CHECK-NEXT: [[VR28:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
503  ;CHECK-NEXT: [[VR29:%.*]] = call ptr @__asan_memmove(ptr [[VR27]], ptr [[VR28]], i64 64)
504  ;CHECK-NEXT: [[VR30:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
505  ;CHECK-NEXT: [[VR31:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
506  ;CHECK-NEXT: [[VR32:%.*]] = call ptr @__asan_memmove(ptr [[VR30]], ptr [[VR31]], i64 64)
507  ;CHECK-NEXT: [[VR33:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
508  ;CHECK-NEXT: [[VR34:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
509  ;CHECK-NEXT: [[VR35:%.*]] = call ptr @__asan_memmove(ptr [[VR33]], ptr [[VR34]], i64 64)
510  ;CHECK-NEXT: [[VR36:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
511  ;CHECK-NEXT: [[VR37:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
512  ;CHECK-NEXT: [[VR38:%.*]] = call ptr @__asan_memmove(ptr [[VR36]], ptr [[VR37]], i64 64)
513  ;CHECK-NEXT: [[VR39:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
514  ;CHECK-NEXT: [[VR40:%.*]] = call ptr @__asan_memmove(ptr [[VR39]], ptr [[SRC0]], i64 32)
515  ;CHECK-NEXT: [[VR41:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
516  ;CHECK-NEXT: [[VR42:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
517  ;CHECK-NEXT: [[VR43:%.*]] = call ptr @__asan_memmove(ptr [[VR41]], ptr [[VR42]], i64 32)
518  ;CHECK-NEXT: [[VR44:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
519  ;CHECK-NEXT: [[VR45:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
520  ;CHECK-NEXT: [[VR46:%.*]] = call ptr @__asan_memmove(ptr [[VR44]], ptr [[VR45]], i64 32)
521  ;CHECK-NEXT: [[VR47:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
522  ;CHECK-NEXT: [[VR48:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
523  ;CHECK-NEXT: [[VR49:%.*]] = call ptr @__asan_memmove(ptr [[VR47]], ptr [[VR48]], i64 32)
524  ;CHECK-NEXT: [[VR50:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
525  ;CHECK-NEXT: [[VR51:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
526  ;CHECK-NEXT: [[VR52:%.*]] = call ptr @__asan_memmove(ptr [[VR50]], ptr [[VR51]], i64 32)
527  ;CHECK-NEXT: [[VR53:%.*]] = addrspacecast ptr addrspace(1) [[DEST1]] to ptr
528  ;CHECK-NEXT: [[VR54:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
529  ;CHECK-NEXT: [[VR55:%.*]] = call ptr @__asan_memmove(ptr [[VR53]], ptr [[VR54]], i64 32)
530  ;CHECK-NEXT: [[VR56:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
531  ;CHECK-NEXT: [[VR57:%.*]] = call ptr @__asan_memmove(ptr [[VR56]], ptr [[SRC0]], i64 64)
532  ;CHECK-NEXT: [[VR58:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
533  ;CHECK-NEXT: [[VR59:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
534  ;CHECK-NEXT: [[VR60:%.*]] = call ptr @__asan_memmove(ptr [[VR58]], ptr [[VR59]], i64 64)
535  ;CHECK-NEXT: [[VR61:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
536  ;CHECK-NEXT: [[VR62:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
537  ;CHECK-NEXT: [[VR63:%.*]] = call ptr @__asan_memmove(ptr [[VR61]], ptr [[VR62]], i64 64)
538  ;CHECK-NEXT: [[VR64:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
539  ;CHECK-NEXT: [[VR65:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
540  ;CHECK-NEXT: [[VR66:%.*]] = call ptr @__asan_memmove(ptr [[VR64]], ptr [[VR65]], i64 64)
541  ;CHECK-NEXT: [[VR67:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
542  ;CHECK-NEXT: [[VR68:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
543  ;CHECK-NEXT: [[VR69:%.*]] = call ptr @__asan_memmove(ptr [[VR67]], ptr [[VR68]], i64 64)
544  ;CHECK-NEXT: [[VR70:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
545  ;CHECK-NEXT: [[VR71:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
546  ;CHECK-NEXT: [[VR72:%.*]] = call ptr @__asan_memmove(ptr [[VR70]], ptr [[VR71]], i64 64)
547  ;CHECK-NEXT: [[VR73:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
548  ;CHECK-NEXT: [[VR74:%.*]] = call ptr @__asan_memmove(ptr [[VR73]], ptr [[SRC0]], i64 32)
549  ;CHECK-NEXT: [[VR75:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
550  ;CHECK-NEXT: [[VR76:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
551  ;CHECK-NEXT: [[VR77:%.*]] = call ptr @__asan_memmove(ptr [[VR75]], ptr [[VR76]], i64 32)
552  ;CHECK-NEXT: [[VR78:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
553  ;CHECK-NEXT: [[VR79:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
554  ;CHECK-NEXT: [[VR80:%.*]] = call ptr @__asan_memmove(ptr [[VR78]], ptr [[VR79]], i64 32)
555  ;CHECK-NEXT: [[VR81:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
556  ;CHECK-NEXT: [[VR82:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
557  ;CHECK-NEXT: [[VR83:%.*]] = call ptr @__asan_memmove(ptr [[VR81]], ptr [[VR82]], i64 32)
558  ;CHECK-NEXT: [[VR84:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
559  ;CHECK-NEXT: [[VR85:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
560  ;CHECK-NEXT: [[VR86:%.*]] = call ptr @__asan_memmove(ptr [[VR84]], ptr [[VR85]], i64 32)
561  ;CHECK-NEXT: [[VR87:%.*]] = addrspacecast ptr addrspace(2) [[DEST2]] to ptr
562  ;CHECK-NEXT: [[VR88:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
563  ;CHECK-NEXT: [[VR89:%.*]] = call ptr @__asan_memmove(ptr [[VR87]], ptr [[VR88]], i64 32)
564  ;CHECK-NEXT: [[VR90:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
565  ;CHECK-NEXT: [[VR91:%.*]] = call ptr @__asan_memmove(ptr [[VR90]], ptr [[SRC0]], i64 64)
566  ;CHECK-NEXT: [[VR92:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
567  ;CHECK-NEXT: [[VR93:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
568  ;CHECK-NEXT: [[VR94:%.*]] = call ptr @__asan_memmove(ptr [[VR92]], ptr [[VR93]], i64 64)
569  ;CHECK-NEXT: [[VR95:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
570  ;CHECK-NEXT: [[VR96:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
571  ;CHECK-NEXT: [[VR97:%.*]] = call ptr @__asan_memmove(ptr [[VR95]], ptr [[VR96]], i64 64)
572  ;CHECK-NEXT: [[VR98:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
573  ;CHECK-NEXT: [[VR99:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
574  ;CHECK-NEXT: [[VR100:%.*]] = call ptr @__asan_memmove(ptr [[VR98]], ptr [[VR99]], i64 64)
575  ;CHECK-NEXT: [[VR101:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
576  ;CHECK-NEXT: [[VR102:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
577  ;CHECK-NEXT: [[VR103:%.*]] = call ptr @__asan_memmove(ptr [[VR101]], ptr [[VR102]], i64 64)
578  ;CHECK-NEXT: [[VR104:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
579  ;CHECK-NEXT: [[VR105:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
580  ;CHECK-NEXT: [[VR106:%.*]] = call ptr @__asan_memmove(ptr [[VR104]], ptr [[VR105]], i64 64)
581  ;CHECK-NEXT: [[VR107:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
582  ;CHECK-NEXT: [[VR108:%.*]] = call ptr @__asan_memmove(ptr [[VR107]], ptr [[SRC0]], i64 32)
583  ;CHECK-NEXT: [[VR109:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
584  ;CHECK-NEXT: [[VR110:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
585  ;CHECK-NEXT: [[VR111:%.*]] = call ptr @__asan_memmove(ptr [[VR109]], ptr [[VR110]], i64 32)
586  ;CHECK-NEXT: [[VR112:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
587  ;CHECK-NEXT: [[VR113:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
588  ;CHECK-NEXT: [[VR114:%.*]] = call ptr @__asan_memmove(ptr [[VR112]], ptr [[VR113]], i64 32)
589  ;CHECK-NEXT: [[VR115:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
590  ;CHECK-NEXT: [[VR116:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
591  ;CHECK-NEXT: [[VR117:%.*]] = call ptr @__asan_memmove(ptr [[VR115]], ptr [[VR116]], i64 32)
592  ;CHECK-NEXT: [[VR118:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
593  ;CHECK-NEXT: [[VR119:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
594  ;CHECK-NEXT: [[VR120:%.*]] = call ptr @__asan_memmove(ptr [[VR118]], ptr [[VR119]], i64 32)
595  ;CHECK-NEXT: [[VR121:%.*]] = addrspacecast ptr addrspace(3) [[DEST3]] to ptr
596  ;CHECK-NEXT: [[VR122:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
597  ;CHECK-NEXT: [[VR123:%.*]] = call ptr @__asan_memmove(ptr [[VR121]], ptr [[VR122]], i64 32)
598  ;CHECK-NEXT: [[VR124:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
599  ;CHECK-NEXT: [[VR125:%.*]] = call ptr @__asan_memmove(ptr [[VR124]], ptr [[SRC0]], i64 64)
600  ;CHECK-NEXT: [[VR126:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
601  ;CHECK-NEXT: [[VR127:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
602  ;CHECK-NEXT: [[VR128:%.*]] = call ptr @__asan_memmove(ptr [[VR126]], ptr [[VR127]], i64 64)
603  ;CHECK-NEXT: [[VR129:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
604  ;CHECK-NEXT: [[VR130:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
605  ;CHECK-NEXT: [[VR131:%.*]] = call ptr @__asan_memmove(ptr [[VR129]], ptr [[VR130]], i64 64)
606  ;CHECK-NEXT: [[VR132:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
607  ;CHECK-NEXT: [[VR133:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
608  ;CHECK-NEXT: [[VR134:%.*]] = call ptr @__asan_memmove(ptr [[VR132]], ptr [[VR133]], i64 64)
609  ;CHECK-NEXT: [[VR135:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
610  ;CHECK-NEXT: [[VR136:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
611  ;CHECK-NEXT: [[VR137:%.*]] = call ptr @__asan_memmove(ptr [[VR135]], ptr [[VR136]], i64 64)
612  ;CHECK-NEXT: [[VR138:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
613  ;CHECK-NEXT: [[VR139:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
614  ;CHECK-NEXT: [[VR140:%.*]] = call ptr @__asan_memmove(ptr [[VR138]], ptr [[VR139]], i64 64)
615  ;CHECK-NEXT: [[VR141:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
616  ;CHECK-NEXT: [[VR142:%.*]] = call ptr @__asan_memmove(ptr [[VR141]], ptr [[SRC0]], i64 32)
617  ;CHECK-NEXT: [[VR143:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
618  ;CHECK-NEXT: [[VR144:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
619  ;CHECK-NEXT: [[VR145:%.*]] = call ptr @__asan_memmove(ptr [[VR143]], ptr [[VR144]], i64 32)
620  ;CHECK-NEXT: [[VR146:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
621  ;CHECK-NEXT: [[VR147:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
622  ;CHECK-NEXT: [[VR148:%.*]] = call ptr @__asan_memmove(ptr [[VR146]], ptr [[VR147]], i64 32)
623  ;CHECK-NEXT: [[VR149:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
624  ;CHECK-NEXT: [[VR150:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
625  ;CHECK-NEXT: [[VR151:%.*]] = call ptr @__asan_memmove(ptr [[VR149]], ptr [[VR150]], i64 32)
626  ;CHECK-NEXT: [[VR152:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
627  ;CHECK-NEXT: [[VR153:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
628  ;CHECK-NEXT: [[VR154:%.*]] = call ptr @__asan_memmove(ptr [[VR152]], ptr [[VR153]], i64 32)
629  ;CHECK-NEXT: [[VR155:%.*]] = addrspacecast ptr addrspace(4) [[DEST4]] to ptr
630  ;CHECK-NEXT: [[VR156:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
631  ;CHECK-NEXT: [[VR157:%.*]] = call ptr @__asan_memmove(ptr [[VR155]], ptr [[VR156]], i64 32)
632  ;CHECK-NEXT: [[VR158:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
633  ;CHECK-NEXT: [[VR159:%.*]] = call ptr @__asan_memmove(ptr [[VR158]], ptr [[SRC0]], i64 64)
634  ;CHECK-NEXT: [[VR160:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
635  ;CHECK-NEXT: [[VR161:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
636  ;CHECK-NEXT: [[VR162:%.*]] = call ptr @__asan_memmove(ptr [[VR160]], ptr [[VR161]], i64 64)
637  ;CHECK-NEXT: [[VR163:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
638  ;CHECK-NEXT: [[VR164:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
639  ;CHECK-NEXT: [[VR165:%.*]] = call ptr @__asan_memmove(ptr [[VR163]], ptr [[VR164]], i64 64)
640  ;CHECK-NEXT: [[VR166:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
641  ;CHECK-NEXT: [[VR167:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
642  ;CHECK-NEXT: [[VR168:%.*]] = call ptr @__asan_memmove(ptr [[VR166]], ptr [[VR167]], i64 64)
643  ;CHECK-NEXT: [[VR169:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
644  ;CHECK-NEXT: [[VR170:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
645  ;CHECK-NEXT: [[VR171:%.*]] = call ptr @__asan_memmove(ptr [[VR169]], ptr [[VR170]], i64 64)
646  ;CHECK-NEXT: [[VR172:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
647  ;CHECK-NEXT: [[VR173:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
648  ;CHECK-NEXT: [[VR174:%.*]] = call ptr @__asan_memmove(ptr [[VR172]], ptr [[VR173]], i64 64)
649  ;CHECK-NEXT: [[VR175:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
650  ;CHECK-NEXT: [[VR176:%.*]] = call ptr @__asan_memmove(ptr %175, ptr %src0, i64 32)
651  ;CHECK-NEXT: [[VR177:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
652  ;CHECK-NEXT: [[VR178:%.*]] = addrspacecast ptr addrspace(1) [[SRC1]] to ptr
653  ;CHECK-NEXT: [[VR179:%.*]] = call ptr @__asan_memmove(ptr [[VR177]], ptr [[VR178]], i64 32)
654  ;CHECK-NEXT: [[VR180:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
655  ;CHECK-NEXT: [[VR181:%.*]] = addrspacecast ptr addrspace(2) [[SRC2]] to ptr
656  ;CHECK-NEXT: [[VR182:%.*]] = call ptr @__asan_memmove(ptr [[VR180]], ptr [[VR181]], i64 32)
657  ;CHECK-NEXT: [[VR183:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
658  ;CHECK-NEXT: [[VR184:%.*]] = addrspacecast ptr addrspace(3) [[SRC3]] to ptr
659  ;CHECK-NEXT: [[VR185:%.*]] = call ptr @__asan_memmove(ptr [[VR183]], ptr [[VR184]], i64 32)
660  ;CHECK-NEXT: [[VR186:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
661  ;CHECK-NEXT: [[VR187:%.*]] = addrspacecast ptr addrspace(4) [[SRC4]] to ptr
662  ;CHECK-NEXT: [[VR188:%.*]] = call ptr @__asan_memmove(ptr [[VR186]], ptr [[VR187]], i64 32)
663  ;CHECK-NEXT: [[VR189:%.*]] = addrspacecast ptr addrspace(5) [[DEST5]] to ptr
664  ;CHECK-NEXT: [[VR190:%.*]] = addrspacecast ptr addrspace(5) [[SRC5]] to ptr
665  ;CHECK-NEXT: [[VR191:%.*]] = call ptr @__asan_memmove(ptr [[VR189]], ptr [[VR190]], i64 32)
666
667	call void @llvm.memmove.p0.p0.i64(ptr align 16 %dest0, ptr align 16 %src0, i64 64, i1 false)
668  call void @llvm.memmove.p0.p1.i64(ptr align 16 %dest0, ptr addrspace(1) align 16 %src1, i64 64, i1 false)
669  call void @llvm.memmove.p0.p2.i64(ptr align 16 %dest0, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
670  call void @llvm.memmove.p0.p3.i64(ptr align 16 %dest0, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
671  call void @llvm.memmove.p0.p4.i64(ptr align 16 %dest0, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
672  call void @llvm.memmove.p0.p5.i64(ptr align 16 %dest0, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
673
674  call void @llvm.memmove.p0.p0.i32(ptr align 16 %dest0, ptr align 16 %src0, i32 32, i1 false)
675  call void @llvm.memmove.p0.p1.i32(ptr align 16 %dest0, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
676  call void @llvm.memmove.p0.p2.i32(ptr align 16 %dest0, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
677  call void @llvm.memmove.p0.p3.i32(ptr align 16 %dest0, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
678  call void @llvm.memmove.p0.p4.i32(ptr align 16 %dest0, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
679  call void @llvm.memmove.p0.p5.i32(ptr align 16 %dest0, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
680
681  call void @llvm.memmove.p1.p0.i64(ptr addrspace(1) align 16 %dest1, ptr align 16 %src0, i64 64, i1 false)
682  call void @llvm.memmove.p1.p1.i64(ptr addrspace(1) align 16 %dest1, ptr addrspace(1) align 16 %src1, i64 64,  i1 false)
683  call void @llvm.memmove.p1.p2.i64(ptr addrspace(1) align 16 %dest1, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
684  call void @llvm.memmove.p1.p3.i64(ptr addrspace(1) align 16 %dest1, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
685  call void @llvm.memmove.p1.p4.i64(ptr addrspace(1) align 16 %dest1, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
686  call void @llvm.memmove.p1.p5.i64(ptr addrspace(1) align 16 %dest1, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
687
688  call void @llvm.memmove.p1.p0.i32(ptr addrspace(1) align 16 %dest1, ptr align 16 %src0, i32 32, i1 false)
689  call void @llvm.memmove.p1.p1.i32(ptr addrspace(1) align 16 %dest1, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
690  call void @llvm.memmove.p1.p2.i32(ptr addrspace(1) align 16 %dest1, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
691  call void @llvm.memmove.p1.p3.i32(ptr addrspace(1) align 16 %dest1, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
692  call void @llvm.memmove.p1.p4.i32(ptr addrspace(1) align 16 %dest1, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
693  call void @llvm.memmove.p1.p5.i32(ptr addrspace(1) align 16 %dest1, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
694
695  call void @llvm.memmove.p2.p0.i64(ptr addrspace(2) align 16 %dest2, ptr align 16 %src0, i64 64, i1 false)
696  call void @llvm.memmove.p2.p1.i64(ptr addrspace(2) align 16 %dest2, ptr addrspace(1) align 16 %src1, i64 64, i1 false)
697  call void @llvm.memmove.p2.p2.i64(ptr addrspace(2) align 16 %dest2, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
698  call void @llvm.memmove.p2.p3.i64(ptr addrspace(2) align 16 %dest2, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
699  call void @llvm.memmove.p2.p4.i64(ptr addrspace(2) align 16 %dest2, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
700  call void @llvm.memmove.p2.p5.i64(ptr addrspace(2) align 16 %dest2, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
701
702  call void @llvm.memmove.p2.p0.i32(ptr addrspace(2) align 16 %dest2, ptr align 16 %src0, i32 32, i1 false)
703  call void @llvm.memmove.p2.p1.i32(ptr addrspace(2) align 16 %dest2, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
704  call void @llvm.memmove.p2.p2.i32(ptr addrspace(2) align 16 %dest2, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
705  call void @llvm.memmove.p2.p3.i32(ptr addrspace(2) align 16 %dest2, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
706  call void @llvm.memmove.p2.p4.i32(ptr addrspace(2) align 16 %dest2, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
707  call void @llvm.memmove.p2.p5.i32(ptr addrspace(2) align 16 %dest2, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
708
709  call void @llvm.memmove.p3.p0.i64(ptr addrspace(3) align 16 %dest3, ptr align 16 %src0, i64 64, i1 false)
710  call void @llvm.memmove.p3.p1.i64(ptr addrspace(3) align 16 %dest3, ptr addrspace(1) align 16 %src1, i64 64, i1 false)
711  call void @llvm.memmove.p3.p2.i64(ptr addrspace(3) align 16 %dest3, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
712  call void @llvm.memmove.p3.p3.i64(ptr addrspace(3) align 16 %dest3, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
713  call void @llvm.memmove.p3.p4.i64(ptr addrspace(3) align 16 %dest3, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
714  call void @llvm.memmove.p3.p5.i64(ptr addrspace(3) align 16 %dest3, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
715
716  call void @llvm.memmove.p3.p0.i32(ptr addrspace(3) align 16 %dest3, ptr align 16 %src0, i32 32, i1 false)
717  call void @llvm.memmove.p3.p1.i32(ptr addrspace(3) align 16 %dest3, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
718  call void @llvm.memmove.p3.p2.i32(ptr addrspace(3) align 16 %dest3, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
719  call void @llvm.memmove.p3.p3.i32(ptr addrspace(3) align 16 %dest3, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
720  call void @llvm.memmove.p3.p4.i32(ptr addrspace(3) align 16 %dest3, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
721  call void @llvm.memmove.p3.p5.i32(ptr addrspace(3) align 16 %dest3, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
722
723  call void @llvm.memmove.p4.p0.i64(ptr addrspace(4) align 16 %dest4, ptr align 16 %src0, i64 64, i1 false)
724  call void @llvm.memmove.p4.p1.i64(ptr addrspace(4) align 16 %dest4, ptr addrspace(1) align 16 %src1, i64 64, i1 false)
725  call void @llvm.memmove.p4.p2.i64(ptr addrspace(4) align 16 %dest4, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
726  call void @llvm.memmove.p4.p3.i64(ptr addrspace(4) align 16 %dest4, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
727  call void @llvm.memmove.p4.p4.i64(ptr addrspace(4) align 16 %dest4, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
728  call void @llvm.memmove.p4.p5.i64(ptr addrspace(4) align 16 %dest4, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
729
730  call void @llvm.memmove.p4.p0.i32(ptr addrspace(4) align 16 %dest4, ptr align 16 %src0, i32 32, i1 false)
731  call void @llvm.memmove.p4.p1.i32(ptr addrspace(4) align 16 %dest4, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
732  call void @llvm.memmove.p4.p2.i32(ptr addrspace(4) align 16 %dest4, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
733  call void @llvm.memmove.p4.p3.i32(ptr addrspace(4) align 16 %dest4, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
734  call void @llvm.memmove.p4.p4.i32(ptr addrspace(4) align 16 %dest4, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
735  call void @llvm.memmove.p4.p5.i32(ptr addrspace(4) align 16 %dest4, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
736
737  call void @llvm.memmove.p5.p0.i64(ptr addrspace(5) align 16 %dest5, ptr align 16 %src0, i64 64, i1 false)
738  call void @llvm.memmove.p5.p1.i64(ptr addrspace(5) align 16 %dest5, ptr addrspace(1) align 16 %src1, i64 64, i1 false)
739  call void @llvm.memmove.p5.p2.i64(ptr addrspace(5) align 16 %dest5, ptr addrspace(2) align 16 %src2, i64 64, i1 false)
740  call void @llvm.memmove.p5.p3.i64(ptr addrspace(5) align 16 %dest5, ptr addrspace(3) align 16 %src3, i64 64, i1 false)
741  call void @llvm.memmove.p5.p4.i64(ptr addrspace(5) align 16 %dest5, ptr addrspace(4) align 16 %src4, i64 64, i1 false)
742  call void @llvm.memmove.p5.p5.i64(ptr addrspace(5) align 16 %dest5, ptr addrspace(5) align 16 %src5, i64 64, i1 false)
743
744  call void @llvm.memmove.p5.p0.i32(ptr addrspace(5) align 16 %dest5, ptr align 16 %src0, i32 32, i1 false)
745  call void @llvm.memmove.p5.p1.i32(ptr addrspace(5) align 16 %dest5, ptr addrspace(1) align 16 %src1, i32 32, i1 false)
746  call void @llvm.memmove.p5.p2.i32(ptr addrspace(5) align 16 %dest5, ptr addrspace(2) align 16 %src2, i32 32, i1 false)
747  call void @llvm.memmove.p5.p3.i32(ptr addrspace(5) align 16 %dest5, ptr addrspace(3) align 16 %src3, i32 32, i1 false)
748  call void @llvm.memmove.p5.p4.i32(ptr addrspace(5) align 16 %dest5, ptr addrspace(4) align 16 %src4, i32 32, i1 false)
749  call void @llvm.memmove.p5.p5.i32(ptr addrspace(5) align 16 %dest5, ptr addrspace(5) align 16 %src5, i32 32, i1 false)
750  ret void
751}
752
753
754define void @test_mem_intrinsic_memset(ptr %ptr0,ptr addrspace(1) %ptr1,ptr addrspace(2) %ptr2,ptr addrspace(3) %ptr3,ptr addrspace(4) %ptr4,ptr addrspace(5) %ptr5) #0{
755entry:
756  ;CHECK: define void @test_mem_intrinsic_memset(ptr [[PTR0:%.*]], ptr addrspace(1) [[PTR1:%.*]], ptr addrspace(2) [[PTR2:%.*]], ptr addrspace(3) [[PTR3:%.*]], ptr addrspace(4) [[PTR4:%.*]], ptr addrspace(5) [[PTR5:%.*]]) #2 {
757  ;CHECK-NEXT: entry:
758  ;CHECK-NEXT: [[VR0:%.*]] = call ptr @__asan_memset(ptr [[PTR0]], i32 1, i64 128)
759  ;CHECK-NEXT: [[VR1:%.*]] = addrspacecast ptr addrspace(1) [[PTR1]] to ptr
760  ;CHECK-NEXT: [[VR2:%.*]] = call ptr @__asan_memset(ptr [[VR1]], i32 1, i64 128)
761  ;CHECK-NEXT: [[VR3:%.*]] = addrspacecast ptr addrspace(2) [[PTR2]] to ptr
762  ;CHECK-NEXT: [[VR4:%.*]] = call ptr @__asan_memset(ptr [[VR3]], i32 1, i64 128)
763  ;CHECK-NEXT: [[VR5:%.*]] = addrspacecast ptr addrspace(3) [[PTR3]] to ptr
764  ;CHECK-NEXT: [[VR6:%.*]] = call ptr @__asan_memset(ptr [[VR5]], i32 1, i64 128)
765  ;CHECK-NEXT: [[VR7:%.*]] = addrspacecast ptr addrspace(4) [[PTR4]] to ptr
766  ;CHECK-NEXT: [[VR8:%.*]] = call ptr @__asan_memset(ptr [[VR7]], i32 1, i64 128)
767  ;CHECK-NEXT: [[VR9:%.*]] = addrspacecast ptr addrspace(5) [[PTR5]] to ptr
768  ;CHECK-NEXT: [[VR10:%.*]] = call ptr @__asan_memset(ptr [[VR9]], i32 1, i64 128)
769  ;CHECK-NEXT: [[VR11:%.*]] = call ptr @__asan_memset(ptr [[PTR0]], i32 1, i64 128)
770  ;CHECK-NEXT: [[VR12:%.*]] = addrspacecast ptr addrspace(1) [[PTR1]] to ptr
771  ;CHECK-NEXT: [[VR13:%.*]] = call ptr @__asan_memset(ptr [[VR12]], i32 1, i64 128)
772  ;CHECK-NEXT: [[VR14:%.*]] = addrspacecast ptr addrspace(2) [[PTR2]] to ptr
773  ;CHECK-NEXT: [[VR15:%.*]] = call ptr @__asan_memset(ptr [[VR14]], i32 1, i64 128)
774  ;CHECK-NEXT: [[VR16:%.*]] = addrspacecast ptr addrspace(3) [[PTR3]] to ptr
775  ;CHECK-NEXT: [[VR17:%.*]] = call ptr @__asan_memset(ptr [[VR16]], i32 1, i64 128)
776  ;CHECK-NEXT: [[VR18:%.*]] = addrspacecast ptr addrspace(4) [[PTR4]] to ptr
777  ;CHECK-NEXT: [[VR19:%.*]] = call ptr @__asan_memset(ptr [[VR18]], i32 1, i64 128)
778  ;CHECK-NEXT: [[VR20:%.*]] = addrspacecast ptr addrspace(5) [[PTR5]] to ptr
779  ;CHECK-NEXT: [[VR21:%.*]] = call ptr @__asan_memset(ptr [[VR20]], i32 1, i64 128)
780  ;CHECK-NEXT: ret void
781  call void @llvm.memset.p0.i64(ptr %ptr0, i8 1, i64 128, i1 false)
782  call void @llvm.memset.p1.i64(ptr addrspace(1) %ptr1, i8 1, i64 128, i1 false)
783  call void @llvm.memset.p2.i64(ptr addrspace(2) %ptr2, i8 1, i64 128, i1 false)
784  call void @llvm.memset.p3.i64(ptr addrspace(3) %ptr3, i8 1, i64 128, i1 false)
785  call void @llvm.memset.p4.i64(ptr addrspace(4) %ptr4, i8 1, i64 128, i1 false)
786  call void @llvm.memset.p5.i64(ptr addrspace(5) %ptr5, i8 1, i64 128, i1 false)
787
788  call void @llvm.memset.p0.i32(ptr %ptr0, i8 1, i32 128, i1 false)
789  call void @llvm.memset.p1.i32(ptr addrspace(1) %ptr1, i8 1, i32 128, i1 false)
790  call void @llvm.memset.p2.i32(ptr addrspace(2) %ptr2, i8 1, i32 128, i1 false)
791  call void @llvm.memset.p3.i32(ptr addrspace(3) %ptr3, i8 1, i32 128, i1 false)
792  call void @llvm.memset.p4.i32(ptr addrspace(4) %ptr4, i8 1, i32 128, i1 false)
793  call void @llvm.memset.p5.i32(ptr addrspace(5) %ptr5, i8 1, i32 128, i1 false)
794  ret void
795}
796
797attributes #0 = { sanitize_address }
798