Skip to content

Commit 51b2f21

Browse files
committed
[ASAN] Simplify masked load/store test [nfc]
Only use of the globals was to load a pointer, we can just pass in a pointer instead.
1 parent 803437d commit 51b2f21

File tree

1 file changed

+12
-28
lines changed

1 file changed

+12
-28
lines changed

llvm/test/Instrumentation/AddressSanitizer/asan-masked-load-store.ll

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,13 @@
1010

1111
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
1212

13-
@v4f32 = global ptr zeroinitializer, align 8
14-
@v8i32 = global ptr zeroinitializer, align 8
15-
@v4i64 = global ptr zeroinitializer, align 8
16-
1713
;;;;;;;;;;;;;;;; STORE
1814
declare void @llvm.masked.store.v4f32.p0(<4 x float>, ptr, i32, <4 x i1>) argmemonly nounwind
1915
declare void @llvm.masked.store.v8i32.p0(<8 x i32>, ptr, i32, <8 x i1>) argmemonly nounwind
2016
declare void @llvm.masked.store.v4p0.p0(<4 x ptr>, ptr, i32, <4 x i1>) argmemonly nounwind
2117

22-
define void @store.v4f32.1110(<4 x float> %arg) sanitize_address {
18+
define void @store.v4f32.1110(ptr %p, <4 x float> %arg) sanitize_address {
2319
; ALL-LABEL: @store.v4f32.1110
24-
%p = load ptr, ptr @v4f32, align 8
2520
; NOSTORE-NOT: call void @__asan_store
2621
; STORE: [[GEP0:%[0-9A-Za-z]+]] = getelementptr <4 x float>, ptr %p, i64 0, i64 0
2722
; STORE: [[PGEP0:%[0-9A-Za-z]+]] = ptrtoint ptr [[GEP0]] to i64
@@ -37,9 +32,8 @@ define void @store.v4f32.1110(<4 x float> %arg) sanitize_address {
3732
ret void
3833
}
3934

40-
define void @store.v8i32.10010110(<8 x i32> %arg) sanitize_address {
35+
define void @store.v8i32.10010110(ptr %p, <8 x i32> %arg) sanitize_address {
4136
; ALL-LABEL: @store.v8i32.10010110
42-
%p = load ptr, ptr @v8i32, align 8
4337
; NOSTORE-NOT: call void @__asan_store
4438
; STORE: [[GEP0:%[0-9A-Za-z]+]] = getelementptr <8 x i32>, ptr %p, i64 0, i64 0
4539
; STORE: [[PGEP0:%[0-9A-Za-z]+]] = ptrtoint ptr [[GEP0]] to i64
@@ -58,9 +52,8 @@ define void @store.v8i32.10010110(<8 x i32> %arg) sanitize_address {
5852
ret void
5953
}
6054

61-
define void @store.v4i64.0001(<4 x ptr> %arg) sanitize_address {
55+
define void @store.v4i64.0001(ptr %p, <4 x ptr> %arg) sanitize_address {
6256
; ALL-LABEL: @store.v4i64.0001
63-
%p = load ptr, ptr @v4i64, align 8
6457
; NOSTORE-NOT: call void @__asan_store
6558
; STORE: [[GEP3:%[0-9A-Za-z]+]] = getelementptr <4 x ptr>, ptr %p, i64 0, i64 3
6659
; STORE: [[PGEP3:%[0-9A-Za-z]+]] = ptrtoint ptr [[GEP3]] to i64
@@ -70,9 +63,8 @@ define void @store.v4i64.0001(<4 x ptr> %arg) sanitize_address {
7063
ret void
7164
}
7265

73-
define void @store.v4f32.variable(<4 x float> %arg, <4 x i1> %mask) sanitize_address {
66+
define void @store.v4f32.variable(ptr %p, <4 x float> %arg, <4 x i1> %mask) sanitize_address {
7467
; ALL-LABEL: @store.v4f32.variable
75-
%p = load ptr, ptr @v4f32, align 8
7668
; STORE: [[MASK0:%[0-9A-Za-z]+]] = extractelement <4 x i1> %mask, i64 0
7769
; STORE: br i1 [[MASK0]], label %[[THEN0:[0-9A-Za-z]+]], label %[[AFTER0:[0-9A-Za-z]+]]
7870
; STORE: [[THEN0]]:
@@ -115,9 +107,8 @@ define void @store.v4f32.variable(<4 x float> %arg, <4 x i1> %mask) sanitize_add
115107
}
116108

117109
;; Store using two masked.stores, which should instrument them both.
118-
define void @store.v4f32.1010.split(<4 x float> %arg) sanitize_address {
110+
define void @store.v4f32.1010.split(ptr %p, <4 x float> %arg) sanitize_address {
119111
; BOTH-LABEL: @store.v4f32.1010.split
120-
%p = load ptr, ptr @v4f32, align 8
121112
; STORE: [[GEP0:%[0-9A-Za-z]+]] = getelementptr <4 x float>, ptr %p, i64 0, i64 0
122113
; STORE: [[PGEP0:%[0-9A-Za-z]+]] = ptrtoint ptr [[GEP0]] to i64
123114
; STORE: call void @__asan_store4(i64 [[PGEP0]])
@@ -132,9 +123,8 @@ define void @store.v4f32.1010.split(<4 x float> %arg) sanitize_address {
132123
}
133124

134125
;; Store using a masked.store after a full store. Shouldn't instrument the second one.
135-
define void @store.v4f32.0010.after.full.store(<4 x float> %arg) sanitize_address {
126+
define void @store.v4f32.0010.after.full.store(ptr %p, <4 x float> %arg) sanitize_address {
136127
; BOTH-LABEL: @store.v4f32.0010.after.full.store
137-
%p = load ptr, ptr @v4f32, align 8
138128
; STORE: [[PTRTOINT:%[0-9A-Za-z]+]] = ptrtoint ptr %p to i64
139129
; STORE: call void @__asan_store16(i64 [[PTRTOINT]])
140130
; STORE: store <4 x float> %arg, ptr %p
@@ -150,9 +140,8 @@ declare <4 x float> @llvm.masked.load.v4f32.p0(ptr, i32, <4 x i1>, <4 x float>)
150140
declare <8 x i32> @llvm.masked.load.v8i32.p0(ptr, i32, <8 x i1>, <8 x i32>) argmemonly nounwind
151141
declare <4 x ptr> @llvm.masked.load.v4p0.p0(ptr, i32, <4 x i1>, <4 x ptr>) argmemonly nounwind
152142

153-
define <8 x i32> @load.v8i32.11100001(<8 x i32> %arg) sanitize_address {
143+
define <8 x i32> @load.v8i32.11100001(ptr %p, <8 x i32> %arg) sanitize_address {
154144
; ALL-LABEL: @load.v8i32.11100001
155-
%p = load ptr, ptr @v8i32, align 8
156145
; NOLOAD-NOT: call void @__asan_load
157146
; LOAD: [[GEP0:%[0-9A-Za-z]+]] = getelementptr <8 x i32>, ptr %p, i64 0, i64 0
158147
; LOAD: [[PGEP0:%[0-9A-Za-z]+]] = ptrtoint ptr [[GEP0]] to i64
@@ -171,9 +160,8 @@ define <8 x i32> @load.v8i32.11100001(<8 x i32> %arg) sanitize_address {
171160
ret <8 x i32> %res
172161
}
173162

174-
define <4 x float> @load.v4f32.1001(<4 x float> %arg) sanitize_address {
163+
define <4 x float> @load.v4f32.1001(ptr %p, <4 x float> %arg) sanitize_address {
175164
; ALL-LABEL: @load.v4f32.1001
176-
%p = load ptr, ptr @v4f32, align 8
177165
; NOLOAD-NOT: call void @__asan_load
178166
; LOAD: [[GEP0:%[0-9A-Za-z]+]] = getelementptr <4 x float>, ptr %p, i64 0, i64 0
179167
; LOAD: [[PGEP0:%[0-9A-Za-z]+]] = ptrtoint ptr [[GEP0]] to i64
@@ -186,9 +174,8 @@ define <4 x float> @load.v4f32.1001(<4 x float> %arg) sanitize_address {
186174
ret <4 x float> %res
187175
}
188176

189-
define <4 x ptr> @load.v4i64.0001(<4 x ptr> %arg) sanitize_address {
177+
define <4 x ptr> @load.v4i64.0001(ptr %p, <4 x ptr> %arg) sanitize_address {
190178
; ALL-LABEL: @load.v4i64.0001
191-
%p = load ptr, ptr @v4i64, align 8
192179
; NOLOAD-NOT: call void @__asan_load
193180
; LOAD: [[GEP3:%[0-9A-Za-z]+]] = getelementptr <4 x ptr>, ptr %p, i64 0, i64 3
194181
; LOAD: [[PGEP3:%[0-9A-Za-z]+]] = ptrtoint ptr [[GEP3]] to i64
@@ -198,9 +185,8 @@ define <4 x ptr> @load.v4i64.0001(<4 x ptr> %arg) sanitize_address {
198185
ret <4 x ptr> %res
199186
}
200187

201-
define <4 x float> @load.v4f32.variable(<4 x float> %arg, <4 x i1> %mask) sanitize_address {
188+
define <4 x float> @load.v4f32.variable(ptr %p, <4 x float> %arg, <4 x i1> %mask) sanitize_address {
202189
; ALL-LABEL: @load.v4f32.variable
203-
%p = load ptr, ptr @v4f32, align 8
204190
; LOAD: [[MASK0:%[0-9A-Za-z]+]] = extractelement <4 x i1> %mask, i64 0
205191
; LOAD: br i1 [[MASK0]], label %[[THEN0:[0-9A-Za-z]+]], label %[[AFTER0:[0-9A-Za-z]+]]
206192
; LOAD: [[THEN0]]:
@@ -243,9 +229,8 @@ define <4 x float> @load.v4f32.variable(<4 x float> %arg, <4 x i1> %mask) saniti
243229
}
244230

245231
;; Load using two masked.loads, which should instrument them both.
246-
define <4 x float> @load.v4f32.1001.split(<4 x float> %arg) sanitize_address {
232+
define <4 x float> @load.v4f32.1001.split(ptr %p, <4 x float> %arg) sanitize_address {
247233
; BOTH-LABEL: @load.v4f32.1001
248-
%p = load ptr, ptr @v4f32, align 8
249234
; LOAD: [[GEP0:%[0-9A-Za-z]+]] = getelementptr <4 x float>, ptr %p, i64 0, i64 0
250235
; LOAD: [[PGEP0:%[0-9A-Za-z]+]] = ptrtoint ptr [[GEP0]] to i64
251236
; LOAD: call void @__asan_load4(i64 [[PGEP0]])
@@ -260,9 +245,8 @@ define <4 x float> @load.v4f32.1001.split(<4 x float> %arg) sanitize_address {
260245
}
261246

262247
;; Load using a masked.load after a full load. Shouldn't instrument the second one.
263-
define <4 x float> @load.v4f32.1001.after.full.load(<4 x float> %arg) sanitize_address {
248+
define <4 x float> @load.v4f32.1001.after.full.load(ptr %p, <4 x float> %arg) sanitize_address {
264249
; BOTH-LABEL: @load.v4f32.1001.after.full.load
265-
%p = load ptr, ptr @v4f32, align 8
266250
; LOAD: [[PTRTOINT:%[0-9A-Za-z]+]] = ptrtoint ptr %p to i64
267251
; LOAD: call void @__asan_load16(i64 [[PTRTOINT]])
268252
; LOAD: %res = load <4 x float>, ptr %p

0 commit comments

Comments
 (0)