8
8
@staticArrayOfVecData = internal global [3 x <4 x i32 >] [<4 x i32 > <i32 1 , i32 2 , i32 3 , i32 4 >, <4 x i32 > <i32 5 , i32 6 , i32 7 , i32 8 >, <4 x i32 > <i32 9 , i32 10 , i32 11 , i32 12 >], align 4
9
9
@"groupshared2dArrayofVectors" = local_unnamed_addr addrspace (3 ) global [3 x [3 x <4 x i32 >]] zeroinitializer , align 16
10
10
11
- ; CHECK: @arrayofVecData.scalarized.1dim = local_unnamed_addr addrspace(3) global [8 x i32] zeroinitializer, align 16
12
- ; CHECK: @vecData.scalarized = external addrspace(3) global [4 x i32], align 4
13
- ; CHECK: @staticArrayOfVecData.scalarized.1dim = internal global [12 x i32] [i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12], align 4
14
- ; CHECK: @groupshared2dArrayofVectors.scalarized.1dim = local_unnamed_addr addrspace(3) global [36 x i32] zeroinitializer, align 16
15
11
16
- ; CHECK-NOT: @arrayofVecData
17
- ; CHECK-NOT: @arrayofVecData.scalarized
18
- ; CHECK-NOT: @vecData
19
- ; CHECK-NOT: @staticArrayOfVecData
20
- ; CHECK-NOT: @staticArrayOfVecData.scalarized
21
- ; CHECK-NOT: @groupshared2dArrayofVectors
22
- ; CHECK-NOT: @groupshared2dArrayofVectors.scalarized
23
12
24
13
define <4 x i32 > @load_array_vec_test () #0 {
25
14
; CHECK-LABEL: define <4 x i32> @load_array_vec_test(
26
15
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
27
16
; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(3) @arrayofVecData.scalarized.1dim, align 4
28
- ; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 1), align 4
29
- ; CHECK-NEXT: [[TMP6:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 2), align 4
30
- ; CHECK-NEXT: [[TMP8:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 3), align 4
17
+ ; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32] , ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0 , i32 1), align 4
18
+ ; CHECK-NEXT: [[TMP6:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32] , ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0 , i32 2), align 4
19
+ ; CHECK-NEXT: [[TMP8:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32] , ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0 , i32 3), align 4
31
20
; CHECK-NEXT: [[TMP10:%.*]] = load i32, ptr addrspace(3) getelementptr inbounds ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 4), align 4
32
- ; CHECK-NEXT: [[TMP12:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) getelementptr inbounds ( [8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 4), i32 1 ), align 4
33
- ; CHECK-NEXT: [[TMP14:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) getelementptr inbounds ( [8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 4), i32 2 ), align 4
34
- ; CHECK-NEXT: [[TMP16:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) getelementptr inbounds ( [8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 4), i32 3 ), align 4
21
+ ; CHECK-NEXT: [[TMP12:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 5 ), align 4
22
+ ; CHECK-NEXT: [[TMP14:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 6 ), align 4
23
+ ; CHECK-NEXT: [[TMP16:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 7 ), align 4
35
24
; CHECK-NEXT: [[DOTI05:%.*]] = add i32 [[TMP2]], [[TMP10]]
36
25
; CHECK-NEXT: [[DOTI16:%.*]] = add i32 [[TMP4]], [[TMP12]]
37
26
; CHECK-NEXT: [[DOTI27:%.*]] = add i32 [[TMP6]], [[TMP14]]
@@ -53,9 +42,9 @@ define <4 x i32> @load_vec_test() #0 {
53
42
; CHECK-LABEL: define <4 x i32> @load_vec_test(
54
43
; CHECK-SAME: ) #[[ATTR0]] {
55
44
; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr addrspace(3) @vecData.scalarized, align 4
56
- ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) @vecData.scalarized, i32 1), align 4
57
- ; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) @vecData.scalarized, i32 2), align 4
58
- ; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) @vecData.scalarized, i32 3), align 4
45
+ ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(3) getelementptr ([4 x i32] , ptr addrspace(3) @vecData.scalarized, i32 0 , i32 1), align 4
46
+ ; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr addrspace(3) getelementptr ([4 x i32] , ptr addrspace(3) @vecData.scalarized, i32 0 , i32 2), align 4
47
+ ; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr addrspace(3) getelementptr ([4 x i32] , ptr addrspace(3) @vecData.scalarized, i32 0 , i32 3), align 4
59
48
; CHECK-NEXT: [[DOTUPTO0:%.*]] = insertelement <4 x i32> poison, i32 [[TMP1]], i32 0
60
49
; CHECK-NEXT: [[DOTUPTO1:%.*]] = insertelement <4 x i32> [[DOTUPTO0]], i32 [[TMP2]], i32 1
61
50
; CHECK-NEXT: [[DOTUPTO2:%.*]] = insertelement <4 x i32> [[DOTUPTO1]], i32 [[TMP3]], i32 2
@@ -66,18 +55,60 @@ define <4 x i32> @load_vec_test() #0 {
66
55
ret <4 x i32 > %1
67
56
}
68
57
58
+ define <4 x i32 > @load_vec_from_scalar_gep_test () #0 {
59
+ ; CHECK-LABEL: define <4 x i32> @load_vec_from_scalar_gep_test(
60
+ ; CHECK-SAME: ) #[[ATTR0]] {
61
+ ; CHECK-NEXT: [[DOTI04:%.*]] = load i32, ptr addrspace(3) getelementptr inbounds nuw ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 4), align 4
62
+ ; CHECK-NEXT: [[DOTI116:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 5), align 4
63
+ ; CHECK-NEXT: [[DOTI228:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 6), align 4
64
+ ; CHECK-NEXT: [[DOTI3310:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 7), align 4
65
+ ; CHECK-NEXT: [[DOTUPTO011:%.*]] = insertelement <4 x i32> poison, i32 [[DOTI04]], i32 0
66
+ ; CHECK-NEXT: [[DOTUPTO112:%.*]] = insertelement <4 x i32> [[DOTUPTO011]], i32 [[DOTI116]], i32 1
67
+ ; CHECK-NEXT: [[DOTUPTO213:%.*]] = insertelement <4 x i32> [[DOTUPTO112]], i32 [[DOTI228]], i32 2
68
+ ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <4 x i32> [[DOTUPTO213]], i32 [[DOTI3310]], i32 3
69
+ ; CHECK-NEXT: ret <4 x i32> [[TMP1]]
70
+ ;
71
+ %1 = getelementptr inbounds nuw i32 , ptr addrspace (3 ) @"arrayofVecData" , i32 4
72
+ %2 = load <4 x i32 >, ptr addrspace (3 ) %1 , align 4
73
+ ret <4 x i32 > %2
74
+ }
75
+
76
+ define <4 x i32 > @load_vec_from_i8_gep_test () #0 {
77
+ ; CHECK-LABEL: define <4 x i32> @load_vec_from_i8_gep_test(
78
+ ; CHECK-SAME: ) #[[ATTR0]] {
79
+ ; CHECK-NEXT: [[DOTI04:%.*]] = load i32, ptr addrspace(3) getelementptr inbounds nuw ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 4), align 4
80
+ ; CHECK-NEXT: [[DOTI116:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 5), align 4
81
+ ; CHECK-NEXT: [[DOTI228:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 6), align 4
82
+ ; CHECK-NEXT: [[DOTI3310:%.*]] = load i32, ptr addrspace(3) getelementptr ([8 x i32], ptr addrspace(3) @arrayofVecData.scalarized.1dim, i32 0, i32 7), align 4
83
+ ; CHECK-NEXT: [[DOTUPTO011:%.*]] = insertelement <4 x i32> poison, i32 [[DOTI04]], i32 0
84
+ ; CHECK-NEXT: [[DOTUPTO112:%.*]] = insertelement <4 x i32> [[DOTUPTO011]], i32 [[DOTI116]], i32 1
85
+ ; CHECK-NEXT: [[DOTUPTO213:%.*]] = insertelement <4 x i32> [[DOTUPTO112]], i32 [[DOTI228]], i32 2
86
+ ; CHECK-NEXT: [[TMP1:%.*]] = insertelement <4 x i32> [[DOTUPTO213]], i32 [[DOTI3310]], i32 3
87
+ ; CHECK-NEXT: ret <4 x i32> [[TMP1]]
88
+ ;
89
+ %1 = getelementptr inbounds nuw i8 , ptr addrspace (3 ) @"arrayofVecData" , i32 16
90
+ %2 = load <4 x i32 >, ptr addrspace (3 ) %1 , align 4
91
+ ret <4 x i32 > %2
92
+ }
93
+
69
94
define <4 x i32 > @load_static_array_of_vec_test (i32 %index ) #0 {
70
95
; CHECK-LABEL: define <4 x i32> @load_static_array_of_vec_test(
71
96
; CHECK-SAME: i32 [[INDEX:%.*]]) #[[ATTR0]] {
72
97
; CHECK-NEXT: [[TMP3:%.*]] = mul i32 [[INDEX]], 4
73
98
; CHECK-NEXT: [[TMP2:%.*]] = add i32 0, [[TMP3]]
74
99
; CHECK-NEXT: [[DOTFLAT:%.*]] = getelementptr inbounds [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP2]]
75
100
; CHECK-NEXT: [[DOTI0:%.*]] = load i32, ptr [[DOTFLAT]], align 4
76
- ; CHECK-NEXT: [[DOTFLAT_I1:%.*]] = getelementptr i32, ptr [[DOTFLAT]], i32 1
101
+ ; CHECK-NEXT: [[TMP4:%.*]] = mul i32 [[INDEX]], 4
102
+ ; CHECK-NEXT: [[TMP5:%.*]] = add i32 1, [[TMP4]]
103
+ ; CHECK-NEXT: [[DOTFLAT_I1:%.*]] = getelementptr [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP5]]
77
104
; CHECK-NEXT: [[DOTI1:%.*]] = load i32, ptr [[DOTFLAT_I1]], align 4
78
- ; CHECK-NEXT: [[DOTFLAT_I2:%.*]] = getelementptr i32, ptr [[DOTFLAT]], i32 2
105
+ ; CHECK-NEXT: [[TMP6:%.*]] = mul i32 [[INDEX]], 4
106
+ ; CHECK-NEXT: [[TMP7:%.*]] = add i32 2, [[TMP6]]
107
+ ; CHECK-NEXT: [[DOTFLAT_I2:%.*]] = getelementptr [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP7]]
79
108
; CHECK-NEXT: [[DOTI2:%.*]] = load i32, ptr [[DOTFLAT_I2]], align 4
80
- ; CHECK-NEXT: [[DOTFLAT_I3:%.*]] = getelementptr i32, ptr [[DOTFLAT]], i32 3
109
+ ; CHECK-NEXT: [[TMP8:%.*]] = mul i32 [[INDEX]], 4
110
+ ; CHECK-NEXT: [[TMP9:%.*]] = add i32 3, [[TMP8]]
111
+ ; CHECK-NEXT: [[DOTFLAT_I3:%.*]] = getelementptr [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP9]]
81
112
; CHECK-NEXT: [[DOTI3:%.*]] = load i32, ptr [[DOTFLAT_I3]], align 4
82
113
; CHECK-NEXT: [[DOTUPTO01:%.*]] = insertelement <4 x i32> poison, i32 [[DOTI0]], i32 0
83
114
; CHECK-NEXT: [[DOTUPTO12:%.*]] = insertelement <4 x i32> [[DOTUPTO01]], i32 [[DOTI1]], i32 1
@@ -90,17 +121,85 @@ define <4 x i32> @load_static_array_of_vec_test(i32 %index) #0 {
90
121
ret <4 x i32 > %4
91
122
}
92
123
124
+ define <4 x i32 > @load_static_array_of_vec_from_scalar_gep_test (i32 %index ) #0 {
125
+ ; CHECK-LABEL: define <4 x i32> @load_static_array_of_vec_from_scalar_gep_test(
126
+ ; CHECK-SAME: i32 [[INDEX:%.*]]) #[[ATTR0]] {
127
+ ; CHECK-NEXT: [[TMP1:%.*]] = mul i32 [[INDEX]], 4
128
+ ; CHECK-NEXT: [[TMP2:%.*]] = mul i32 [[TMP1]], 1
129
+ ; CHECK-NEXT: [[TMP3:%.*]] = add i32 0, [[TMP2]]
130
+ ; CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP3]]
131
+ ; CHECK-NEXT: [[DOTI0:%.*]] = load i32, ptr [[TMP4]], align 4
132
+ ; CHECK-NEXT: [[TMP5:%.*]] = mul i32 [[TMP1]], 1
133
+ ; CHECK-NEXT: [[TMP6:%.*]] = add i32 1, [[TMP5]]
134
+ ; CHECK-NEXT: [[DOTI14:%.*]] = getelementptr [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP6]]
135
+ ; CHECK-NEXT: [[DOTI11:%.*]] = load i32, ptr [[DOTI14]], align 4
136
+ ; CHECK-NEXT: [[TMP7:%.*]] = mul i32 [[TMP1]], 1
137
+ ; CHECK-NEXT: [[TMP8:%.*]] = add i32 2, [[TMP7]]
138
+ ; CHECK-NEXT: [[DOTI25:%.*]] = getelementptr [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP8]]
139
+ ; CHECK-NEXT: [[DOTI22:%.*]] = load i32, ptr [[DOTI25]], align 4
140
+ ; CHECK-NEXT: [[TMP9:%.*]] = mul i32 [[TMP1]], 1
141
+ ; CHECK-NEXT: [[TMP10:%.*]] = add i32 3, [[TMP9]]
142
+ ; CHECK-NEXT: [[DOTI36:%.*]] = getelementptr [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP10]]
143
+ ; CHECK-NEXT: [[DOTI33:%.*]] = load i32, ptr [[DOTI36]], align 4
144
+ ; CHECK-NEXT: [[DOTUPTO07:%.*]] = insertelement <4 x i32> poison, i32 [[DOTI0]], i32 0
145
+ ; CHECK-NEXT: [[DOTUPTO18:%.*]] = insertelement <4 x i32> [[DOTUPTO07]], i32 [[DOTI11]], i32 1
146
+ ; CHECK-NEXT: [[DOTUPTO29:%.*]] = insertelement <4 x i32> [[DOTUPTO18]], i32 [[DOTI22]], i32 2
147
+ ; CHECK-NEXT: [[TMP11:%.*]] = insertelement <4 x i32> [[DOTUPTO29]], i32 [[DOTI33]], i32 3
148
+ ; CHECK-NEXT: ret <4 x i32> [[TMP11]]
149
+ ;
150
+ %2 = mul i32 %index , 4
151
+ %3 = getelementptr inbounds i32 , ptr @staticArrayOfVecData , i32 %2
152
+ %4 = load <4 x i32 >, <4 x i32 >* %3 , align 4
153
+ ret <4 x i32 > %4
154
+ }
155
+
156
+ define <4 x i32 > @load_static_array_of_vec_from_i8_gep_test (i32 %index ) #0 {
157
+ ; CHECK-LABEL: define <4 x i32> @load_static_array_of_vec_from_i8_gep_test(
158
+ ; CHECK-SAME: i32 [[INDEX:%.*]]) #[[ATTR0]] {
159
+ ; CHECK-NEXT: [[TMP1:%.*]] = mul i32 [[INDEX]], 12
160
+ ; CHECK-NEXT: [[TMP2:%.*]] = mul i32 [[TMP1]], 1
161
+ ; CHECK-NEXT: [[TMP12:%.*]] = lshr i32 [[TMP2]], 2
162
+ ; CHECK-NEXT: [[TMP3:%.*]] = add i32 0, [[TMP12]]
163
+ ; CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP3]]
164
+ ; CHECK-NEXT: [[DOTI0:%.*]] = load i32, ptr [[TMP4]], align 4
165
+ ; CHECK-NEXT: [[TMP5:%.*]] = mul i32 [[TMP1]], 1
166
+ ; CHECK-NEXT: [[TMP14:%.*]] = lshr i32 [[TMP5]], 2
167
+ ; CHECK-NEXT: [[TMP6:%.*]] = add i32 1, [[TMP14]]
168
+ ; CHECK-NEXT: [[DOTI14:%.*]] = getelementptr [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP6]]
169
+ ; CHECK-NEXT: [[DOTI11:%.*]] = load i32, ptr [[DOTI14]], align 4
170
+ ; CHECK-NEXT: [[TMP7:%.*]] = mul i32 [[TMP1]], 1
171
+ ; CHECK-NEXT: [[TMP15:%.*]] = lshr i32 [[TMP7]], 2
172
+ ; CHECK-NEXT: [[TMP8:%.*]] = add i32 2, [[TMP15]]
173
+ ; CHECK-NEXT: [[DOTI25:%.*]] = getelementptr [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP8]]
174
+ ; CHECK-NEXT: [[DOTI22:%.*]] = load i32, ptr [[DOTI25]], align 4
175
+ ; CHECK-NEXT: [[TMP9:%.*]] = mul i32 [[TMP1]], 1
176
+ ; CHECK-NEXT: [[TMP13:%.*]] = lshr i32 [[TMP9]], 2
177
+ ; CHECK-NEXT: [[TMP10:%.*]] = add i32 3, [[TMP13]]
178
+ ; CHECK-NEXT: [[DOTI36:%.*]] = getelementptr [12 x i32], ptr @staticArrayOfVecData.scalarized.1dim, i32 0, i32 [[TMP10]]
179
+ ; CHECK-NEXT: [[DOTI33:%.*]] = load i32, ptr [[DOTI36]], align 4
180
+ ; CHECK-NEXT: [[DOTUPTO07:%.*]] = insertelement <4 x i32> poison, i32 [[DOTI0]], i32 0
181
+ ; CHECK-NEXT: [[DOTUPTO18:%.*]] = insertelement <4 x i32> [[DOTUPTO07]], i32 [[DOTI11]], i32 1
182
+ ; CHECK-NEXT: [[DOTUPTO29:%.*]] = insertelement <4 x i32> [[DOTUPTO18]], i32 [[DOTI22]], i32 2
183
+ ; CHECK-NEXT: [[TMP11:%.*]] = insertelement <4 x i32> [[DOTUPTO29]], i32 [[DOTI33]], i32 3
184
+ ; CHECK-NEXT: ret <4 x i32> [[TMP11]]
185
+ ;
186
+ %2 = mul i32 %index , 12
187
+ %3 = getelementptr inbounds i8 , ptr @staticArrayOfVecData , i32 %2
188
+ %4 = load <4 x i32 >, <4 x i32 >* %3 , align 4
189
+ ret <4 x i32 > %4
190
+ }
191
+
93
192
define <4 x i32 > @multid_load_test () #0 {
94
193
; CHECK-LABEL: define <4 x i32> @multid_load_test(
95
194
; CHECK-SAME: ) #[[ATTR0]] {
96
195
; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, align 4
97
- ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 1), align 4
98
- ; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 2), align 4
99
- ; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 3), align 4
196
+ ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(3) getelementptr ([36 x i32] , ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 0 , i32 1), align 4
197
+ ; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr addrspace(3) getelementptr ([36 x i32] , ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 0 , i32 2), align 4
198
+ ; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr addrspace(3) getelementptr ([36 x i32] , ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 0 , i32 3), align 4
100
199
; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr addrspace(3) getelementptr inbounds ([36 x i32], ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 0, i32 16), align 4
101
- ; CHECK-NEXT: [[DOTI13:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) getelementptr inbounds ( [36 x i32], ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 0, i32 16), i32 1 ), align 4
102
- ; CHECK-NEXT: [[DOTI25:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) getelementptr inbounds ( [36 x i32], ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 0, i32 16), i32 2 ), align 4
103
- ; CHECK-NEXT: [[DOTI37:%.*]] = load i32, ptr addrspace(3) getelementptr (i32, ptr addrspace(3) getelementptr inbounds ( [36 x i32], ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 0, i32 16), i32 3 ), align 4
200
+ ; CHECK-NEXT: [[DOTI13:%.*]] = load i32, ptr addrspace(3) getelementptr ([36 x i32], ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 0, i32 17 ), align 4
201
+ ; CHECK-NEXT: [[DOTI25:%.*]] = load i32, ptr addrspace(3) getelementptr ([36 x i32], ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 0, i32 18 ), align 4
202
+ ; CHECK-NEXT: [[DOTI37:%.*]] = load i32, ptr addrspace(3) getelementptr ([36 x i32], ptr addrspace(3) @groupshared2dArrayofVectors.scalarized.1dim, i32 0, i32 19 ), align 4
104
203
; CHECK-NEXT: [[DOTI08:%.*]] = add i32 [[TMP1]], [[TMP5]]
105
204
; CHECK-NEXT: [[DOTI19:%.*]] = add i32 [[TMP2]], [[DOTI13]]
106
205
; CHECK-NEXT: [[DOTI210:%.*]] = add i32 [[TMP3]], [[DOTI25]]
0 commit comments