1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/test/MC/AMDGPU/smem-err.s
Matt Arsenault 30967b5c23 AMDGPU: Disallow exec as SMEM instruction operand
This is not in the list of valid inputs for the encoding.
When spilling, copies from exec can be folded directly
into the spill instruction which results in broken
stores.

This only fixes the operand constraints, more codegen
work is required to avoid emitting the invalid
spills.

This sort of breaks the dbg.value test. Because the
register class of the s_load_dwordx2 changes, there
is a copy to SReg_64, and the copy is the operand
of dbg_value. The copy is later dead, and removed
from the dbg_value.

llvm-svn: 288191
2016-11-29 19:39:53 +00:00

56 lines
1.6 KiB
ArmAsm

// RUN: not llvm-mc -arch=amdgcn -mcpu=tonga %s 2>&1 | FileCheck -check-prefix=NOVI %s
s_memtime exec
// NOVI: :11: error: invalid operand for instruction
s_memrealtime exec
// NOVI: :15: error: invalid operand for instruction
s_store_dword m0, s[2:3], 0x0
// NOVI: :15: error: invalid operand for instruction
s_store_dword exec_lo, s[2:3], 0x0
// NOVI: :15: error: invalid operand for instruction
s_store_dword exec_hi, s[2:3], 0x0
// NOVI: :15: error: invalid operand for instruction
s_store_dwordx2 exec, s[2:3], 0x0
// NOVI: :17: error: invalid operand for instruction
s_buffer_store_dword m0, s[0:3], 0x0
// NOVI: :22: error: invalid operand for instruction
s_buffer_store_dword exec_lo, s[0:3], 0x0
// NOVI: :22: error: invalid operand for instruction
s_buffer_store_dword exec_hi, s[0:3], 0x0
// NOVI: :22: error: invalid operand for instruction
s_buffer_store_dwordx2 exec, s[0:3], 0x0
// NOVI: :24: error: invalid operand for instruction
s_load_dword m0, s[0:1], s4
// NOVI: :14: error: invalid operand for instruction
s_load_dword exec_lo, s[0:1], s4
// NOVI: :14: error: invalid operand for instruction
s_load_dword exec_hi, s[0:1], s4
// NOVI: :14: error: invalid operand for instruction
s_load_dwordx2 exec, s[0:1], s4
// NOVI: :16: error: invalid operand for instruction
s_buffer_load_dword m0, s[0:3], s4
// NOVI: :21: error: invalid operand for instruction
s_buffer_load_dword exec_lo, s[0:3], s4
// NOVI: :21: error: invalid operand for instruction
s_buffer_load_dword exec_hi, s[0:3], s4
// NOVI: :21: error: invalid operand for instruction
s_buffer_load_dwordx2 exec, s[0:3], s4
// NOVI: :23: error: invalid operand for instruction