From 0d6185e9ebaadf0780110b724d7f2d0bef419dfb Mon Sep 17 00:00:00 2001 From: Diana Picus Date: Mon, 23 Mar 2026 10:36:14 +0100 Subject: [PATCH] [AMDGPU] Update test to match comment. NFC (#187273) The comment says there shouldn't be any free registers, so update the inline assembly to clobber all non-preserved SGPRs. --- .../test/CodeGen/AMDGPU/callee-frame-setup.ll | 86 +++++++++++++++---- 1 file changed, 68 insertions(+), 18 deletions(-) diff --git a/llvm/test/CodeGen/AMDGPU/callee-frame-setup.ll b/llvm/test/CodeGen/AMDGPU/callee-frame-setup.ll index e7254eb5c346..7a5132c99360 100644 --- a/llvm/test/CodeGen/AMDGPU/callee-frame-setup.ll +++ b/llvm/test/CodeGen/AMDGPU/callee-frame-setup.ll @@ -1,6 +1,6 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 -; RUN: llc -mtriple=amdgcn -mcpu=hawaii < %s | FileCheck -enable-var-scope -check-prefixes=GCN,MUBUF %s -; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -enable-var-scope -check-prefixes=GCN,MUBUF %s +; RUN: llc -mtriple=amdgcn -mcpu=hawaii < %s | FileCheck -enable-var-scope -check-prefixes=GCN,MUBUF,HAWAII %s +; RUN: llc -mtriple=amdgcn -mcpu=gfx900 < %s | FileCheck -enable-var-scope -check-prefixes=GCN,MUBUF,GFX9 %s ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -mattr=+enable-flat-scratch < %s | FileCheck -enable-var-scope -check-prefixes=GCN,FLATSCR %s define void @callee_no_stack() #0 { @@ -1265,37 +1265,87 @@ define void @ipra_call_with_stack() #0 { ; With no free registers, we must spill the FP to memory. define void @callee_need_to_spill_fp_to_memory() #3 { -; MUBUF-LABEL: callee_need_to_spill_fp_to_memory: -; MUBUF: ; %bb.0: -; MUBUF-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) -; MUBUF-NEXT: s_mov_b32 s40, s33 -; MUBUF-NEXT: s_mov_b32 s33, s32 -; MUBUF-NEXT: ;;#ASMSTART -; MUBUF-NEXT: ; clobber nonpreserved SGPRs -; MUBUF-NEXT: ;;#ASMEND -; MUBUF-NEXT: ;;#ASMSTART -; MUBUF-NEXT: ; clobber all VGPRs -; MUBUF-NEXT: ;;#ASMEND -; MUBUF-NEXT: s_mov_b32 s33, s40 -; MUBUF-NEXT: s_setpc_b64 s[30:31] +; HAWAII-LABEL: callee_need_to_spill_fp_to_memory: +; HAWAII: ; %bb.0: +; HAWAII-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) +; HAWAII-NEXT: s_mov_b32 s4, s33 +; HAWAII-NEXT: s_mov_b32 s33, s32 +; HAWAII-NEXT: v_mov_b32_e32 v0, s4 +; HAWAII-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:8 ; 4-byte Folded Spill +; HAWAII-NEXT: v_mov_b32_e32 v0, s76 +; HAWAII-NEXT: buffer_store_dword v0, off, s[0:3], s33 ; 4-byte Folded Spill +; HAWAII-NEXT: v_mov_b32_e32 v0, s77 +; HAWAII-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill +; HAWAII-NEXT: ;;#ASMSTART +; HAWAII-NEXT: ; clobber nonpreserved SGPRs +; HAWAII-NEXT: ;;#ASMEND +; HAWAII-NEXT: ;;#ASMSTART +; HAWAII-NEXT: ; clobber all VGPRs +; HAWAII-NEXT: ;;#ASMEND +; HAWAII-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:8 ; 4-byte Folded Reload +; HAWAII-NEXT: s_addk_i32 s32, 0x400 +; HAWAII-NEXT: s_mov_b32 s32, s33 +; HAWAII-NEXT: s_waitcnt vmcnt(0) +; HAWAII-NEXT: v_readfirstlane_b32 s4, v0 +; HAWAII-NEXT: buffer_load_dword v0, off, s[0:3], s33 ; 4-byte Folded Reload +; HAWAII-NEXT: s_waitcnt vmcnt(0) +; HAWAII-NEXT: v_readfirstlane_b32 s76, v0 +; HAWAII-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload +; HAWAII-NEXT: s_mov_b32 s33, s4 +; HAWAII-NEXT: s_waitcnt vmcnt(0) +; HAWAII-NEXT: v_readfirstlane_b32 s77, v0 +; HAWAII-NEXT: s_setpc_b64 s[30:31] +; +; GFX9-LABEL: callee_need_to_spill_fp_to_memory: +; GFX9: ; %bb.0: +; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) +; GFX9-NEXT: s_mov_b32 s4, s33 +; GFX9-NEXT: s_mov_b32 s33, s32 +; GFX9-NEXT: v_mov_b32_e32 v0, s4 +; GFX9-NEXT: buffer_store_dword v0, off, s[0:3], s33 ; 4-byte Folded Spill +; GFX9-NEXT: ;;#ASMSTART +; GFX9-NEXT: ; clobber nonpreserved SGPRs +; GFX9-NEXT: ;;#ASMEND +; GFX9-NEXT: ;;#ASMSTART +; GFX9-NEXT: ; clobber all VGPRs +; GFX9-NEXT: ;;#ASMEND +; GFX9-NEXT: buffer_load_dword v0, off, s[0:3], s33 ; 4-byte Folded Reload +; GFX9-NEXT: s_addk_i32 s32, 0x200 +; GFX9-NEXT: s_mov_b32 s32, s33 +; GFX9-NEXT: s_waitcnt vmcnt(0) +; GFX9-NEXT: v_readfirstlane_b32 s4, v0 +; GFX9-NEXT: s_mov_b32 s33, s4 +; GFX9-NEXT: s_setpc_b64 s[30:31] ; ; FLATSCR-LABEL: callee_need_to_spill_fp_to_memory: ; FLATSCR: ; %bb.0: ; FLATSCR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; FLATSCR-NEXT: s_mov_b32 s0, s33 ; FLATSCR-NEXT: s_mov_b32 s33, s32 +; FLATSCR-NEXT: v_mov_b32_e32 v0, s0 +; FLATSCR-NEXT: scratch_store_dword off, v0, s33 ; 4-byte Folded Spill ; FLATSCR-NEXT: ;;#ASMSTART ; FLATSCR-NEXT: ; clobber nonpreserved SGPRs ; FLATSCR-NEXT: ;;#ASMEND ; FLATSCR-NEXT: ;;#ASMSTART ; FLATSCR-NEXT: ; clobber all VGPRs ; FLATSCR-NEXT: ;;#ASMEND +; FLATSCR-NEXT: scratch_load_dword v0, off, s33 ; 4-byte Folded Reload +; FLATSCR-NEXT: s_add_i32 s32, s32, 8 +; FLATSCR-NEXT: s_mov_b32 s32, s33 +; FLATSCR-NEXT: s_waitcnt vmcnt(0) +; FLATSCR-NEXT: v_readfirstlane_b32 s0, v0 ; FLATSCR-NEXT: s_mov_b32 s33, s0 ; FLATSCR-NEXT: s_setpc_b64 s[30:31] call void asm sideeffect "; clobber nonpreserved SGPRs", - "~{s4},~{s5},~{s6},~{s7},~{s8},~{s9} - ,~{s10},~{s11},~{s12},~{s13},~{s14},~{s15},~{s16},~{s17},~{s18},~{s19} - ,~{s20},~{s21},~{s22},~{s23},~{s24},~{s25},~{s26},~{s27},~{s28},~{s29} + "~{s0},~{s1},~{s2},~{s3},~{s4},~{s5},~{s6},~{s7} + ,~{s8},~{s9},~{s10},~{s11},~{s12},~{s13},~{s14},~{s15} + ,~{s16},~{s17},~{s18},~{s19},~{s20},~{s21},~{s22},~{s23} + ,~{s24},~{s25},~{s26},~{s27},~{s28},~{s29} + ,~{s40},~{s41},~{s42},~{s43},~{s44},~{s45},~{s46},~{s47} + ,~{s56},~{s57},~{s58},~{s59},~{s60},~{s61},~{s62},~{s63} + ,~{s72},~{s73},~{s74},~{s75},~{s76},~{s77},~{s78},~{s79} + ,~{s88},~{s89},~{s90},~{s91},~{s92},~{s93},~{s94},~{s95} ,~{vcc}"() call void asm sideeffect "; clobber all VGPRs",