diff options
author | Tom Stellard <thomas.stellard@amd.com> | 2014-11-14 14:08:00 +0000 |
---|---|---|
committer | Tom Stellard <thomas.stellard@amd.com> | 2014-11-14 14:08:00 +0000 |
commit | 9d7ddd516ece5484333a0057f820905e5a8c3f99 (patch) | |
tree | bd586b0c77bebad078176258d2d451978fe98f4c /llvm/docs | |
parent | 631bd7b1108d963fa6b9985c086fbcd63926d3dd (diff) | |
download | bcm5719-llvm-9d7ddd516ece5484333a0057f820905e5a8c3f99.tar.gz bcm5719-llvm-9d7ddd516ece5484333a0057f820905e5a8c3f99.zip |
R600/SI: Start implementing an assembler
This was done using the Sparc and PowerPC AsmParsers as guides. So far it
is very simple and only supports sopp instructions.
llvm-svn: 221994
Diffstat (limited to 'llvm/docs')
-rw-r--r-- | llvm/docs/R600Usage.rst | 43 | ||||
-rw-r--r-- | llvm/docs/index.rst | 4 |
2 files changed, 47 insertions, 0 deletions
diff --git a/llvm/docs/R600Usage.rst b/llvm/docs/R600Usage.rst new file mode 100644 index 00000000000..48a30c8a8dd --- /dev/null +++ b/llvm/docs/R600Usage.rst @@ -0,0 +1,43 @@ +============================ +User Guide for R600 Back-end +============================ + +Introduction +============ + +The R600 back-end provides ISA code generation for AMD GPUs, starting with +the R600 family up until the current Sea Islands (GCN Gen 2). + + +Assembler +========= + +The assembler is currently a work in progress and not yet complete. Below +are the currently supported features. + +SOPP Instructions +----------------- + +Unless otherwise mentioned, all SOPP instructions that with an operand +accept a integer operand(s) only. No verification is performed on the +operands, so it is up to the programmer to be familiar with the range +or acceptable values. + +s_waitcnt +^^^^^^^^^ + +s_waitcnt accepts named arguments to specify which memory counter(s) to +wait for. + +.. code-block:: nasm + + // Wait for all counters to be 0 + s_waitcnt 0 + + // Equivalent to s_waitcnt 0. Counter names can also be delimited by + // '&' or ','. + s_waitcnt vmcnt(0) expcnt(0) lgkcmt(0) + + // Wait for vmcnt counter to be 1. + s_waitcnt vmcnt(1) + diff --git a/llvm/docs/index.rst b/llvm/docs/index.rst index 403c17aafae..5ac54432fd0 100644 --- a/llvm/docs/index.rst +++ b/llvm/docs/index.rst @@ -235,6 +235,7 @@ For API clients and LLVM developers. WritingAnLLVMPass HowToUseAttributes NVPTXUsage + R600Usage StackMaps InAlloca BigEndianNEON @@ -317,6 +318,9 @@ For API clients and LLVM developers. :doc:`NVPTXUsage` This document describes using the NVPTX back-end to compile GPU kernels. +:doc:`R600Usage` + This document describes how to use the R600 back-end. + :doc:`StackMaps` LLVM support for mapping instruction addresses to the location of values and allowing code to be patched. |