1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2
- ; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx900 < %s | FileCheck -check-prefix=SDAG %s
3
- ; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx900 -global-isel=1 < %s | FileCheck -check-prefix=GISEL %s
2
+ ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -check-prefix=SDAG %s
3
+ ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -global-isel=1 < %s | FileCheck -check-prefix=GISEL %s
4
4
5
5
; Note: if you're adding tests here, also add them to
6
6
; lower-buffer-fat-pointers-contents-legalization.ll to verify the IR produced by
@@ -4260,8 +4260,8 @@ define void @store_i256(i256 %data, ptr addrspace(8) inreg %buf) {
4260
4260
4261
4261
;;; Non-byte-sized scalars. Require zero-extension.
4262
4262
4263
- define i7 @load_i4 (ptr addrspace (8 ) inreg %buf ) {
4264
- ; SDAG-LABEL: load_i4 :
4263
+ define i7 @load_i7 (ptr addrspace (8 ) inreg %buf ) {
4264
+ ; SDAG-LABEL: load_i7 :
4265
4265
; SDAG: ; %bb.0:
4266
4266
; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4267
4267
; SDAG-NEXT: s_mov_b32 s11, s17
@@ -4272,7 +4272,7 @@ define i7 @load_i4(ptr addrspace(8) inreg %buf) {
4272
4272
; SDAG-NEXT: s_waitcnt vmcnt(0)
4273
4273
; SDAG-NEXT: s_setpc_b64 s[30:31]
4274
4274
;
4275
- ; GISEL-LABEL: load_i4 :
4275
+ ; GISEL-LABEL: load_i7 :
4276
4276
; GISEL: ; %bb.0:
4277
4277
; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4278
4278
; GISEL-NEXT: s_mov_b32 s4, s6
@@ -4287,8 +4287,8 @@ define i7 @load_i4(ptr addrspace(8) inreg %buf) {
4287
4287
ret i7 %ret
4288
4288
}
4289
4289
4290
- define void @store_i4 (i7 %data , ptr addrspace (8 ) inreg %buf ) {
4291
- ; SDAG-LABEL: store_i4 :
4290
+ define void @store_i7 (i7 %data , ptr addrspace (8 ) inreg %buf ) {
4291
+ ; SDAG-LABEL: store_i7 :
4292
4292
; SDAG: ; %bb.0:
4293
4293
; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4294
4294
; SDAG-NEXT: s_mov_b32 s11, s17
@@ -4300,7 +4300,7 @@ define void @store_i4(i7 %data, ptr addrspace(8) inreg %buf) {
4300
4300
; SDAG-NEXT: s_waitcnt vmcnt(0)
4301
4301
; SDAG-NEXT: s_setpc_b64 s[30:31]
4302
4302
;
4303
- ; GISEL-LABEL: store_i4 :
4303
+ ; GISEL-LABEL: store_i7 :
4304
4304
; GISEL: ; %bb.0:
4305
4305
; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4306
4306
; GISEL-NEXT: s_mov_b32 s4, s6
@@ -4316,6 +4316,63 @@ define void @store_i4(i7 %data, ptr addrspace(8) inreg %buf) {
4316
4316
ret void
4317
4317
}
4318
4318
4319
+ define i4 @load_i4 (ptr addrspace (8 ) inreg %buf ) {
4320
+ ; SDAG-LABEL: load_i4:
4321
+ ; SDAG: ; %bb.0:
4322
+ ; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4323
+ ; SDAG-NEXT: s_mov_b32 s11, s17
4324
+ ; SDAG-NEXT: s_mov_b32 s10, s16
4325
+ ; SDAG-NEXT: s_mov_b32 s9, s7
4326
+ ; SDAG-NEXT: s_mov_b32 s8, s6
4327
+ ; SDAG-NEXT: buffer_load_ubyte v0, off, s[8:11], 0
4328
+ ; SDAG-NEXT: s_waitcnt vmcnt(0)
4329
+ ; SDAG-NEXT: s_setpc_b64 s[30:31]
4330
+ ;
4331
+ ; GISEL-LABEL: load_i4:
4332
+ ; GISEL: ; %bb.0:
4333
+ ; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4334
+ ; GISEL-NEXT: s_mov_b32 s4, s6
4335
+ ; GISEL-NEXT: s_mov_b32 s5, s7
4336
+ ; GISEL-NEXT: s_mov_b32 s6, s16
4337
+ ; GISEL-NEXT: s_mov_b32 s7, s17
4338
+ ; GISEL-NEXT: buffer_load_ubyte v0, off, s[4:7], 0
4339
+ ; GISEL-NEXT: s_waitcnt vmcnt(0)
4340
+ ; GISEL-NEXT: s_setpc_b64 s[30:31]
4341
+ %p = addrspacecast ptr addrspace (8 ) %buf to ptr addrspace (7 )
4342
+ %ret = load i4 , ptr addrspace (7 ) %p
4343
+ ret i4 %ret
4344
+ }
4345
+
4346
+ define void @store_i4 (i4 %data , ptr addrspace (8 ) inreg %buf ) {
4347
+ ; SDAG-LABEL: store_i4:
4348
+ ; SDAG: ; %bb.0:
4349
+ ; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4350
+ ; SDAG-NEXT: s_mov_b32 s11, s17
4351
+ ; SDAG-NEXT: s_mov_b32 s10, s16
4352
+ ; SDAG-NEXT: s_mov_b32 s9, s7
4353
+ ; SDAG-NEXT: s_mov_b32 s8, s6
4354
+ ; SDAG-NEXT: v_and_b32_e32 v0, 15, v0
4355
+ ; SDAG-NEXT: buffer_store_byte v0, off, s[8:11], 0
4356
+ ; SDAG-NEXT: s_waitcnt vmcnt(0)
4357
+ ; SDAG-NEXT: s_setpc_b64 s[30:31]
4358
+ ;
4359
+ ; GISEL-LABEL: store_i4:
4360
+ ; GISEL: ; %bb.0:
4361
+ ; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
4362
+ ; GISEL-NEXT: s_mov_b32 s4, s6
4363
+ ; GISEL-NEXT: s_mov_b32 s5, s7
4364
+ ; GISEL-NEXT: s_mov_b32 s6, s16
4365
+ ; GISEL-NEXT: s_mov_b32 s7, s17
4366
+ ; GISEL-NEXT: v_and_b32_e32 v0, 15, v0
4367
+ ; GISEL-NEXT: buffer_store_byte v0, off, s[4:7], 0
4368
+ ; GISEL-NEXT: s_waitcnt vmcnt(0)
4369
+ ; GISEL-NEXT: s_setpc_b64 s[30:31]
4370
+ %p = addrspacecast ptr addrspace (8 ) %buf to ptr addrspace (7 )
4371
+ store i4 %data , ptr addrspace (7 ) %p
4372
+ ret void
4373
+ }
4374
+
4375
+
4319
4376
;;; Byte-sized vectors of i4. Require casts.
4320
4377
4321
4378
define <2 x i4 > @load_v2i4 (ptr addrspace (8 ) inreg %buf ) {
0 commit comments