Skip to content

Commit 1f73f0c

Browse files
committed
[NFC][AMDGPU] Update cost model tests:
1. Convert to generated tests. 2. Added code-size case in few places.
1 parent 9075edc commit 1f73f0c

19 files changed

+1485
-856
lines changed

llvm/test/Analysis/CostModel/AMDGPU/add-sub.ll

Lines changed: 85 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,27 @@
1-
; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -mattr=+half-rate-64-ops < %s | FileCheck -check-prefixes=FAST16,ALL %s
2-
; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mattr=-half-rate-64-ops < %s | FileCheck -check-prefixes=SLOW16,ALL %s
3-
; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -mattr=+half-rate-64-ops < %s | FileCheck -check-prefixes=FAST16,ALL %s
4-
; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mattr=-half-rate-64-ops < %s | FileCheck -check-prefixes=SLOW16,ALL %s
1+
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2+
; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -mattr=+half-rate-64-ops < %s | FileCheck -check-prefixes=ALL,FAST16 %s
3+
; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mattr=-half-rate-64-ops < %s | FileCheck -check-prefixes=ALL,SLOW16 %s
4+
; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=gfx900 -mattr=+half-rate-64-ops < %s | FileCheck -check-prefixes=ALL-SIZE,FAST16-SIZE %s
5+
; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mattr=-half-rate-64-ops < %s | FileCheck -check-prefixes=ALL-SIZE,SLOW16-SIZE %s
56
; END.
67

7-
; ALL-LABEL: 'add_i32'
8-
; ALL: estimated cost of 1 for {{.*}} add i32
9-
; ALL: estimated cost of 2 for {{.*}} add <2 x i32>
10-
;;; Allow for 4 when v3i32 is illegal and TargetLowering thinks it needs widening,
11-
;;; and 3 when it is legal.
12-
; ALL: estimated cost of {{[34]}} for {{.*}} add <3 x i32>
13-
; ALL: estimated cost of 4 for {{.*}} add <4 x i32>
14-
;;; Allow for 8 when v3i32 is illegal and TargetLowering thinks it needs widening,
15-
;;; and 5 when it is legal.
16-
; ALL: estimated cost of {{[58]}} for {{.*}} add <5 x i32>
178
define amdgpu_kernel void @add_i32() #0 {
9+
; ALL-LABEL: 'add_i32'
10+
; ALL-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i32 = add i32 undef, undef
11+
; ALL-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32 = add <2 x i32> undef, undef
12+
; ALL-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v3i32 = add <3 x i32> undef, undef
13+
; ALL-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i32 = add <4 x i32> undef, undef
14+
; ALL-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %v5i32 = add <5 x i32> undef, undef
15+
; ALL-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
16+
;
17+
; ALL-SIZE-LABEL: 'add_i32'
18+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i32 = add i32 undef, undef
19+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i32 = add <2 x i32> undef, undef
20+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %v3i32 = add <3 x i32> undef, undef
21+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v4i32 = add <4 x i32> undef, undef
22+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %v5i32 = add <5 x i32> undef, undef
23+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
24+
;
1825
%i32 = add i32 undef, undef
1926
%v2i32 = add <2 x i32> undef, undef
2027
%v3i32 = add <3 x i32> undef, undef
@@ -23,13 +30,23 @@ define amdgpu_kernel void @add_i32() #0 {
2330
ret void
2431
}
2532

26-
; ALL-LABEL: 'add_i64'
27-
; ALL: estimated cost of 2 for {{.*}} add i64
28-
; ALL: estimated cost of 4 for {{.*}} add <2 x i64>
29-
; ALL: estimated cost of 6 for {{.*}} add <3 x i64>
30-
; ALL: estimated cost of 8 for {{.*}} add <4 x i64>
31-
; ALL: estimated cost of 128 for {{.*}} add <16 x i64>
3233
define amdgpu_kernel void @add_i64() #0 {
34+
; ALL-LABEL: 'add_i64'
35+
; ALL-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i64 = add i64 undef, undef
36+
; ALL-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i64 = add <2 x i64> undef, undef
37+
; ALL-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %v3i64 = add <3 x i64> undef, undef
38+
; ALL-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v4i64 = add <4 x i64> undef, undef
39+
; ALL-NEXT: Cost Model: Found an estimated cost of 128 for instruction: %v16i64 = add <16 x i64> undef, undef
40+
; ALL-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
41+
;
42+
; ALL-SIZE-LABEL: 'add_i64'
43+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i64 = add i64 undef, undef
44+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %v2i64 = add <2 x i64> undef, undef
45+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %v3i64 = add <3 x i64> undef, undef
46+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %v4i64 = add <4 x i64> undef, undef
47+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 128 for instruction: %v16i64 = add <16 x i64> undef, undef
48+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
49+
;
3350
%i64 = add i64 undef, undef
3451
%v2i64 = add <2 x i64> undef, undef
3552
%v3i64 = add <3 x i64> undef, undef
@@ -38,23 +55,61 @@ define amdgpu_kernel void @add_i64() #0 {
3855
ret void
3956
}
4057

41-
; ALL-LABEL: 'add_i16'
42-
; ALL: estimated cost of 1 for {{.*}} add i16
43-
; SLOW16: estimated cost of 2 for {{.*}} add <2 x i16>
44-
; FAST16: estimated cost of 1 for {{.*}} add <2 x i16>
4558
define amdgpu_kernel void @add_i16() #0 {
59+
; FAST16-LABEL: 'add_i16'
60+
; FAST16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i16 = add i16 undef, undef
61+
; FAST16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16 = add <2 x i16> undef, undef
62+
; FAST16-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
63+
;
64+
; SLOW16-LABEL: 'add_i16'
65+
; SLOW16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i16 = add i16 undef, undef
66+
; SLOW16-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16 = add <2 x i16> undef, undef
67+
; SLOW16-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
68+
;
69+
; FAST16-SIZE-LABEL: 'add_i16'
70+
; FAST16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i16 = add i16 undef, undef
71+
; FAST16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16 = add <2 x i16> undef, undef
72+
; FAST16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
73+
;
74+
; SLOW16-SIZE-LABEL: 'add_i16'
75+
; SLOW16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i16 = add i16 undef, undef
76+
; SLOW16-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16 = add <2 x i16> undef, undef
77+
; SLOW16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
78+
;
4679
%i16 = add i16 undef, undef
4780
%v2i16 = add <2 x i16> undef, undef
4881
ret void
4982
}
5083

51-
; ALL-LABEL: 'sub'
52-
; ALL: estimated cost of 1 for {{.*}} sub i32
53-
; ALL: estimated cost of 2 for {{.*}} sub i64
54-
; ALL: estimated cost of 1 for {{.*}} sub i16
55-
; SLOW16: estimated cost of 2 for {{.*}} sub <2 x i16>
56-
; FAST16: estimated cost of 1 for {{.*}} sub <2 x i16>
5784
define amdgpu_kernel void @sub() #0 {
85+
; FAST16-LABEL: 'sub'
86+
; FAST16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i32 = sub i32 undef, undef
87+
; FAST16-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i64 = sub i64 undef, undef
88+
; FAST16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i16 = sub i16 undef, undef
89+
; FAST16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16 = sub <2 x i16> undef, undef
90+
; FAST16-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
91+
;
92+
; SLOW16-LABEL: 'sub'
93+
; SLOW16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i32 = sub i32 undef, undef
94+
; SLOW16-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i64 = sub i64 undef, undef
95+
; SLOW16-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i16 = sub i16 undef, undef
96+
; SLOW16-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16 = sub <2 x i16> undef, undef
97+
; SLOW16-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
98+
;
99+
; FAST16-SIZE-LABEL: 'sub'
100+
; FAST16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i32 = sub i32 undef, undef
101+
; FAST16-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i64 = sub i64 undef, undef
102+
; FAST16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i16 = sub i16 undef, undef
103+
; FAST16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %v2i16 = sub <2 x i16> undef, undef
104+
; FAST16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
105+
;
106+
; SLOW16-SIZE-LABEL: 'sub'
107+
; SLOW16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i32 = sub i32 undef, undef
108+
; SLOW16-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %i64 = sub i64 undef, undef
109+
; SLOW16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i16 = sub i16 undef, undef
110+
; SLOW16-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i16 = sub <2 x i16> undef, undef
111+
; SLOW16-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
112+
;
58113
%i32 = sub i32 undef, undef
59114
%i64 = sub i64 undef, undef
60115
%i16 = sub i16 undef, undef
Lines changed: 58 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,63 @@
1-
; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=kaveri < %s | FileCheck %s
2-
; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=kaveri < %s | FileCheck %s
1+
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2+
; RUN: opt -cost-model -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=kaveri < %s | FileCheck -check-prefixes=ALL %s
3+
; RUN: opt -cost-model -cost-kind=code-size -analyze -mtriple=amdgcn-unknown-amdhsa -mcpu=kaveri < %s | FileCheck -check-prefixes=ALL-SIZE %s
34
; END.
45

5-
; CHECK-LABEL: 'addrspacecast_global_to_flat'
6-
; CHECK: estimated cost of 0 for {{.*}} addrspacecast i8 addrspace(1)* %ptr to i8*
7-
define i8* @addrspacecast_global_to_flat(i8 addrspace(1)* %ptr) #0 {
8-
%cast = addrspacecast i8 addrspace(1)* %ptr to i8*
9-
ret i8* %cast
10-
}
11-
12-
; CHECK-LABEL: 'addrspacecast_global_to_flat_v2'
13-
; CHECK: estimated cost of 0 for {{.*}} addrspacecast <2 x i8 addrspace(1)*> %ptr to <2 x i8*>
14-
define <2 x i8*> @addrspacecast_global_to_flat_v2(<2 x i8 addrspace(1)*> %ptr) #0 {
15-
%cast = addrspacecast <2 x i8 addrspace(1)*> %ptr to <2 x i8*>
16-
ret <2 x i8*> %cast
17-
}
18-
19-
; CHECK-LABEL: 'addrspacecast_global_to_flat_v32'
20-
; CHECK: estimated cost of 0 for {{.*}} addrspacecast <32 x i8 addrspace(1)*> %ptr to <32 x i8*>
21-
define <32 x i8*> @addrspacecast_global_to_flat_v32(<32 x i8 addrspace(1)*> %ptr) #0 {
22-
%cast = addrspacecast <32 x i8 addrspace(1)*> %ptr to <32 x i8*>
23-
ret <32 x i8*> %cast
24-
}
25-
26-
; CHECK-LABEL: 'addrspacecast_local_to_flat'
27-
; CHECK: estimated cost of 1 for {{.*}} addrspacecast i8 addrspace(3)* %ptr to i8*
28-
define i8* @addrspacecast_local_to_flat(i8 addrspace(3)* %ptr) #0 {
29-
%cast = addrspacecast i8 addrspace(3)* %ptr to i8*
30-
ret i8* %cast
31-
}
32-
33-
; CHECK-LABEL: 'addrspacecast_local_to_flat_v2'
34-
; CHECK: estimated cost of 2 for {{.*}} addrspacecast <2 x i8 addrspace(3)*> %ptr to <2 x i8*>
35-
define <2 x i8*> @addrspacecast_local_to_flat_v2(<2 x i8 addrspace(3)*> %ptr) #0 {
36-
%cast = addrspacecast <2 x i8 addrspace(3)*> %ptr to <2 x i8*>
37-
ret <2 x i8*> %cast
38-
}
39-
40-
; CHECK-LABEL: 'addrspacecast_local_to_flat_v32'
41-
; CHECK: estimated cost of 32 for {{.*}} addrspacecast <32 x i8 addrspace(3)*> %ptr to <32 x i8*>
42-
define <32 x i8*> @addrspacecast_local_to_flat_v32(<32 x i8 addrspace(3)*> %ptr) #0 {
43-
%cast = addrspacecast <32 x i8 addrspace(3)*> %ptr to <32 x i8*>
44-
ret <32 x i8*> %cast
45-
}
46-
47-
; CHECK-LABEL: 'addrspacecast_flat_to_local'
48-
; CHECK: estimated cost of 0 for {{.*}} addrspacecast i8* %ptr to i8 addrspace(3)*
49-
define i8 addrspace(3)* @addrspacecast_flat_to_local(i8* %ptr) #0 {
50-
%cast = addrspacecast i8* %ptr to i8 addrspace(3)*
51-
ret i8 addrspace(3)* %cast
52-
}
53-
54-
; CHECK-LABEL: 'addrspacecast_flat_to_local_v2'
55-
; CHECK: estimated cost of 0 for {{.*}} addrspacecast <2 x i8*> %ptr to <2 x i8 addrspace(3)*>
56-
define <2 x i8 addrspace(3)*> @addrspacecast_flat_to_local_v2(<2 x i8*> %ptr) #0 {
57-
%cast = addrspacecast <2 x i8*> %ptr to <2 x i8 addrspace(3)*>
58-
ret <2 x i8 addrspace(3)*> %cast
59-
}
60-
61-
; CHECK-LABEL: 'addrspacecast_flat_to_local_v32'
62-
; CHECK: estimated cost of 0 for {{.*}} addrspacecast <32 x i8*> %ptr to <32 x i8 addrspace(3)*>
63-
define <32 x i8 addrspace(3)*> @addrspacecast_flat_to_local_v32(<32 x i8*> %ptr) #0 {
64-
%cast = addrspacecast <32 x i8*> %ptr to <32 x i8 addrspace(3)*>
65-
ret <32 x i8 addrspace(3)*> %cast
6+
define void @addrspacecast_global_to_flat() #0 {
7+
; ALL-LABEL: 'addrspacecast_global_to_flat'
8+
; ALL-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %i8ptr = addrspacecast i8 addrspace(1)* undef to i8*
9+
; ALL-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i8ptr = addrspacecast <2 x i8 addrspace(1)*> undef to <2 x i8*>
10+
; ALL-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v32i8ptr = addrspacecast <32 x i8 addrspace(1)*> undef to <32 x i8*>
11+
; ALL-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
12+
;
13+
; ALL-SIZE-LABEL: 'addrspacecast_global_to_flat'
14+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %i8ptr = addrspacecast i8 addrspace(1)* undef to i8*
15+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i8ptr = addrspacecast <2 x i8 addrspace(1)*> undef to <2 x i8*>
16+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v32i8ptr = addrspacecast <32 x i8 addrspace(1)*> undef to <32 x i8*>
17+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
18+
;
19+
%i8ptr = addrspacecast i8 addrspace(1)* undef to i8*
20+
%v2i8ptr = addrspacecast <2 x i8 addrspace(1)*> undef to <2 x i8*>
21+
%v32i8ptr = addrspacecast <32 x i8 addrspace(1)*> undef to <32 x i8*>
22+
ret void
23+
}
24+
25+
define void @addrspacecast_local_to_flat() #0 {
26+
; ALL-LABEL: 'addrspacecast_local_to_flat'
27+
; ALL-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i8ptr = addrspacecast i8 addrspace(3)* undef to i8*
28+
; ALL-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i8ptr = addrspacecast <2 x i8 addrspace(3)*> undef to <2 x i8*>
29+
; ALL-NEXT: Cost Model: Found an estimated cost of 32 for instruction: %v32i8ptr = addrspacecast <32 x i8 addrspace(3)*> undef to <32 x i8*>
30+
; ALL-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
31+
;
32+
; ALL-SIZE-LABEL: 'addrspacecast_local_to_flat'
33+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %i8ptr = addrspacecast i8 addrspace(3)* undef to i8*
34+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %v2i8ptr = addrspacecast <2 x i8 addrspace(3)*> undef to <2 x i8*>
35+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 32 for instruction: %v32i8ptr = addrspacecast <32 x i8 addrspace(3)*> undef to <32 x i8*>
36+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
37+
;
38+
%i8ptr = addrspacecast i8 addrspace(3)* undef to i8*
39+
%v2i8ptr = addrspacecast <2 x i8 addrspace(3)*> undef to <2 x i8*>
40+
%v32i8ptr = addrspacecast <32 x i8 addrspace(3)*> undef to <32 x i8*>
41+
ret void
42+
}
43+
44+
define void @addrspacecast_flat_to_local() #0 {
45+
; ALL-LABEL: 'addrspacecast_flat_to_local'
46+
; ALL-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %i8ptr = addrspacecast i8* undef to i8 addrspace(3)*
47+
; ALL-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i8ptr = addrspacecast <2 x i8*> undef to <2 x i8 addrspace(3)*>
48+
; ALL-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v32i8ptr = addrspacecast <32 x i8*> undef to <32 x i8 addrspace(3)*>
49+
; ALL-NEXT: Cost Model: Found an estimated cost of 10 for instruction: ret void
50+
;
51+
; ALL-SIZE-LABEL: 'addrspacecast_flat_to_local'
52+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %i8ptr = addrspacecast i8* undef to i8 addrspace(3)*
53+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v2i8ptr = addrspacecast <2 x i8*> undef to <2 x i8 addrspace(3)*>
54+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %v32i8ptr = addrspacecast <32 x i8*> undef to <32 x i8 addrspace(3)*>
55+
; ALL-SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void
56+
;
57+
%i8ptr = addrspacecast i8* undef to i8 addrspace(3)*
58+
%v2i8ptr = addrspacecast <2 x i8*> undef to <2 x i8 addrspace(3)*>
59+
%v32i8ptr = addrspacecast <32 x i8*> undef to <32 x i8 addrspace(3)*>
60+
ret void
6661
}
6762

6863
attributes #0 = { nounwind readnone }

0 commit comments

Comments
 (0)