@@ -1172,53 +1172,86 @@ define void @void_func_sret_struct_i8_i32({ i8, i32 } addrspace(5)* sret({ i8, i
1172
1172
1173
1173
define <33 x i32 > @v33i32_func_void () #0 {
1174
1174
; CHECK-LABEL: name: v33i32_func_void
1175
- ; CHECK: bb.0:
1176
- ; CHECK: successors: %bb.1(0x80000000)
1177
- ; CHECK: liveins: $sgpr30_sgpr31
1178
- ; CHECK: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1179
- ; CHECK: [[DEF:%[0-9]+]]:_(p4) = G_IMPLICIT_DEF
1180
1175
; CHECK: bb.1 (%ir-block.0):
1176
+ ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31
1177
+ ; CHECK: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
1178
+ ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1179
+ ; CHECK: [[DEF:%[0-9]+]]:_(p4) = G_IMPLICIT_DEF
1181
1180
; CHECK: [[LOAD:%[0-9]+]]:_(p1) = G_LOAD [[DEF]](p4) :: (volatile load 8 from `<33 x i32> addrspace(1)* addrspace(4)* undef`, addrspace 4)
1182
1181
; CHECK: [[LOAD1:%[0-9]+]]:_(<33 x s32>) = G_LOAD [[LOAD]](p1) :: (load 132 from %ir.ptr, align 256, addrspace 1)
1183
- ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32), [[UV32:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<33 x s32>)
1182
+ ; CHECK: G_STORE [[LOAD1]](<33 x s32>), [[COPY]](p5) :: (store 132, align 256, addrspace 5)
1183
+ ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
1184
+ ; CHECK: S_SETPC_B64_return [[COPY2]]
1184
1185
%ptr = load volatile <33 x i32 > addrspace (1 )*, <33 x i32 > addrspace (1 )* addrspace (4 )* undef
1185
1186
%val = load <33 x i32 >, <33 x i32 > addrspace (1 )* %ptr
1186
1187
ret <33 x i32 > %val
1187
1188
}
1188
1189
1190
+ define <33 x i32 > @v33i32_func_v33i32_i32 (<33 x i32 > addrspace (1 )* %p , i32 %idx ) #0 {
1191
+ ; CHECK-LABEL: name: v33i32_func_v33i32_i32
1192
+ ; CHECK: bb.1 (%ir-block.0):
1193
+ ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr30_sgpr31
1194
+ ; CHECK: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
1195
+ ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1196
+ ; CHECK: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2
1197
+ ; CHECK: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3
1198
+ ; CHECK: [[COPY4:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1199
+ ; CHECK: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY1]](s32), [[COPY2]](s32)
1200
+ ; CHECK: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[COPY3]](s32)
1201
+ ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 256
1202
+ ; CHECK: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[SEXT]], [[C]]
1203
+ ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[MV]], [[MUL]](s64)
1204
+ ; CHECK: [[COPY5:%[0-9]+]]:_(p1) = COPY [[PTR_ADD]](p1)
1205
+ ; CHECK: [[LOAD:%[0-9]+]]:_(<33 x s32>) = G_LOAD [[COPY5]](p1) :: (load 132 from %ir.gep, align 256, addrspace 1)
1206
+ ; CHECK: G_STORE [[LOAD]](<33 x s32>), [[COPY]](p5) :: (store 132, align 256, addrspace 5)
1207
+ ; CHECK: [[COPY6:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY4]]
1208
+ ; CHECK: S_SETPC_B64_return [[COPY6]]
1209
+ %gep = getelementptr inbounds <33 x i32 >, <33 x i32 > addrspace (1 )* %p , i32 %idx
1210
+ %val = load <33 x i32 >, <33 x i32 > addrspace (1 )* %gep
1211
+ ret <33 x i32 > %val
1212
+ }
1213
+
1189
1214
define { <32 x i32 >, i32 } @struct_v32i32_i32_func_void () #0 {
1190
1215
; CHECK-LABEL: name: struct_v32i32_i32_func_void
1191
- ; CHECK: bb.0:
1192
- ; CHECK: successors: %bb.1(0x80000000)
1193
- ; CHECK: liveins: $sgpr30_sgpr31
1194
- ; CHECK: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1195
- ; CHECK: [[DEF:%[0-9]+]]:_(p4) = G_IMPLICIT_DEF
1196
1216
; CHECK: bb.1 (%ir-block.0):
1217
+ ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31
1218
+ ; CHECK: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
1219
+ ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1220
+ ; CHECK: [[DEF:%[0-9]+]]:_(p4) = G_IMPLICIT_DEF
1197
1221
; CHECK: [[LOAD:%[0-9]+]]:_(p1) = G_LOAD [[DEF]](p4) :: (volatile load 8 from `{ <32 x i32>, i32 } addrspace(1)* addrspace(4)* undef`, addrspace 4)
1198
1222
; CHECK: [[LOAD1:%[0-9]+]]:_(<32 x s32>) = G_LOAD [[LOAD]](p1) :: (load 128 from %ir.ptr, addrspace 1)
1199
1223
; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 128
1200
1224
; CHECK: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[LOAD]], [[C]](s64)
1201
1225
; CHECK: [[LOAD2:%[0-9]+]]:_(s32) = G_LOAD [[PTR_ADD]](p1) :: (load 4 from %ir.ptr + 128, align 128, addrspace 1)
1202
- ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD1]](<32 x s32>)
1226
+ ; CHECK: G_STORE [[LOAD1]](<32 x s32>), [[COPY]](p5) :: (store 128, addrspace 5)
1227
+ ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 128
1228
+ ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p5) = G_PTR_ADD [[COPY]], [[C1]](s32)
1229
+ ; CHECK: G_STORE [[LOAD2]](s32), [[PTR_ADD1]](p5) :: (store 4, align 128, addrspace 5)
1230
+ ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
1231
+ ; CHECK: S_SETPC_B64_return [[COPY2]]
1203
1232
%ptr = load volatile { <32 x i32 >, i32 } addrspace (1 )*, { <32 x i32 >, i32 } addrspace (1 )* addrspace (4 )* undef
1204
1233
%val = load { <32 x i32 >, i32 }, { <32 x i32 >, i32 } addrspace (1 )* %ptr
1205
1234
ret { <32 x i32 >, i32 }%val
1206
1235
}
1207
1236
1208
1237
define { i32 , <32 x i32 > } @struct_i32_v32i32_func_void () #0 {
1209
1238
; CHECK-LABEL: name: struct_i32_v32i32_func_void
1210
- ; CHECK: bb.0:
1211
- ; CHECK: successors: %bb.1(0x80000000)
1212
- ; CHECK: liveins: $sgpr30_sgpr31
1213
- ; CHECK: [[COPY:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1214
- ; CHECK: [[DEF:%[0-9]+]]:_(p4) = G_IMPLICIT_DEF
1215
1239
; CHECK: bb.1 (%ir-block.0):
1240
+ ; CHECK: liveins: $vgpr0, $sgpr30_sgpr31
1241
+ ; CHECK: [[COPY:%[0-9]+]]:_(p5) = COPY $vgpr0
1242
+ ; CHECK: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr30_sgpr31
1243
+ ; CHECK: [[DEF:%[0-9]+]]:_(p4) = G_IMPLICIT_DEF
1216
1244
; CHECK: [[LOAD:%[0-9]+]]:_(p1) = G_LOAD [[DEF]](p4) :: (volatile load 8 from `{ i32, <32 x i32> } addrspace(1)* addrspace(4)* undef`, addrspace 4)
1217
1245
; CHECK: [[LOAD1:%[0-9]+]]:_(s32) = G_LOAD [[LOAD]](p1) :: (load 4 from %ir.ptr, align 128, addrspace 1)
1218
1246
; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 128
1219
1247
; CHECK: [[PTR_ADD:%[0-9]+]]:_(p1) = G_PTR_ADD [[LOAD]], [[C]](s64)
1220
1248
; CHECK: [[LOAD2:%[0-9]+]]:_(<32 x s32>) = G_LOAD [[PTR_ADD]](p1) :: (load 128 from %ir.ptr + 128, addrspace 1)
1221
- ; CHECK: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32), [[UV8:%[0-9]+]]:_(s32), [[UV9:%[0-9]+]]:_(s32), [[UV10:%[0-9]+]]:_(s32), [[UV11:%[0-9]+]]:_(s32), [[UV12:%[0-9]+]]:_(s32), [[UV13:%[0-9]+]]:_(s32), [[UV14:%[0-9]+]]:_(s32), [[UV15:%[0-9]+]]:_(s32), [[UV16:%[0-9]+]]:_(s32), [[UV17:%[0-9]+]]:_(s32), [[UV18:%[0-9]+]]:_(s32), [[UV19:%[0-9]+]]:_(s32), [[UV20:%[0-9]+]]:_(s32), [[UV21:%[0-9]+]]:_(s32), [[UV22:%[0-9]+]]:_(s32), [[UV23:%[0-9]+]]:_(s32), [[UV24:%[0-9]+]]:_(s32), [[UV25:%[0-9]+]]:_(s32), [[UV26:%[0-9]+]]:_(s32), [[UV27:%[0-9]+]]:_(s32), [[UV28:%[0-9]+]]:_(s32), [[UV29:%[0-9]+]]:_(s32), [[UV30:%[0-9]+]]:_(s32), [[UV31:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD2]](<32 x s32>)
1249
+ ; CHECK: G_STORE [[LOAD1]](s32), [[COPY]](p5) :: (store 4, align 128, addrspace 5)
1250
+ ; CHECK: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 128
1251
+ ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p5) = G_PTR_ADD [[COPY]], [[C1]](s32)
1252
+ ; CHECK: G_STORE [[LOAD2]](<32 x s32>), [[PTR_ADD1]](p5) :: (store 128, addrspace 5)
1253
+ ; CHECK: [[COPY2:%[0-9]+]]:ccr_sgpr_64 = COPY [[COPY1]]
1254
+ ; CHECK: S_SETPC_B64_return [[COPY2]]
1222
1255
%ptr = load volatile { i32 , <32 x i32 > } addrspace (1 )*, { i32 , <32 x i32 > } addrspace (1 )* addrspace (4 )* undef
1223
1256
%val = load { i32 , <32 x i32 > }, { i32 , <32 x i32 > } addrspace (1 )* %ptr
1224
1257
ret { i32 , <32 x i32 > }%val
0 commit comments