11; 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
44
55; Note: if you're adding tests here, also add them to
66; 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) {
42604260
42614261;;; Non-byte-sized scalars. Require zero-extension.
42624262
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 :
42654265; SDAG: ; %bb.0:
42664266; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42674267; SDAG-NEXT: s_mov_b32 s11, s17
@@ -4272,7 +4272,7 @@ define i7 @load_i4(ptr addrspace(8) inreg %buf) {
42724272; SDAG-NEXT: s_waitcnt vmcnt(0)
42734273; SDAG-NEXT: s_setpc_b64 s[30:31]
42744274;
4275- ; GISEL-LABEL: load_i4 :
4275+ ; GISEL-LABEL: load_i7 :
42764276; GISEL: ; %bb.0:
42774277; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42784278; GISEL-NEXT: s_mov_b32 s4, s6
@@ -4287,8 +4287,8 @@ define i7 @load_i4(ptr addrspace(8) inreg %buf) {
42874287 ret i7 %ret
42884288}
42894289
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 :
42924292; SDAG: ; %bb.0:
42934293; SDAG-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42944294; SDAG-NEXT: s_mov_b32 s11, s17
@@ -4300,7 +4300,7 @@ define void @store_i4(i7 %data, ptr addrspace(8) inreg %buf) {
43004300; SDAG-NEXT: s_waitcnt vmcnt(0)
43014301; SDAG-NEXT: s_setpc_b64 s[30:31]
43024302;
4303- ; GISEL-LABEL: store_i4 :
4303+ ; GISEL-LABEL: store_i7 :
43044304; GISEL: ; %bb.0:
43054305; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
43064306; GISEL-NEXT: s_mov_b32 s4, s6
@@ -4316,6 +4316,63 @@ define void @store_i4(i7 %data, ptr addrspace(8) inreg %buf) {
43164316 ret void
43174317}
43184318
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+
43194376;;; Byte-sized vectors of i4. Require casts.
43204377
43214378define <2 x i4 > @load_v2i4 (ptr addrspace (8 ) inreg %buf ) {
0 commit comments