mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-07 12:30:44 +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
25 lines
767 B
LLVM
25 lines
767 B
LLVM
;RUN: llc < %s -march=amdgcn -mcpu=verde -verify-machineinstrs | FileCheck %s
|
|
;RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs | FileCheck %s
|
|
|
|
; CHECK-LABEL: {{^}}main:
|
|
; CHECK: s_mov_b32 m0, 0
|
|
; CHECK-NOT: s_mov_b32 m0
|
|
; CHECK: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT, 0)
|
|
; CHECK: s_sendmsg sendmsg(MSG_GS, GS_OP_CUT, 1)
|
|
; CHECK: s_sendmsg sendmsg(MSG_GS, GS_OP_EMIT_CUT, 2)
|
|
; CHECK: s_sendmsg sendmsg(MSG_GS_DONE, GS_OP_NOP)
|
|
|
|
define void @main() {
|
|
main_body:
|
|
call void @llvm.SI.sendmsg(i32 34, i32 0);
|
|
call void @llvm.SI.sendmsg(i32 274, i32 0);
|
|
call void @llvm.SI.sendmsg(i32 562, i32 0);
|
|
call void @llvm.SI.sendmsg(i32 3, i32 0);
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs: nounwind
|
|
declare void @llvm.SI.sendmsg(i32, i32) #0
|
|
|
|
attributes #0 = { nounwind }
|