Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 36 additions & 35 deletions llvm/test/MC/AMDGPU/gfx12_asm_sopp.s
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: llvm-mc -triple=amdgcn -show-encoding -mcpu=gfx1200 %s | FileCheck --check-prefix=GFX12 %s
// RUN: llvm-mc -triple=amdgcn -show-encoding -mcpu=gfx1200 %s | FileCheck --check-prefixes=GFX12,GFX1200 %s
// RUN: not llvm-mc -triple=amdgcn -show-encoding -mcpu=gfx1250 %s | FileCheck --check-prefix=GFX12 %s

s_wait_loadcnt 0x1234
// GFX12: encoding: [0x34,0x12,0xc0,0xbf]
Expand All @@ -13,22 +14,22 @@ s_wait_storecnt 0xc1d1
// GFX12: encoding: [0xd1,0xc1,0xc1,0xbf]

s_wait_samplecnt 0x1234
// GFX12: encoding: [0x34,0x12,0xc2,0xbf]
// GFX1200: encoding: [0x34,0x12,0xc2,0xbf]

s_wait_samplecnt 0xc1d1
// GFX12: encoding: [0xd1,0xc1,0xc2,0xbf]
// GFX1200: encoding: [0xd1,0xc1,0xc2,0xbf]

s_wait_bvhcnt 0x1234
// GFX12: encoding: [0x34,0x12,0xc3,0xbf]
// GFX1200: encoding: [0x34,0x12,0xc3,0xbf]

s_wait_bvhcnt 0xc1d1
// GFX12: encoding: [0xd1,0xc1,0xc3,0xbf]
// GFX1200: encoding: [0xd1,0xc1,0xc3,0xbf]

s_wait_expcnt 0x1234
// GFX12: encoding: [0x34,0x12,0xc4,0xbf]
// GFX1200: encoding: [0x34,0x12,0xc4,0xbf]

s_wait_expcnt 0xc1d1
// GFX12: encoding: [0xd1,0xc1,0xc4,0xbf]
// GFX1200: encoding: [0xd1,0xc1,0xc4,0xbf]

s_wait_dscnt 0x1234
// GFX12: encoding: [0x34,0x12,0xc6,0xbf]
Expand Down Expand Up @@ -80,73 +81,73 @@ s_barrier_wait 1
//===----------------------------------------------------------------------===//

s_waitcnt 0
// GFX12: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]

s_waitcnt 0x1234
// GFX12: s_waitcnt vmcnt(4) expcnt(4) lgkmcnt(35) ; encoding: [0x34,0x12,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(4) expcnt(4) lgkmcnt(35) ; encoding: [0x34,0x12,0x89,0xbf]

s_waitcnt vmcnt(0) & expcnt(0) & lgkmcnt(0)
// GFX12: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]

s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
// GFX12: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]

s_waitcnt vmcnt(0), expcnt(0), lgkmcnt(0)
// GFX12: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; encoding: [0x00,0x00,0x89,0xbf]

s_waitcnt vmcnt(1)
// GFX12: s_waitcnt vmcnt(1) ; encoding: [0xf7,0x07,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(1) ; encoding: [0xf7,0x07,0x89,0xbf]

s_waitcnt vmcnt(9)
// GFX12: s_waitcnt vmcnt(9) ; encoding: [0xf7,0x27,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(9) ; encoding: [0xf7,0x27,0x89,0xbf]

s_waitcnt expcnt(2)
// GFX12: s_waitcnt expcnt(2) ; encoding: [0xf2,0xff,0x89,0xbf]
// GFX1200: s_waitcnt expcnt(2) ; encoding: [0xf2,0xff,0x89,0xbf]

s_waitcnt lgkmcnt(3)
// GFX12: s_waitcnt lgkmcnt(3) ; encoding: [0x37,0xfc,0x89,0xbf]
// GFX1200: s_waitcnt lgkmcnt(3) ; encoding: [0x37,0xfc,0x89,0xbf]

s_waitcnt lgkmcnt(9)
// GFX12: s_waitcnt lgkmcnt(9) ; encoding: [0x97,0xfc,0x89,0xbf]
// GFX1200: s_waitcnt lgkmcnt(9) ; encoding: [0x97,0xfc,0x89,0xbf]

s_waitcnt vmcnt(0), expcnt(0)
// GFX12: s_waitcnt vmcnt(0) expcnt(0) ; encoding: [0xf0,0x03,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(0) expcnt(0) ; encoding: [0xf0,0x03,0x89,0xbf]

s_waitcnt vmcnt(15)
// GFX12: s_waitcnt vmcnt(15) ; encoding: [0xf7,0x3f,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(15) ; encoding: [0xf7,0x3f,0x89,0xbf]

s_waitcnt vmcnt(15) expcnt(6)
// GFX12: s_waitcnt vmcnt(15) expcnt(6) ; encoding: [0xf6,0x3f,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(15) expcnt(6) ; encoding: [0xf6,0x3f,0x89,0xbf]

s_waitcnt vmcnt(15) lgkmcnt(14)
// GFX12: s_waitcnt vmcnt(15) lgkmcnt(14) ; encoding: [0xe7,0x3c,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(15) lgkmcnt(14) ; encoding: [0xe7,0x3c,0x89,0xbf]

s_waitcnt vmcnt(15) expcnt(6) lgkmcnt(14)
// GFX12: s_waitcnt vmcnt(15) expcnt(6) lgkmcnt(14) ; encoding: [0xe6,0x3c,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(15) expcnt(6) lgkmcnt(14) ; encoding: [0xe6,0x3c,0x89,0xbf]

s_waitcnt vmcnt(31)
// GFX12: s_waitcnt vmcnt(31) ; encoding: [0xf7,0x7f,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(31) ; encoding: [0xf7,0x7f,0x89,0xbf]

s_waitcnt vmcnt(31) expcnt(6)
// GFX12: s_waitcnt vmcnt(31) expcnt(6) ; encoding: [0xf6,0x7f,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(31) expcnt(6) ; encoding: [0xf6,0x7f,0x89,0xbf]

s_waitcnt vmcnt(31) lgkmcnt(14)
// GFX12: s_waitcnt vmcnt(31) lgkmcnt(14) ; encoding: [0xe7,0x7c,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(31) lgkmcnt(14) ; encoding: [0xe7,0x7c,0x89,0xbf]

s_waitcnt vmcnt(31) expcnt(6) lgkmcnt(14)
// GFX12: s_waitcnt vmcnt(31) expcnt(6) lgkmcnt(14) ; encoding: [0xe6,0x7c,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(31) expcnt(6) lgkmcnt(14) ; encoding: [0xe6,0x7c,0x89,0xbf]

s_waitcnt vmcnt(62)
// GFX12: s_waitcnt vmcnt(62) ; encoding: [0xf7,0xfb,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(62) ; encoding: [0xf7,0xfb,0x89,0xbf]

s_waitcnt vmcnt(62) expcnt(6)
// GFX12: s_waitcnt vmcnt(62) expcnt(6) ; encoding: [0xf6,0xfb,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(62) expcnt(6) ; encoding: [0xf6,0xfb,0x89,0xbf]

s_waitcnt vmcnt(62) lgkmcnt(14)
// GFX12: s_waitcnt vmcnt(62) lgkmcnt(14) ; encoding: [0xe7,0xf8,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(62) lgkmcnt(14) ; encoding: [0xe7,0xf8,0x89,0xbf]

s_waitcnt vmcnt(62) expcnt(6) lgkmcnt(14)
// GFX12: s_waitcnt vmcnt(62) expcnt(6) lgkmcnt(14) ; encoding: [0xe6,0xf8,0x89,0xbf]
// GFX1200: s_waitcnt vmcnt(62) expcnt(6) lgkmcnt(14) ; encoding: [0xe6,0xf8,0x89,0xbf]

//===----------------------------------------------------------------------===//
// s_sendmsg
Expand Down Expand Up @@ -259,13 +260,13 @@ s_cbranch_execnz 0x1234
// GFX12: s_cbranch_execnz 4660 ; encoding: [0x34,0x12,0xa6,0xbf]

s_setkill 0x0
// GFX12: s_setkill 0 ; encoding: [0x00,0x00,0x81,0xbf]
// GFX1200: s_setkill 0 ; encoding: [0x00,0x00,0x81,0xbf]

s_setkill 0x1234
// GFX12: s_setkill 0x1234 ; encoding: [0x34,0x12,0x81,0xbf]
// GFX1200: s_setkill 0x1234 ; encoding: [0x34,0x12,0x81,0xbf]

s_setkill 0xc1d1
// GFX12: s_setkill 0xc1d1 ; encoding: [0xd1,0xc1,0x81,0xbf]
// GFX1200: s_setkill 0xc1d1 ; encoding: [0xd1,0xc1,0x81,0xbf]

s_sethalt 0x0
// GFX12: s_sethalt 0 ; encoding: [0x00,0x00,0x82,0xbf]
Expand Down Expand Up @@ -379,7 +380,7 @@ s_ttracedata_imm 0xc1d1
// GFX12: s_ttracedata_imm 0xc1d1 ; encoding: [0xd1,0xc1,0xbb,0xbf]

s_wait_event 0x3141
// GFX12: s_wait_event 0x3141 ; encoding: [0x41,0x31,0x8b,0xbf]
// GFX1200: s_wait_event 0x3141 ; encoding: [0x41,0x31,0x8b,0xbf]

s_wait_event 0xc1d1
// GFX12: s_wait_event 0xc1d1 ; encoding: [0xd1,0xc1,0x8b,0xbf]
// GFX1200: s_wait_event 0xc1d1 ; encoding: [0xd1,0xc1,0x8b,0xbf]
25 changes: 13 additions & 12 deletions llvm/test/MC/Disassembler/AMDGPU/gfx12_dasm_sopp.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# RUN: llvm-mc -triple=amdgcn -mcpu=gfx1200 -disassemble -show-encoding < %s | FileCheck -strict-whitespace -check-prefixes=GFX12 %s
# RUN: llvm-mc -triple=amdgcn -mcpu=gfx1200 -disassemble -show-encoding < %s | FileCheck -strict-whitespace -check-prefixes=GFX12,GFX1200 %s
# RUN: llvm-mc -triple=amdgcn -mcpu=gfx1250 -disassemble -show-encoding < %s | FileCheck -strict-whitespace -check-prefixes=GFX12 %s
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How does this work without a not? Doesn't the disassembler give an error on the unrecognized gfx1200-only instructions?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Like this:

llvm-mc -arch=amdgcn -mcpu=gfx1250 -mdis <<< 0x34,0x12,0xc4,0xbf
<stdin>:1:1: warning: invalid instruction encoding
0x34,0x12,0xc4,0xbf

But llvm-mc still returns exit code 0.


# GFX12: s_wait_alu depctr_hold_cnt(0) depctr_sa_sdst(0) depctr_va_vdst(0) depctr_va_sdst(0) depctr_va_ssrc(0) depctr_va_vcc(0) depctr_vm_vsrc(0) ; encoding: [0x00,0x00,0x88,0xbf]
0x00,0x00,0x88,0xbf
Expand All @@ -18,22 +19,22 @@
# GFX12: s_wait_storecnt 0xc1d1 ; encoding: [0xd1,0xc1,0xc1,0xbf]
0xd1,0xc1,0xc1,0xbf

# GFX12: s_wait_samplecnt 0x1234 ; encoding: [0x34,0x12,0xc2,0xbf]
# GFX1200: s_wait_samplecnt 0x1234 ; encoding: [0x34,0x12,0xc2,0xbf]
0x34,0x12,0xc2,0xbf

# GFX12: s_wait_samplecnt 0xc1d1 ; encoding: [0xd1,0xc1,0xc2,0xbf]
# GFX1200: s_wait_samplecnt 0xc1d1 ; encoding: [0xd1,0xc1,0xc2,0xbf]
0xd1,0xc1,0xc2,0xbf

# GFX12: s_wait_bvhcnt 0x1234 ; encoding: [0x34,0x12,0xc3,0xbf]
# GFX1200: s_wait_bvhcnt 0x1234 ; encoding: [0x34,0x12,0xc3,0xbf]
0x34,0x12,0xc3,0xbf

# GFX12: s_wait_bvhcnt 0xc1d1 ; encoding: [0xd1,0xc1,0xc3,0xbf]
# GFX1200: s_wait_bvhcnt 0xc1d1 ; encoding: [0xd1,0xc1,0xc3,0xbf]
0xd1,0xc1,0xc3,0xbf

# GFX12: s_wait_expcnt 0x1234 ; encoding: [0x34,0x12,0xc4,0xbf]
# GFX1200: s_wait_expcnt 0x1234 ; encoding: [0x34,0x12,0xc4,0xbf]
0x34,0x12,0xc4,0xbf

# GFX12: s_wait_expcnt 0xc1d1 ; encoding: [0xd1,0xc1,0xc4,0xbf]
# GFX1200: s_wait_expcnt 0xc1d1 ; encoding: [0xd1,0xc1,0xc4,0xbf]
0xd1,0xc1,0xc4,0xbf

# GFX12: s_wait_dscnt 0x1234 ; encoding: [0x34,0x12,0xc6,0xbf]
Expand Down Expand Up @@ -250,13 +251,13 @@
# GFX12: s_sethalt 0xc1d1 ; encoding: [0xd1,0xc1,0x82,0xbf]
0xd1,0xc1,0x82,0xbf

# GFX12: s_setkill 0 ; encoding: [0x00,0x00,0x81,0xbf]
# GFX1200: s_setkill 0 ; encoding: [0x00,0x00,0x81,0xbf]
0x00,0x00,0x81,0xbf

# GFX12: s_setkill 0x1234 ; encoding: [0x34,0x12,0x81,0xbf]
# GFX1200: s_setkill 0x1234 ; encoding: [0x34,0x12,0x81,0xbf]
0x34,0x12,0x81,0xbf

# GFX12: s_setkill 0xc1d1 ; encoding: [0xd1,0xc1,0x81,0xbf]
# GFX1200: s_setkill 0xc1d1 ; encoding: [0xd1,0xc1,0x81,0xbf]
0xd1,0xc1,0x81,0xbf

# GFX12: s_setprio 0 ; encoding: [0x00,0x00,0xb5,0xbf]
Expand Down Expand Up @@ -304,8 +305,8 @@
# GFX12: s_wakeup ; encoding: [0x00,0x00,0xb4,0xbf]
0x00,0x00,0xb4,0xbf

# GFX12: s_wait_event 0x3141 ; encoding: [0x41,0x31,0x8b,0xbf]
# GFX1200: s_wait_event 0x3141 ; encoding: [0x41,0x31,0x8b,0xbf]
0x41,0x31,0x8b,0xbf

# GFX12: s_wait_event 0xc1d1 ; encoding: [0xd1,0xc1,0x8b,0xbf]
# GFX1200: s_wait_event 0xc1d1 ; encoding: [0xd1,0xc1,0x8b,0xbf]
0xd1,0xc1,0x8b,0xbf
Loading