mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-25 05:34:59 +00:00
ea912da38b
Added support for sendmsg(MSG[, OP[, STREAM_ID]]) syntax in s_sendmsg and s_sendmsghalt instructions. The syntax matches the SP3 assembler/disassembler rules. That is why implicit inputs (like M0 and EXEC) are not printed to disassembly output anymore. sendmsg(...) allows only known message types and attributes, even if literals are used instead of symbolic names. However, raw literal (without "sendmsg") still can be used, and that allows for any 16-bit value. Tests updated/added. Differential Revision: http://reviews.llvm.org/D19596 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@268762 91177308-0d34-0410-b5e6-96231b3b80d8
21 lines
630 B
LLVM
21 lines
630 B
LLVM
;RUN: llc < %s -march=amdgcn -mcpu=verde -verify-machineinstrs | FileCheck --check-prefix=SI --check-prefix=BOTH %s
|
|
;RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs | FileCheck --check-prefix=VI --check-prefix=BOTH %s
|
|
|
|
; BOTH-LABEL: {{^}}main:
|
|
; BOTH: s_mov_b32 m0, s0
|
|
; VI-NEXT: s_nop 0
|
|
; BOTH-NEXT: sendmsg(MSG_GS_DONE, GS_OP_NOP)
|
|
; BOTH-NEXT: s_endpgm
|
|
|
|
define amdgpu_gs void @main(i32 inreg %a) #0 {
|
|
main_body:
|
|
call void @llvm.SI.sendmsg(i32 3, i32 %a)
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @llvm.SI.sendmsg(i32, i32) #1
|
|
|
|
attributes #0 = { "unsafe-fp-math"="true" }
|
|
attributes #1 = { nounwind }
|