xref: /llvm-project/llvm/test/Instrumentation/MemorySanitizer/vector-load-store.ll (revision 3016c0636fd2df86d2c1dc8e7d49efe77a1bdedf)
199b22a6cSPhilip Reames; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
299b22a6cSPhilip Reames; RUN: opt < %s -msan-check-access-address=0 -S -passes=msan 2>&1 | FileCheck %s --implicit-check-not="call void @__msan_warning"
399b22a6cSPhilip Reames; RUN: opt < %s -msan-check-access-address=1 -S -passes=msan 2>&1 | FileCheck %s --check-prefixes=ADDR --implicit-check-not="call void @__msan_warning"
499b22a6cSPhilip Reames; RUN: opt < %s -msan-check-access-address=0 -msan-track-origins=1 -S -passes=msan 2>&1 | FileCheck %s --check-prefixes=ORIGINS --implicit-check-not="call void @__msan_warning"
599b22a6cSPhilip Reames
699b22a6cSPhilip Reamestarget triple = "x86_64-unknown-linux-gnu"
799b22a6cSPhilip Reamestarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
899b22a6cSPhilip Reames
9473e9adbSPhilip Reamesdefine void @load.v1i32(ptr %p) sanitize_memory {
1099b22a6cSPhilip Reames; CHECK-LABEL: @load.v1i32(
1199b22a6cSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
1299b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = load <1 x i32>, ptr [[P:%.*]], align 4
13473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
14473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
15473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
16473e9adbSPhilip Reames; CHECK-NEXT:    [[_MSLD:%.*]] = load <1 x i32>, ptr [[TMP4]], align 4
1799b22a6cSPhilip Reames; CHECK-NEXT:    ret void
1899b22a6cSPhilip Reames;
1999b22a6cSPhilip Reames; ADDR-LABEL: @load.v1i32(
20473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
2199b22a6cSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
22473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
23473e9adbSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0:![0-9]+]]
24473e9adbSPhilip Reames; ADDR:       2:
25473e9adbSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3:[0-9]+]]
26473e9adbSPhilip Reames; ADDR-NEXT:    unreachable
27473e9adbSPhilip Reames; ADDR:       3:
28473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = load <1 x i32>, ptr [[P:%.*]], align 4
29473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64
30473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
31473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
32473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSLD:%.*]] = load <1 x i32>, ptr [[TMP7]], align 4
3399b22a6cSPhilip Reames; ADDR-NEXT:    ret void
3499b22a6cSPhilip Reames;
3599b22a6cSPhilip Reames; ORIGINS-LABEL: @load.v1i32(
3699b22a6cSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
3799b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = load <1 x i32>, ptr [[P:%.*]], align 4
38473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
39473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
40473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
41473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416
42473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
43473e9adbSPhilip Reames; ORIGINS-NEXT:    [[_MSLD:%.*]] = load <1 x i32>, ptr [[TMP4]], align 4
44473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 4
4599b22a6cSPhilip Reames; ORIGINS-NEXT:    ret void
4699b22a6cSPhilip Reames;
4799b22a6cSPhilip Reames  load <1 x i32>, ptr %p
4899b22a6cSPhilip Reames  ret void
4999b22a6cSPhilip Reames}
5099b22a6cSPhilip Reames
51473e9adbSPhilip Reamesdefine void @load.v2i32(ptr %p) sanitize_memory {
5299b22a6cSPhilip Reames; CHECK-LABEL: @load.v2i32(
5399b22a6cSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
5499b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = load <2 x i32>, ptr [[P:%.*]], align 8
55473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
56473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
57473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
58473e9adbSPhilip Reames; CHECK-NEXT:    [[_MSLD:%.*]] = load <2 x i32>, ptr [[TMP4]], align 8
5999b22a6cSPhilip Reames; CHECK-NEXT:    ret void
6099b22a6cSPhilip Reames;
6199b22a6cSPhilip Reames; ADDR-LABEL: @load.v2i32(
62473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
6399b22a6cSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
64473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
65473e9adbSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
66473e9adbSPhilip Reames; ADDR:       2:
67473e9adbSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
68473e9adbSPhilip Reames; ADDR-NEXT:    unreachable
69473e9adbSPhilip Reames; ADDR:       3:
70473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = load <2 x i32>, ptr [[P:%.*]], align 8
71473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64
72473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
73473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
74473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSLD:%.*]] = load <2 x i32>, ptr [[TMP7]], align 8
7599b22a6cSPhilip Reames; ADDR-NEXT:    ret void
7699b22a6cSPhilip Reames;
7799b22a6cSPhilip Reames; ORIGINS-LABEL: @load.v2i32(
7899b22a6cSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
7999b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = load <2 x i32>, ptr [[P:%.*]], align 8
80473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
81473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
82473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
83473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416
84473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
85473e9adbSPhilip Reames; ORIGINS-NEXT:    [[_MSLD:%.*]] = load <2 x i32>, ptr [[TMP4]], align 8
86473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 8
8799b22a6cSPhilip Reames; ORIGINS-NEXT:    ret void
8899b22a6cSPhilip Reames;
8999b22a6cSPhilip Reames  load <2 x i32>, ptr %p
9099b22a6cSPhilip Reames  ret void
9199b22a6cSPhilip Reames}
9299b22a6cSPhilip Reames
93473e9adbSPhilip Reamesdefine void @load.v4i32(ptr %p) sanitize_memory {
9499b22a6cSPhilip Reames; CHECK-LABEL: @load.v4i32(
9599b22a6cSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
9699b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = load <4 x i32>, ptr [[P:%.*]], align 16
97473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
98473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
99473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
100473e9adbSPhilip Reames; CHECK-NEXT:    [[_MSLD:%.*]] = load <4 x i32>, ptr [[TMP4]], align 16
10199b22a6cSPhilip Reames; CHECK-NEXT:    ret void
10299b22a6cSPhilip Reames;
10399b22a6cSPhilip Reames; ADDR-LABEL: @load.v4i32(
104473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
10599b22a6cSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
106473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
107473e9adbSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
108473e9adbSPhilip Reames; ADDR:       2:
109473e9adbSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
110473e9adbSPhilip Reames; ADDR-NEXT:    unreachable
111473e9adbSPhilip Reames; ADDR:       3:
112473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = load <4 x i32>, ptr [[P:%.*]], align 16
113473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64
114473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
115473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
116473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSLD:%.*]] = load <4 x i32>, ptr [[TMP7]], align 16
11799b22a6cSPhilip Reames; ADDR-NEXT:    ret void
11899b22a6cSPhilip Reames;
11999b22a6cSPhilip Reames; ORIGINS-LABEL: @load.v4i32(
12099b22a6cSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
12199b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = load <4 x i32>, ptr [[P:%.*]], align 16
122473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
123473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
124473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
125473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416
126473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
127473e9adbSPhilip Reames; ORIGINS-NEXT:    [[_MSLD:%.*]] = load <4 x i32>, ptr [[TMP4]], align 16
128473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 16
12999b22a6cSPhilip Reames; ORIGINS-NEXT:    ret void
13099b22a6cSPhilip Reames;
13199b22a6cSPhilip Reames  load <4 x i32>, ptr %p
13299b22a6cSPhilip Reames  ret void
13399b22a6cSPhilip Reames}
13499b22a6cSPhilip Reames
135473e9adbSPhilip Reamesdefine void @load.v8i32(ptr %p) sanitize_memory {
13699b22a6cSPhilip Reames; CHECK-LABEL: @load.v8i32(
13799b22a6cSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
13899b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = load <8 x i32>, ptr [[P:%.*]], align 32
139473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
140473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
141473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
142473e9adbSPhilip Reames; CHECK-NEXT:    [[_MSLD:%.*]] = load <8 x i32>, ptr [[TMP4]], align 32
14399b22a6cSPhilip Reames; CHECK-NEXT:    ret void
14499b22a6cSPhilip Reames;
14599b22a6cSPhilip Reames; ADDR-LABEL: @load.v8i32(
146473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
14799b22a6cSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
148473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
149473e9adbSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
150473e9adbSPhilip Reames; ADDR:       2:
151473e9adbSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
152473e9adbSPhilip Reames; ADDR-NEXT:    unreachable
153473e9adbSPhilip Reames; ADDR:       3:
154473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = load <8 x i32>, ptr [[P:%.*]], align 32
155473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64
156473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
157473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
158473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSLD:%.*]] = load <8 x i32>, ptr [[TMP7]], align 32
15999b22a6cSPhilip Reames; ADDR-NEXT:    ret void
16099b22a6cSPhilip Reames;
16199b22a6cSPhilip Reames; ORIGINS-LABEL: @load.v8i32(
16299b22a6cSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
16399b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = load <8 x i32>, ptr [[P:%.*]], align 32
164473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
165473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
166473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
167473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416
168473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
169473e9adbSPhilip Reames; ORIGINS-NEXT:    [[_MSLD:%.*]] = load <8 x i32>, ptr [[TMP4]], align 32
170473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 32
17199b22a6cSPhilip Reames; ORIGINS-NEXT:    ret void
17299b22a6cSPhilip Reames;
17399b22a6cSPhilip Reames  load <8 x i32>, ptr %p
17499b22a6cSPhilip Reames  ret void
17599b22a6cSPhilip Reames}
17699b22a6cSPhilip Reames
177473e9adbSPhilip Reamesdefine void @load.v16i32(ptr %p) sanitize_memory {
17899b22a6cSPhilip Reames; CHECK-LABEL: @load.v16i32(
17999b22a6cSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
18099b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = load <16 x i32>, ptr [[P:%.*]], align 64
181473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
182473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
183473e9adbSPhilip Reames; CHECK-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
184473e9adbSPhilip Reames; CHECK-NEXT:    [[_MSLD:%.*]] = load <16 x i32>, ptr [[TMP4]], align 64
18599b22a6cSPhilip Reames; CHECK-NEXT:    ret void
18699b22a6cSPhilip Reames;
18799b22a6cSPhilip Reames; ADDR-LABEL: @load.v16i32(
188473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
18999b22a6cSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
190473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
191473e9adbSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
192473e9adbSPhilip Reames; ADDR:       2:
193473e9adbSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
194473e9adbSPhilip Reames; ADDR-NEXT:    unreachable
195473e9adbSPhilip Reames; ADDR:       3:
196473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = load <16 x i32>, ptr [[P:%.*]], align 64
197473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64
198473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
199473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
200473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSLD:%.*]] = load <16 x i32>, ptr [[TMP7]], align 64
20199b22a6cSPhilip Reames; ADDR-NEXT:    ret void
20299b22a6cSPhilip Reames;
20399b22a6cSPhilip Reames; ORIGINS-LABEL: @load.v16i32(
20499b22a6cSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
20599b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = load <16 x i32>, ptr [[P:%.*]], align 64
206473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
207473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
208473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
209473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416
210473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
211473e9adbSPhilip Reames; ORIGINS-NEXT:    [[_MSLD:%.*]] = load <16 x i32>, ptr [[TMP4]], align 64
212473e9adbSPhilip Reames; ORIGINS-NEXT:    [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 64
21399b22a6cSPhilip Reames; ORIGINS-NEXT:    ret void
21499b22a6cSPhilip Reames;
21599b22a6cSPhilip Reames  load <16 x i32>, ptr %p
21699b22a6cSPhilip Reames  ret void
21799b22a6cSPhilip Reames}
21899b22a6cSPhilip Reames
21999b22a6cSPhilip Reames
220473e9adbSPhilip Reamesdefine void @store.v1i32(ptr %p) sanitize_memory {
22199b22a6cSPhilip Reames; CHECK-LABEL: @store.v1i32(
22299b22a6cSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
22399b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
22499b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
22599b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
22699b22a6cSPhilip Reames; CHECK-NEXT:    store <1 x i32> zeroinitializer, ptr [[TMP3]], align 4
22799b22a6cSPhilip Reames; CHECK-NEXT:    store <1 x i32> zeroinitializer, ptr [[P]], align 4
22899b22a6cSPhilip Reames; CHECK-NEXT:    ret void
22999b22a6cSPhilip Reames;
23099b22a6cSPhilip Reames; ADDR-LABEL: @store.v1i32(
231473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
23299b22a6cSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
233473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
234473e9adbSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
235473e9adbSPhilip Reames; ADDR:       2:
236473e9adbSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
237473e9adbSPhilip Reames; ADDR-NEXT:    unreachable
238473e9adbSPhilip Reames; ADDR:       3:
239473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64
240473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080
241473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
242473e9adbSPhilip Reames; ADDR-NEXT:    store <1 x i32> zeroinitializer, ptr [[TMP6]], align 4
24399b22a6cSPhilip Reames; ADDR-NEXT:    store <1 x i32> zeroinitializer, ptr [[P]], align 4
24499b22a6cSPhilip Reames; ADDR-NEXT:    ret void
24599b22a6cSPhilip Reames;
24699b22a6cSPhilip Reames; ORIGINS-LABEL: @store.v1i32(
24799b22a6cSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
24899b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
24999b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
25099b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
25199b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416
25299b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr
25399b22a6cSPhilip Reames; ORIGINS-NEXT:    store <1 x i32> zeroinitializer, ptr [[TMP3]], align 4
25499b22a6cSPhilip Reames; ORIGINS-NEXT:    store <1 x i32> zeroinitializer, ptr [[P]], align 4
25599b22a6cSPhilip Reames; ORIGINS-NEXT:    ret void
25699b22a6cSPhilip Reames;
25799b22a6cSPhilip Reames  store <1 x i32> zeroinitializer, ptr %p
25899b22a6cSPhilip Reames  ret void
25999b22a6cSPhilip Reames}
26099b22a6cSPhilip Reames
261473e9adbSPhilip Reamesdefine void @store.v2i32(ptr %p) sanitize_memory {
26299b22a6cSPhilip Reames; CHECK-LABEL: @store.v2i32(
26399b22a6cSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
26499b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
26599b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
26699b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
26799b22a6cSPhilip Reames; CHECK-NEXT:    store <2 x i32> zeroinitializer, ptr [[TMP3]], align 8
26899b22a6cSPhilip Reames; CHECK-NEXT:    store <2 x i32> zeroinitializer, ptr [[P]], align 8
26999b22a6cSPhilip Reames; CHECK-NEXT:    ret void
27099b22a6cSPhilip Reames;
27199b22a6cSPhilip Reames; ADDR-LABEL: @store.v2i32(
272473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
27399b22a6cSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
274473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
275473e9adbSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
276473e9adbSPhilip Reames; ADDR:       2:
277473e9adbSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
278473e9adbSPhilip Reames; ADDR-NEXT:    unreachable
279473e9adbSPhilip Reames; ADDR:       3:
280473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64
281473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080
282473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
283473e9adbSPhilip Reames; ADDR-NEXT:    store <2 x i32> zeroinitializer, ptr [[TMP6]], align 8
28499b22a6cSPhilip Reames; ADDR-NEXT:    store <2 x i32> zeroinitializer, ptr [[P]], align 8
28599b22a6cSPhilip Reames; ADDR-NEXT:    ret void
28699b22a6cSPhilip Reames;
28799b22a6cSPhilip Reames; ORIGINS-LABEL: @store.v2i32(
28899b22a6cSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
28999b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
29099b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
29199b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
29299b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416
29399b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr
29499b22a6cSPhilip Reames; ORIGINS-NEXT:    store <2 x i32> zeroinitializer, ptr [[TMP3]], align 8
29599b22a6cSPhilip Reames; ORIGINS-NEXT:    store <2 x i32> zeroinitializer, ptr [[P]], align 8
29699b22a6cSPhilip Reames; ORIGINS-NEXT:    ret void
29799b22a6cSPhilip Reames;
29899b22a6cSPhilip Reames  store <2 x i32> zeroinitializer, ptr %p
29999b22a6cSPhilip Reames  ret void
30099b22a6cSPhilip Reames}
30199b22a6cSPhilip Reames
302473e9adbSPhilip Reamesdefine void @store.v4i32(ptr %p) sanitize_memory {
30399b22a6cSPhilip Reames; CHECK-LABEL: @store.v4i32(
30499b22a6cSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
30599b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
30699b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
30799b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
30899b22a6cSPhilip Reames; CHECK-NEXT:    store <4 x i32> zeroinitializer, ptr [[TMP3]], align 16
30999b22a6cSPhilip Reames; CHECK-NEXT:    store <4 x i32> zeroinitializer, ptr [[P]], align 16
31099b22a6cSPhilip Reames; CHECK-NEXT:    ret void
31199b22a6cSPhilip Reames;
31299b22a6cSPhilip Reames; ADDR-LABEL: @store.v4i32(
313473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
31499b22a6cSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
315473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
316473e9adbSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
317473e9adbSPhilip Reames; ADDR:       2:
318473e9adbSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
319473e9adbSPhilip Reames; ADDR-NEXT:    unreachable
320473e9adbSPhilip Reames; ADDR:       3:
321473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64
322473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080
323473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
324473e9adbSPhilip Reames; ADDR-NEXT:    store <4 x i32> zeroinitializer, ptr [[TMP6]], align 16
32599b22a6cSPhilip Reames; ADDR-NEXT:    store <4 x i32> zeroinitializer, ptr [[P]], align 16
32699b22a6cSPhilip Reames; ADDR-NEXT:    ret void
32799b22a6cSPhilip Reames;
32899b22a6cSPhilip Reames; ORIGINS-LABEL: @store.v4i32(
32999b22a6cSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
33099b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
33199b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
33299b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
33399b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416
33499b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr
33599b22a6cSPhilip Reames; ORIGINS-NEXT:    store <4 x i32> zeroinitializer, ptr [[TMP3]], align 16
33699b22a6cSPhilip Reames; ORIGINS-NEXT:    store <4 x i32> zeroinitializer, ptr [[P]], align 16
33799b22a6cSPhilip Reames; ORIGINS-NEXT:    ret void
33899b22a6cSPhilip Reames;
33999b22a6cSPhilip Reames  store <4 x i32> zeroinitializer, ptr %p
34099b22a6cSPhilip Reames  ret void
34199b22a6cSPhilip Reames}
34299b22a6cSPhilip Reames
343473e9adbSPhilip Reamesdefine void @store.v8i32(ptr %p) sanitize_memory {
34499b22a6cSPhilip Reames; CHECK-LABEL: @store.v8i32(
34599b22a6cSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
34699b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
34799b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
34899b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
34999b22a6cSPhilip Reames; CHECK-NEXT:    store <8 x i32> zeroinitializer, ptr [[TMP3]], align 32
35099b22a6cSPhilip Reames; CHECK-NEXT:    store <8 x i32> zeroinitializer, ptr [[P]], align 32
35199b22a6cSPhilip Reames; CHECK-NEXT:    ret void
35299b22a6cSPhilip Reames;
35399b22a6cSPhilip Reames; ADDR-LABEL: @store.v8i32(
354473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
35599b22a6cSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
356473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
357473e9adbSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
358473e9adbSPhilip Reames; ADDR:       2:
359473e9adbSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
360473e9adbSPhilip Reames; ADDR-NEXT:    unreachable
361473e9adbSPhilip Reames; ADDR:       3:
362473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64
363473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080
364473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
365473e9adbSPhilip Reames; ADDR-NEXT:    store <8 x i32> zeroinitializer, ptr [[TMP6]], align 32
36699b22a6cSPhilip Reames; ADDR-NEXT:    store <8 x i32> zeroinitializer, ptr [[P]], align 32
36799b22a6cSPhilip Reames; ADDR-NEXT:    ret void
36899b22a6cSPhilip Reames;
36999b22a6cSPhilip Reames; ORIGINS-LABEL: @store.v8i32(
37099b22a6cSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
37199b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
37299b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
37399b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
37499b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416
37599b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr
37699b22a6cSPhilip Reames; ORIGINS-NEXT:    store <8 x i32> zeroinitializer, ptr [[TMP3]], align 32
37799b22a6cSPhilip Reames; ORIGINS-NEXT:    store <8 x i32> zeroinitializer, ptr [[P]], align 32
37899b22a6cSPhilip Reames; ORIGINS-NEXT:    ret void
37999b22a6cSPhilip Reames;
38099b22a6cSPhilip Reames  store <8 x i32> zeroinitializer, ptr %p
38199b22a6cSPhilip Reames  ret void
38299b22a6cSPhilip Reames}
38399b22a6cSPhilip Reames
384473e9adbSPhilip Reamesdefine void @store.v16i32(ptr %p) sanitize_memory {
38599b22a6cSPhilip Reames; CHECK-LABEL: @store.v16i32(
38699b22a6cSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
38799b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
38899b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
38999b22a6cSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
39099b22a6cSPhilip Reames; CHECK-NEXT:    store <16 x i32> zeroinitializer, ptr [[TMP3]], align 64
39199b22a6cSPhilip Reames; CHECK-NEXT:    store <16 x i32> zeroinitializer, ptr [[P]], align 64
39299b22a6cSPhilip Reames; CHECK-NEXT:    ret void
39399b22a6cSPhilip Reames;
39499b22a6cSPhilip Reames; ADDR-LABEL: @store.v16i32(
395473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
39699b22a6cSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
397473e9adbSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
398473e9adbSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
399473e9adbSPhilip Reames; ADDR:       2:
400473e9adbSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
401473e9adbSPhilip Reames; ADDR-NEXT:    unreachable
402473e9adbSPhilip Reames; ADDR:       3:
403473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64
404473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080
405473e9adbSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
406473e9adbSPhilip Reames; ADDR-NEXT:    store <16 x i32> zeroinitializer, ptr [[TMP6]], align 64
40799b22a6cSPhilip Reames; ADDR-NEXT:    store <16 x i32> zeroinitializer, ptr [[P]], align 64
40899b22a6cSPhilip Reames; ADDR-NEXT:    ret void
40999b22a6cSPhilip Reames;
41099b22a6cSPhilip Reames; ORIGINS-LABEL: @store.v16i32(
41199b22a6cSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
41299b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
41399b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
41499b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
41599b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416
41699b22a6cSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr
41799b22a6cSPhilip Reames; ORIGINS-NEXT:    store <16 x i32> zeroinitializer, ptr [[TMP3]], align 64
41899b22a6cSPhilip Reames; ORIGINS-NEXT:    store <16 x i32> zeroinitializer, ptr [[P]], align 64
41999b22a6cSPhilip Reames; ORIGINS-NEXT:    ret void
42099b22a6cSPhilip Reames;
42199b22a6cSPhilip Reames  store <16 x i32> zeroinitializer, ptr %p
42299b22a6cSPhilip Reames  ret void
42399b22a6cSPhilip Reames}
42499b22a6cSPhilip Reames
4255bcb4c4dSPhilip Reamesdefine void @load.nxv1i32(ptr %p) sanitize_memory {
4265bcb4c4dSPhilip Reames; CHECK-LABEL: @load.nxv1i32(
4275bcb4c4dSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
4285bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = load <vscale x 1 x i32>, ptr [[P:%.*]], align 4
4295bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
4305bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
4315bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
4325bcb4c4dSPhilip Reames; CHECK-NEXT:    [[_MSLD:%.*]] = load <vscale x 1 x i32>, ptr [[TMP4]], align 4
4335bcb4c4dSPhilip Reames; CHECK-NEXT:    ret void
4345bcb4c4dSPhilip Reames;
4355bcb4c4dSPhilip Reames; ADDR-LABEL: @load.nxv1i32(
4365bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
4375bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
4385bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
4395bcb4c4dSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
4405bcb4c4dSPhilip Reames; ADDR:       2:
4415bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
4425bcb4c4dSPhilip Reames; ADDR-NEXT:    unreachable
4435bcb4c4dSPhilip Reames; ADDR:       3:
4445bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = load <vscale x 1 x i32>, ptr [[P:%.*]], align 4
4455bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64
4465bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
4475bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
4485bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSLD:%.*]] = load <vscale x 1 x i32>, ptr [[TMP7]], align 4
4495bcb4c4dSPhilip Reames; ADDR-NEXT:    ret void
4505bcb4c4dSPhilip Reames;
4515bcb4c4dSPhilip Reames; ORIGINS-LABEL: @load.nxv1i32(
4525bcb4c4dSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
4535bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = load <vscale x 1 x i32>, ptr [[P:%.*]], align 4
4545bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
4555bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
4565bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
4575bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416
4585bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
4595bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[_MSLD:%.*]] = load <vscale x 1 x i32>, ptr [[TMP4]], align 4
4605bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 4
4615bcb4c4dSPhilip Reames; ORIGINS-NEXT:    ret void
4625bcb4c4dSPhilip Reames;
4635bcb4c4dSPhilip Reames  load <vscale x 1 x i32>, ptr %p
4645bcb4c4dSPhilip Reames  ret void
4655bcb4c4dSPhilip Reames}
46699b22a6cSPhilip Reames
4675bcb4c4dSPhilip Reamesdefine void @load.nxv2i32(ptr %p) sanitize_memory {
4685bcb4c4dSPhilip Reames; CHECK-LABEL: @load.nxv2i32(
4695bcb4c4dSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
4705bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = load <vscale x 2 x i32>, ptr [[P:%.*]], align 8
4715bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
4725bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
4735bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
4745bcb4c4dSPhilip Reames; CHECK-NEXT:    [[_MSLD:%.*]] = load <vscale x 2 x i32>, ptr [[TMP4]], align 8
4755bcb4c4dSPhilip Reames; CHECK-NEXT:    ret void
4765bcb4c4dSPhilip Reames;
4775bcb4c4dSPhilip Reames; ADDR-LABEL: @load.nxv2i32(
4785bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
4795bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
4805bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
4815bcb4c4dSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
4825bcb4c4dSPhilip Reames; ADDR:       2:
4835bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
4845bcb4c4dSPhilip Reames; ADDR-NEXT:    unreachable
4855bcb4c4dSPhilip Reames; ADDR:       3:
4865bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = load <vscale x 2 x i32>, ptr [[P:%.*]], align 8
4875bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64
4885bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
4895bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
4905bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSLD:%.*]] = load <vscale x 2 x i32>, ptr [[TMP7]], align 8
4915bcb4c4dSPhilip Reames; ADDR-NEXT:    ret void
4925bcb4c4dSPhilip Reames;
4935bcb4c4dSPhilip Reames; ORIGINS-LABEL: @load.nxv2i32(
4945bcb4c4dSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
4955bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = load <vscale x 2 x i32>, ptr [[P:%.*]], align 8
4965bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
4975bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
4985bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
4995bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416
5005bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
5015bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[_MSLD:%.*]] = load <vscale x 2 x i32>, ptr [[TMP4]], align 8
5025bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 8
5035bcb4c4dSPhilip Reames; ORIGINS-NEXT:    ret void
5045bcb4c4dSPhilip Reames;
5055bcb4c4dSPhilip Reames  load <vscale x 2 x i32>, ptr %p
5065bcb4c4dSPhilip Reames  ret void
5075bcb4c4dSPhilip Reames}
5085bcb4c4dSPhilip Reames
5095bcb4c4dSPhilip Reamesdefine void @load.nxv4i32(ptr %p) sanitize_memory {
5105bcb4c4dSPhilip Reames; CHECK-LABEL: @load.nxv4i32(
5115bcb4c4dSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
5125bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = load <vscale x 4 x i32>, ptr [[P:%.*]], align 16
5135bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
5145bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
5155bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
5165bcb4c4dSPhilip Reames; CHECK-NEXT:    [[_MSLD:%.*]] = load <vscale x 4 x i32>, ptr [[TMP4]], align 16
5175bcb4c4dSPhilip Reames; CHECK-NEXT:    ret void
5185bcb4c4dSPhilip Reames;
5195bcb4c4dSPhilip Reames; ADDR-LABEL: @load.nxv4i32(
5205bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
5215bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
5225bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
5235bcb4c4dSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
5245bcb4c4dSPhilip Reames; ADDR:       2:
5255bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
5265bcb4c4dSPhilip Reames; ADDR-NEXT:    unreachable
5275bcb4c4dSPhilip Reames; ADDR:       3:
5285bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = load <vscale x 4 x i32>, ptr [[P:%.*]], align 16
5295bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64
5305bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
5315bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
5325bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSLD:%.*]] = load <vscale x 4 x i32>, ptr [[TMP7]], align 16
5335bcb4c4dSPhilip Reames; ADDR-NEXT:    ret void
5345bcb4c4dSPhilip Reames;
5355bcb4c4dSPhilip Reames; ORIGINS-LABEL: @load.nxv4i32(
5365bcb4c4dSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
5375bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = load <vscale x 4 x i32>, ptr [[P:%.*]], align 16
5385bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
5395bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
5405bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
5415bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416
5425bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
5435bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[_MSLD:%.*]] = load <vscale x 4 x i32>, ptr [[TMP4]], align 16
5445bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 16
5455bcb4c4dSPhilip Reames; ORIGINS-NEXT:    ret void
5465bcb4c4dSPhilip Reames;
5475bcb4c4dSPhilip Reames  load <vscale x 4 x i32>, ptr %p
5485bcb4c4dSPhilip Reames  ret void
5495bcb4c4dSPhilip Reames}
5505bcb4c4dSPhilip Reames
5515bcb4c4dSPhilip Reamesdefine void @load.nxv8i32(ptr %p) sanitize_memory {
5525bcb4c4dSPhilip Reames; CHECK-LABEL: @load.nxv8i32(
5535bcb4c4dSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
5545bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = load <vscale x 8 x i32>, ptr [[P:%.*]], align 32
5555bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
5565bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
5575bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
5585bcb4c4dSPhilip Reames; CHECK-NEXT:    [[_MSLD:%.*]] = load <vscale x 8 x i32>, ptr [[TMP4]], align 32
5595bcb4c4dSPhilip Reames; CHECK-NEXT:    ret void
5605bcb4c4dSPhilip Reames;
5615bcb4c4dSPhilip Reames; ADDR-LABEL: @load.nxv8i32(
5625bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
5635bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
5645bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
5655bcb4c4dSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
5665bcb4c4dSPhilip Reames; ADDR:       2:
5675bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
5685bcb4c4dSPhilip Reames; ADDR-NEXT:    unreachable
5695bcb4c4dSPhilip Reames; ADDR:       3:
5705bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = load <vscale x 8 x i32>, ptr [[P:%.*]], align 32
5715bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64
5725bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
5735bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
5745bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSLD:%.*]] = load <vscale x 8 x i32>, ptr [[TMP7]], align 32
5755bcb4c4dSPhilip Reames; ADDR-NEXT:    ret void
5765bcb4c4dSPhilip Reames;
5775bcb4c4dSPhilip Reames; ORIGINS-LABEL: @load.nxv8i32(
5785bcb4c4dSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
5795bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = load <vscale x 8 x i32>, ptr [[P:%.*]], align 32
5805bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
5815bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
5825bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
5835bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416
5845bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
5855bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[_MSLD:%.*]] = load <vscale x 8 x i32>, ptr [[TMP4]], align 32
5865bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 32
5875bcb4c4dSPhilip Reames; ORIGINS-NEXT:    ret void
5885bcb4c4dSPhilip Reames;
5895bcb4c4dSPhilip Reames  load <vscale x 8 x i32>, ptr %p
5905bcb4c4dSPhilip Reames  ret void
5915bcb4c4dSPhilip Reames}
5925bcb4c4dSPhilip Reames
5935bcb4c4dSPhilip Reamesdefine void @load.nxv16i32(ptr %p) sanitize_memory {
5945bcb4c4dSPhilip Reames; CHECK-LABEL: @load.nxv16i32(
5955bcb4c4dSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
5965bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = load <vscale x 16 x i32>, ptr [[P:%.*]], align 64
5975bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
5985bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
5995bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
6005bcb4c4dSPhilip Reames; CHECK-NEXT:    [[_MSLD:%.*]] = load <vscale x 16 x i32>, ptr [[TMP4]], align 64
6015bcb4c4dSPhilip Reames; CHECK-NEXT:    ret void
6025bcb4c4dSPhilip Reames;
6035bcb4c4dSPhilip Reames; ADDR-LABEL: @load.nxv16i32(
6045bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
6055bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
6065bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
6075bcb4c4dSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
6085bcb4c4dSPhilip Reames; ADDR:       2:
6095bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
6105bcb4c4dSPhilip Reames; ADDR-NEXT:    unreachable
6115bcb4c4dSPhilip Reames; ADDR:       3:
6125bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = load <vscale x 16 x i32>, ptr [[P:%.*]], align 64
6135bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = ptrtoint ptr [[P]] to i64
6145bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
6155bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
6165bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSLD:%.*]] = load <vscale x 16 x i32>, ptr [[TMP7]], align 64
6175bcb4c4dSPhilip Reames; ADDR-NEXT:    ret void
6185bcb4c4dSPhilip Reames;
6195bcb4c4dSPhilip Reames; ORIGINS-LABEL: @load.nxv16i32(
6205bcb4c4dSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
6215bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = load <vscale x 16 x i32>, ptr [[P:%.*]], align 64
6225bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = ptrtoint ptr [[P]] to i64
6235bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
6245bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
6255bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = add i64 [[TMP3]], 17592186044416
6265bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
6275bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[_MSLD:%.*]] = load <vscale x 16 x i32>, ptr [[TMP4]], align 64
6285bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP7:%.*]] = load i32, ptr [[TMP6]], align 64
6295bcb4c4dSPhilip Reames; ORIGINS-NEXT:    ret void
6305bcb4c4dSPhilip Reames;
6315bcb4c4dSPhilip Reames  load <vscale x 16 x i32>, ptr %p
6325bcb4c4dSPhilip Reames  ret void
6335bcb4c4dSPhilip Reames}
6345bcb4c4dSPhilip Reames
6355bcb4c4dSPhilip Reames
6365bcb4c4dSPhilip Reamesdefine void @store.nxv1i32(ptr %p) sanitize_memory {
6375bcb4c4dSPhilip Reames; CHECK-LABEL: @store.nxv1i32(
6385bcb4c4dSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
6395bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
6405bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
6415bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
6425bcb4c4dSPhilip Reames; CHECK-NEXT:    store <vscale x 1 x i32> zeroinitializer, ptr [[TMP3]], align 4
6435bcb4c4dSPhilip Reames; CHECK-NEXT:    store <vscale x 1 x i32> zeroinitializer, ptr [[P]], align 4
6445bcb4c4dSPhilip Reames; CHECK-NEXT:    ret void
6455bcb4c4dSPhilip Reames;
6465bcb4c4dSPhilip Reames; ADDR-LABEL: @store.nxv1i32(
6475bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
6485bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
6495bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
6505bcb4c4dSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
6515bcb4c4dSPhilip Reames; ADDR:       2:
6525bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
6535bcb4c4dSPhilip Reames; ADDR-NEXT:    unreachable
6545bcb4c4dSPhilip Reames; ADDR:       3:
6555bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64
6565bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080
6575bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
6585bcb4c4dSPhilip Reames; ADDR-NEXT:    store <vscale x 1 x i32> zeroinitializer, ptr [[TMP6]], align 4
6595bcb4c4dSPhilip Reames; ADDR-NEXT:    store <vscale x 1 x i32> zeroinitializer, ptr [[P]], align 4
6605bcb4c4dSPhilip Reames; ADDR-NEXT:    ret void
6615bcb4c4dSPhilip Reames;
6625bcb4c4dSPhilip Reames; ORIGINS-LABEL: @store.nxv1i32(
6635bcb4c4dSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
6645bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
6655bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
6665bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
6675bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416
6685bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr
6695bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store <vscale x 1 x i32> zeroinitializer, ptr [[TMP3]], align 4
6705bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = call i32 @llvm.vector.reduce.or.nxv1i32(<vscale x 1 x i32> zeroinitializer)
6715bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[_MSCMP:%.*]] = icmp ne i32 [[TMP6]], 0
6725bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br i1 [[_MSCMP]], label [[TMP7:%.*]], label [[TMP13:%.*]], !prof [[PROF0:![0-9]+]]
6735bcb4c4dSPhilip Reames; ORIGINS:       7:
674*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP8:%.*]] = call i64 @llvm.vscale.i64()
675*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP9:%.*]] = mul i64 [[TMP8]], 4
676*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP10:%.*]] = add i64 [[TMP9]], 3
677*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP11:%.*]] = udiv i64 [[TMP10]], 4
6785bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br label [[DOTSPLIT:%.*]]
6795bcb4c4dSPhilip Reames; ORIGINS:       .split:
680*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV:%.*]] = phi i64 [ 0, [[TMP7]] ], [ [[IV_NEXT:%.*]], [[DOTSPLIT]] ]
681*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP12:%.*]] = getelementptr i32, ptr [[TMP5]], i64 [[IV]]
6825bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store i32 0, ptr [[TMP12]], align 4
683*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
684*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP11]]
6855bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
6865bcb4c4dSPhilip Reames; ORIGINS:       .split.split:
6875bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br label [[TMP13]]
6885bcb4c4dSPhilip Reames; ORIGINS:       13:
6895bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store <vscale x 1 x i32> zeroinitializer, ptr [[P]], align 4
6905bcb4c4dSPhilip Reames; ORIGINS-NEXT:    ret void
6915bcb4c4dSPhilip Reames;
6925bcb4c4dSPhilip Reames  store <vscale x 1 x i32> zeroinitializer, ptr %p
6935bcb4c4dSPhilip Reames  ret void
6945bcb4c4dSPhilip Reames}
6955bcb4c4dSPhilip Reames
6965bcb4c4dSPhilip Reamesdefine void @store.nxv2i32(ptr %p) sanitize_memory {
6975bcb4c4dSPhilip Reames; CHECK-LABEL: @store.nxv2i32(
6985bcb4c4dSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
6995bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
7005bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
7015bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
7025bcb4c4dSPhilip Reames; CHECK-NEXT:    store <vscale x 2 x i32> zeroinitializer, ptr [[TMP3]], align 8
7035bcb4c4dSPhilip Reames; CHECK-NEXT:    store <vscale x 2 x i32> zeroinitializer, ptr [[P]], align 8
7045bcb4c4dSPhilip Reames; CHECK-NEXT:    ret void
7055bcb4c4dSPhilip Reames;
7065bcb4c4dSPhilip Reames; ADDR-LABEL: @store.nxv2i32(
7075bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
7085bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
7095bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
7105bcb4c4dSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
7115bcb4c4dSPhilip Reames; ADDR:       2:
7125bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
7135bcb4c4dSPhilip Reames; ADDR-NEXT:    unreachable
7145bcb4c4dSPhilip Reames; ADDR:       3:
7155bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64
7165bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080
7175bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
7185bcb4c4dSPhilip Reames; ADDR-NEXT:    store <vscale x 2 x i32> zeroinitializer, ptr [[TMP6]], align 8
7195bcb4c4dSPhilip Reames; ADDR-NEXT:    store <vscale x 2 x i32> zeroinitializer, ptr [[P]], align 8
7205bcb4c4dSPhilip Reames; ADDR-NEXT:    ret void
7215bcb4c4dSPhilip Reames;
7225bcb4c4dSPhilip Reames; ORIGINS-LABEL: @store.nxv2i32(
7235bcb4c4dSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
7245bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
7255bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
7265bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
7275bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416
7285bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr
7295bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store <vscale x 2 x i32> zeroinitializer, ptr [[TMP3]], align 8
7305bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = call i32 @llvm.vector.reduce.or.nxv2i32(<vscale x 2 x i32> zeroinitializer)
7315bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[_MSCMP:%.*]] = icmp ne i32 [[TMP6]], 0
7325bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br i1 [[_MSCMP]], label [[TMP7:%.*]], label [[TMP13:%.*]], !prof [[PROF0]]
7335bcb4c4dSPhilip Reames; ORIGINS:       7:
734*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP8:%.*]] = call i64 @llvm.vscale.i64()
735*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP9:%.*]] = mul i64 [[TMP8]], 8
736*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP10:%.*]] = add i64 [[TMP9]], 3
737*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP11:%.*]] = udiv i64 [[TMP10]], 4
7385bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br label [[DOTSPLIT:%.*]]
7395bcb4c4dSPhilip Reames; ORIGINS:       .split:
740*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV:%.*]] = phi i64 [ 0, [[TMP7]] ], [ [[IV_NEXT:%.*]], [[DOTSPLIT]] ]
741*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP12:%.*]] = getelementptr i32, ptr [[TMP5]], i64 [[IV]]
7425bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store i32 0, ptr [[TMP12]], align 4
743*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
744*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP11]]
7455bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
7465bcb4c4dSPhilip Reames; ORIGINS:       .split.split:
7475bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br label [[TMP13]]
7485bcb4c4dSPhilip Reames; ORIGINS:       13:
7495bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store <vscale x 2 x i32> zeroinitializer, ptr [[P]], align 8
7505bcb4c4dSPhilip Reames; ORIGINS-NEXT:    ret void
7515bcb4c4dSPhilip Reames;
7525bcb4c4dSPhilip Reames  store <vscale x 2 x i32> zeroinitializer, ptr %p
7535bcb4c4dSPhilip Reames  ret void
7545bcb4c4dSPhilip Reames}
7555bcb4c4dSPhilip Reames
7565bcb4c4dSPhilip Reamesdefine void @store.nxv4i32(ptr %p) sanitize_memory {
7575bcb4c4dSPhilip Reames; CHECK-LABEL: @store.nxv4i32(
7585bcb4c4dSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
7595bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
7605bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
7615bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
7625bcb4c4dSPhilip Reames; CHECK-NEXT:    store <vscale x 4 x i32> zeroinitializer, ptr [[TMP3]], align 16
7635bcb4c4dSPhilip Reames; CHECK-NEXT:    store <vscale x 4 x i32> zeroinitializer, ptr [[P]], align 16
7645bcb4c4dSPhilip Reames; CHECK-NEXT:    ret void
7655bcb4c4dSPhilip Reames;
7665bcb4c4dSPhilip Reames; ADDR-LABEL: @store.nxv4i32(
7675bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
7685bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
7695bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
7705bcb4c4dSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
7715bcb4c4dSPhilip Reames; ADDR:       2:
7725bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
7735bcb4c4dSPhilip Reames; ADDR-NEXT:    unreachable
7745bcb4c4dSPhilip Reames; ADDR:       3:
7755bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64
7765bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080
7775bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
7785bcb4c4dSPhilip Reames; ADDR-NEXT:    store <vscale x 4 x i32> zeroinitializer, ptr [[TMP6]], align 16
7795bcb4c4dSPhilip Reames; ADDR-NEXT:    store <vscale x 4 x i32> zeroinitializer, ptr [[P]], align 16
7805bcb4c4dSPhilip Reames; ADDR-NEXT:    ret void
7815bcb4c4dSPhilip Reames;
7825bcb4c4dSPhilip Reames; ORIGINS-LABEL: @store.nxv4i32(
7835bcb4c4dSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
7845bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
7855bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
7865bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
7875bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416
7885bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr
7895bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store <vscale x 4 x i32> zeroinitializer, ptr [[TMP3]], align 16
7905bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = call i32 @llvm.vector.reduce.or.nxv4i32(<vscale x 4 x i32> zeroinitializer)
7915bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[_MSCMP:%.*]] = icmp ne i32 [[TMP6]], 0
7925bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br i1 [[_MSCMP]], label [[TMP7:%.*]], label [[TMP13:%.*]], !prof [[PROF0]]
7935bcb4c4dSPhilip Reames; ORIGINS:       7:
794*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP8:%.*]] = call i64 @llvm.vscale.i64()
795*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP9:%.*]] = mul i64 [[TMP8]], 16
796*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP10:%.*]] = add i64 [[TMP9]], 3
797*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP11:%.*]] = udiv i64 [[TMP10]], 4
7985bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br label [[DOTSPLIT:%.*]]
7995bcb4c4dSPhilip Reames; ORIGINS:       .split:
800*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV:%.*]] = phi i64 [ 0, [[TMP7]] ], [ [[IV_NEXT:%.*]], [[DOTSPLIT]] ]
801*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP12:%.*]] = getelementptr i32, ptr [[TMP5]], i64 [[IV]]
8025bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store i32 0, ptr [[TMP12]], align 4
803*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
804*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP11]]
8055bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
8065bcb4c4dSPhilip Reames; ORIGINS:       .split.split:
8075bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br label [[TMP13]]
8085bcb4c4dSPhilip Reames; ORIGINS:       13:
8095bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store <vscale x 4 x i32> zeroinitializer, ptr [[P]], align 16
8105bcb4c4dSPhilip Reames; ORIGINS-NEXT:    ret void
8115bcb4c4dSPhilip Reames;
8125bcb4c4dSPhilip Reames  store <vscale x 4 x i32> zeroinitializer, ptr %p
8135bcb4c4dSPhilip Reames  ret void
8145bcb4c4dSPhilip Reames}
8155bcb4c4dSPhilip Reames
8165bcb4c4dSPhilip Reamesdefine void @store.nxv8i32(ptr %p) sanitize_memory {
8175bcb4c4dSPhilip Reames; CHECK-LABEL: @store.nxv8i32(
8185bcb4c4dSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
8195bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
8205bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
8215bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
8225bcb4c4dSPhilip Reames; CHECK-NEXT:    store <vscale x 8 x i32> zeroinitializer, ptr [[TMP3]], align 32
8235bcb4c4dSPhilip Reames; CHECK-NEXT:    store <vscale x 8 x i32> zeroinitializer, ptr [[P]], align 32
8245bcb4c4dSPhilip Reames; CHECK-NEXT:    ret void
8255bcb4c4dSPhilip Reames;
8265bcb4c4dSPhilip Reames; ADDR-LABEL: @store.nxv8i32(
8275bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
8285bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
8295bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
8305bcb4c4dSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
8315bcb4c4dSPhilip Reames; ADDR:       2:
8325bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
8335bcb4c4dSPhilip Reames; ADDR-NEXT:    unreachable
8345bcb4c4dSPhilip Reames; ADDR:       3:
8355bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64
8365bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080
8375bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
8385bcb4c4dSPhilip Reames; ADDR-NEXT:    store <vscale x 8 x i32> zeroinitializer, ptr [[TMP6]], align 32
8395bcb4c4dSPhilip Reames; ADDR-NEXT:    store <vscale x 8 x i32> zeroinitializer, ptr [[P]], align 32
8405bcb4c4dSPhilip Reames; ADDR-NEXT:    ret void
8415bcb4c4dSPhilip Reames;
8425bcb4c4dSPhilip Reames; ORIGINS-LABEL: @store.nxv8i32(
8435bcb4c4dSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
8445bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
8455bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
8465bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
8475bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416
8485bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr
8495bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store <vscale x 8 x i32> zeroinitializer, ptr [[TMP3]], align 32
8505bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = call i32 @llvm.vector.reduce.or.nxv8i32(<vscale x 8 x i32> zeroinitializer)
8515bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[_MSCMP:%.*]] = icmp ne i32 [[TMP6]], 0
8525bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br i1 [[_MSCMP]], label [[TMP7:%.*]], label [[TMP13:%.*]], !prof [[PROF0]]
8535bcb4c4dSPhilip Reames; ORIGINS:       7:
854*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP8:%.*]] = call i64 @llvm.vscale.i64()
855*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP9:%.*]] = mul i64 [[TMP8]], 32
856*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP10:%.*]] = add i64 [[TMP9]], 3
857*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP11:%.*]] = udiv i64 [[TMP10]], 4
8585bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br label [[DOTSPLIT:%.*]]
8595bcb4c4dSPhilip Reames; ORIGINS:       .split:
860*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV:%.*]] = phi i64 [ 0, [[TMP7]] ], [ [[IV_NEXT:%.*]], [[DOTSPLIT]] ]
861*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP12:%.*]] = getelementptr i32, ptr [[TMP5]], i64 [[IV]]
8625bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store i32 0, ptr [[TMP12]], align 4
863*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
864*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP11]]
8655bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
8665bcb4c4dSPhilip Reames; ORIGINS:       .split.split:
8675bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br label [[TMP13]]
8685bcb4c4dSPhilip Reames; ORIGINS:       13:
8695bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store <vscale x 8 x i32> zeroinitializer, ptr [[P]], align 32
8705bcb4c4dSPhilip Reames; ORIGINS-NEXT:    ret void
8715bcb4c4dSPhilip Reames;
8725bcb4c4dSPhilip Reames  store <vscale x 8 x i32> zeroinitializer, ptr %p
8735bcb4c4dSPhilip Reames  ret void
8745bcb4c4dSPhilip Reames}
8755bcb4c4dSPhilip Reames
8765bcb4c4dSPhilip Reamesdefine void @store.nxv16i32(ptr %p) sanitize_memory {
8775bcb4c4dSPhilip Reames; CHECK-LABEL: @store.nxv16i32(
8785bcb4c4dSPhilip Reames; CHECK-NEXT:    call void @llvm.donothing()
8795bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
8805bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
8815bcb4c4dSPhilip Reames; CHECK-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
8825bcb4c4dSPhilip Reames; CHECK-NEXT:    store <vscale x 16 x i32> zeroinitializer, ptr [[TMP3]], align 64
8835bcb4c4dSPhilip Reames; CHECK-NEXT:    store <vscale x 16 x i32> zeroinitializer, ptr [[P]], align 64
8845bcb4c4dSPhilip Reames; CHECK-NEXT:    ret void
8855bcb4c4dSPhilip Reames;
8865bcb4c4dSPhilip Reames; ADDR-LABEL: @store.nxv16i32(
8875bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
8885bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @llvm.donothing()
8895bcb4c4dSPhilip Reames; ADDR-NEXT:    [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
8905bcb4c4dSPhilip Reames; ADDR-NEXT:    br i1 [[_MSCMP]], label [[TMP2:%.*]], label [[TMP3:%.*]], !prof [[PROF0]]
8915bcb4c4dSPhilip Reames; ADDR:       2:
8925bcb4c4dSPhilip Reames; ADDR-NEXT:    call void @__msan_warning_noreturn() #[[ATTR3]]
8935bcb4c4dSPhilip Reames; ADDR-NEXT:    unreachable
8945bcb4c4dSPhilip Reames; ADDR:       3:
8955bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP4:%.*]] = ptrtoint ptr [[P:%.*]] to i64
8965bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080
8975bcb4c4dSPhilip Reames; ADDR-NEXT:    [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr
8985bcb4c4dSPhilip Reames; ADDR-NEXT:    store <vscale x 16 x i32> zeroinitializer, ptr [[TMP6]], align 64
8995bcb4c4dSPhilip Reames; ADDR-NEXT:    store <vscale x 16 x i32> zeroinitializer, ptr [[P]], align 64
9005bcb4c4dSPhilip Reames; ADDR-NEXT:    ret void
9015bcb4c4dSPhilip Reames;
9025bcb4c4dSPhilip Reames; ORIGINS-LABEL: @store.nxv16i32(
9035bcb4c4dSPhilip Reames; ORIGINS-NEXT:    call void @llvm.donothing()
9045bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP1:%.*]] = ptrtoint ptr [[P:%.*]] to i64
9055bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP2:%.*]] = xor i64 [[TMP1]], 87960930222080
9065bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP3:%.*]] = inttoptr i64 [[TMP2]] to ptr
9075bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP4:%.*]] = add i64 [[TMP2]], 17592186044416
9085bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr
9095bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store <vscale x 16 x i32> zeroinitializer, ptr [[TMP3]], align 64
9105bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[TMP6:%.*]] = call i32 @llvm.vector.reduce.or.nxv16i32(<vscale x 16 x i32> zeroinitializer)
9115bcb4c4dSPhilip Reames; ORIGINS-NEXT:    [[_MSCMP:%.*]] = icmp ne i32 [[TMP6]], 0
9125bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br i1 [[_MSCMP]], label [[TMP7:%.*]], label [[TMP13:%.*]], !prof [[PROF0]]
9135bcb4c4dSPhilip Reames; ORIGINS:       7:
914*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP8:%.*]] = call i64 @llvm.vscale.i64()
915*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP9:%.*]] = mul i64 [[TMP8]], 64
916*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP10:%.*]] = add i64 [[TMP9]], 3
917*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP11:%.*]] = udiv i64 [[TMP10]], 4
9185bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br label [[DOTSPLIT:%.*]]
9195bcb4c4dSPhilip Reames; ORIGINS:       .split:
920*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV:%.*]] = phi i64 [ 0, [[TMP7]] ], [ [[IV_NEXT:%.*]], [[DOTSPLIT]] ]
921*3016c063SVitaly Buka; ORIGINS-NEXT:    [[TMP12:%.*]] = getelementptr i32, ptr [[TMP5]], i64 [[IV]]
9225bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store i32 0, ptr [[TMP12]], align 4
923*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV_NEXT]] = add nuw nsw i64 [[IV]], 1
924*3016c063SVitaly Buka; ORIGINS-NEXT:    [[IV_CHECK:%.*]] = icmp eq i64 [[IV_NEXT]], [[TMP11]]
9255bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br i1 [[IV_CHECK]], label [[DOTSPLIT_SPLIT:%.*]], label [[DOTSPLIT]]
9265bcb4c4dSPhilip Reames; ORIGINS:       .split.split:
9275bcb4c4dSPhilip Reames; ORIGINS-NEXT:    br label [[TMP13]]
9285bcb4c4dSPhilip Reames; ORIGINS:       13:
9295bcb4c4dSPhilip Reames; ORIGINS-NEXT:    store <vscale x 16 x i32> zeroinitializer, ptr [[P]], align 64
9305bcb4c4dSPhilip Reames; ORIGINS-NEXT:    ret void
9315bcb4c4dSPhilip Reames;
9325bcb4c4dSPhilip Reames  store <vscale x 16 x i32> zeroinitializer, ptr %p
9335bcb4c4dSPhilip Reames  ret void
9345bcb4c4dSPhilip Reames}
935