10 changed files with 924 additions and 84 deletions
-
2.reuse/dep5
-
81dist/eden_named.svg
-
4docs/Deps.md
-
874docs/NvidiaGpu.md
-
2docs/README.md
-
25docs/ReleasePolicy.md
-
1docs/user/README.md
-
5docs/user/Testing.md
-
1docs/user/ThirdParty.md
-
13docs/user/Troubleshoot.md
81
dist/eden_named.svg
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,874 @@ |
|||
# The NVIDIA SM86 (Maxwell) GPU - Instruction set |
|||
|
|||
<!-- TOC --> |
|||
[AL2P](#AL2P) |
|||
[ALD](#ALD) |
|||
[AST](#AST) |
|||
[ATOM](#ATOM) |
|||
[ATOMS](#ATOMS) |
|||
[B2R](#B2R) |
|||
[BAR](#BAR) |
|||
[BFE](#BFE) |
|||
[BFI](#BFI) |
|||
[BPT](#BPT) |
|||
[BRA](#BRA) |
|||
[BRK](#BRK) |
|||
[BRX](#BRX) |
|||
[CAL](#CAL) |
|||
[CCTL](#CCTL) |
|||
[CCTLL](#CCTLL) |
|||
[CONT](#CONT) |
|||
[CS2R](#CS2R) |
|||
[CSET](#CSET) |
|||
[CSETP](#CSETP) |
|||
[DADD](#DADD) |
|||
[DEPBAR](#DEPBAR) |
|||
[DFMA](#DFMA) |
|||
[DMNMX](#DMNMX) |
|||
[DMUL](#DMUL) |
|||
[DSET](#DSET) |
|||
[DSETP](#DSETP) |
|||
[EXIT](#EXIT) |
|||
[F2F](#F2F) |
|||
[F2I](#F2I) |
|||
[FADD](#FADD) |
|||
[FCHK](#FCHK) |
|||
[FCMP](#FCMP) |
|||
[FFMA](#FFMA) |
|||
[FLO](#FLO) |
|||
[FMNMX](#FMNMX) |
|||
[FMUL](#FMUL) |
|||
[FSET](#FSET) |
|||
[FSETP](#FSETP) |
|||
[FSWZADD](#FSWZADD) |
|||
[GETCRSPTR](#GETCRSPTR) |
|||
[GETLMEMBASE](#GETLMEMBASE) |
|||
[HADD2](#HADD2) |
|||
[HFMA2](#HFMA2) |
|||
[HMUL2](#HMUL2) |
|||
[HSET2](#HSET2) |
|||
[HSETP2](#HSETP2) |
|||
[I2F](#I2F) |
|||
[I2I](#I2I) |
|||
[IADD](#IADD) |
|||
[IADD3](#IADD3) |
|||
[ICMP](#ICMP) |
|||
[IDE](#IDE) |
|||
[IDP](#IDP) |
|||
[IMAD](#IMAD) |
|||
[IMADSP](#IMADSP) |
|||
[IMNMX](#IMNMX) |
|||
[IMUL](#IMUL) |
|||
[IPA](#IPA) |
|||
[ISBERD](#ISBERD) |
|||
[ISCADD](#ISCADD) |
|||
[ISET](#ISET) |
|||
[ISETP](#ISETP) |
|||
[JCAL](#JCAL) |
|||
[JMP](#JMP) |
|||
[JMX](#JMX) |
|||
[KIL](#KIL) |
|||
[LD](#LD) |
|||
[LDC](#LDC) |
|||
[LDG](#LDG) |
|||
[LDL](#LDL) |
|||
[LDS](#LDS) |
|||
[LEA](#LEA) |
|||
[LEPC](#LEPC) |
|||
[LONGJMP](#LONGJMP) |
|||
[LOP](#LOP) |
|||
[LOP3](#LOP3) |
|||
[MEMBAR](#MEMBAR) |
|||
[MOV](#MOV) |
|||
[MUFU](#MUFU) |
|||
[NOP](#NOP) |
|||
[OUT](#OUT) |
|||
[P2R](#P2R) |
|||
[PBK](#PBK) |
|||
[PCNT](#PCNT) |
|||
[PEXIT](#PEXIT) |
|||
[PIXLD](#PIXLD) |
|||
[PLONGJMP](#PLONGJMP) |
|||
[POPC](#POPC) |
|||
[PRET](#PRET) |
|||
[PRMT](#PRMT) |
|||
[PSET](#PSET) |
|||
[PSETP](#PSETP) |
|||
[R2B](#R2B) |
|||
[R2P](#R2P) |
|||
[RAM](#RAM) |
|||
[RED](#RED) |
|||
[RET](#RET) |
|||
[RRO](#RRO) |
|||
[RTT](#RTT) |
|||
[S2R](#S2R) |
|||
[SAM](#SAM) |
|||
[SEL](#SEL) |
|||
[SETCRSPTR](#SETCRSPTR) |
|||
[SETLMEMBASE](#SETLMEMBASE) |
|||
[SHF](#SHF) |
|||
[SHFL](#SHFL) |
|||
[SHL](#SHL) |
|||
[SHR](#SHR) |
|||
[SSY](#SSY) |
|||
[ST](#ST) |
|||
[STG](#STG) |
|||
[STL](#STL) |
|||
[STP](#STP) |
|||
[STS](#STS) |
|||
[SUATOM](#SUATOM) |
|||
[SULD](#SULD) |
|||
[SURED](#SURED) |
|||
[SUST](#SUST) |
|||
[SYNC](#SYNC) |
|||
[TEX](#TEX) |
|||
[TLD](#TLD) |
|||
[TLD4](#TLD4) |
|||
[TMML](#TMML) |
|||
[TXA](#TXA) |
|||
[TXD](#TXD) |
|||
[TXQ](#TXQ) |
|||
[VABSDIFF](#VABSDIFF) |
|||
[VABSDIFF4](#VABSDIFF4) |
|||
[VADD](#VADD) |
|||
[VMAD](#VMAD) |
|||
[VMNMX](#VMNMX) |
|||
[VOTE](#VOTE) |
|||
[VSET](#VSET) |
|||
[VSETP](#VSETP) |
|||
[VSHL](#VSHL) |
|||
[VSHR](#VSHR) |
|||
[XMAD](#XMAD) |
|||
<!-- /TOC --> |
|||
|
|||
NOTE: Regenerate TOC with `cat docs/gpu/README.md | grep '#' | cut -d '#' -f 2 | tr -d ' ' | awk '{print "["$1"](#"$1")"}'`. |
|||
|
|||
The numbers (in binary) represent the opcodes; `-` signifies "don't care". |
|||
|
|||
# AL2P |
|||
`1110 1111 1010 0---` |
|||
|
|||
# ALD |
|||
`1110 1111 1101 1---` |
|||
|
|||
# AST |
|||
`1110 1111 1111 0---` |
|||
|
|||
# ATOM |
|||
- **ATOM_cas**: `1110 1110 1111 ----` |
|||
- **ATOM**: `1110 1101 ---- ----` |
|||
|
|||
Atomic operation. |
|||
|
|||
- INC, DEC for U32/S32/U64 does nothing. |
|||
- ADD, INC, DEC for S64 does nothing. |
|||
- Only ADD does something for F32. |
|||
- Only ADD, MIN and MAX does something for F16x2. |
|||
|
|||
# ATOMS |
|||
- **ATOMS_cas**: `1110 1110 ---- ----` |
|||
- **ATOMS**: `1110 1100 ---- ----` |
|||
|
|||
# B2R |
|||
`1111 0000 1011 1---` |
|||
|
|||
# BAR |
|||
`1111 0000 1010 1---` |
|||
|
|||
# BFE |
|||
- **BFE_reg**: `0101 1100 0000 0---` |
|||
- **BFE_cbuf**: `0100 1100 0000 0---` |
|||
- **BFE_imm**: `0011 100- 0000 0---` |
|||
|
|||
Bit Field Extract. |
|||
|
|||
# BFI |
|||
- **BFI_reg**: `0101 1011 1111 0---` |
|||
- **BFI_rc**: `0101 0011 1111 0---` |
|||
- **BFI_cr**: `0100 1011 1111 0---` |
|||
- **BFI_imm**: `0011 011- 1111 0---` |
|||
|
|||
Bit Field Insert. |
|||
|
|||
# BPT |
|||
`1110 0011 1010 ----` |
|||
|
|||
Breakpoint trap. |
|||
|
|||
# BRA |
|||
`1110 0010 0100 ----` |
|||
|
|||
Relative branch. |
|||
|
|||
# BRK |
|||
`1110 0011 0100 ----` |
|||
|
|||
Break. |
|||
|
|||
# BRX |
|||
`1110 0010 0101 ----` |
|||
|
|||
# CAL |
|||
`1110 0010 0110 ----` |
|||
|
|||
# CCTL |
|||
`1110 1111 011- ----` |
|||
|
|||
Cache Control. |
|||
|
|||
# CCTLL |
|||
`1110 1111 100- ----` |
|||
|
|||
Texture Cache Control. |
|||
|
|||
# CONT |
|||
`1110 0011 0101 ----` |
|||
|
|||
Continue. |
|||
|
|||
# CS2R |
|||
`0101 0000 1100 1---` |
|||
|
|||
Move Special Register to Register. |
|||
|
|||
# CSET |
|||
`0101 0000 1001 1---` |
|||
|
|||
Test Condition Code And Set. |
|||
|
|||
# CSETP |
|||
`0101 0000 1010 0---` |
|||
|
|||
Test Condition Code and Set Predicate. |
|||
|
|||
# DADD |
|||
- **DADD_reg**: `0101 1100 0111 0---` |
|||
- **DADD_cbuf**: `0100 1100 0111 0---` |
|||
- **DADD_imm**: `0011 100- 0111 0---` |
|||
|
|||
# DEPBAR |
|||
`1111 0000 1111 0---` |
|||
|
|||
# DFMA |
|||
- **DFMA_reg**: `0101 1011 0111 ----` |
|||
- **DFMA_rc**: `0101 0011 0111 ----` |
|||
- **DFMA_cr**: `0100 1011 0111 ----` |
|||
- **DFMA_imm**: `0011 011- 0111 ----` |
|||
|
|||
FP64 Fused Mutiply Add. |
|||
|
|||
# DMNMX |
|||
- **DMNMX_reg**: `0101 1100 0101 0---` |
|||
- **DMNMX_cbuf**: `0100 1100 0101 0---` |
|||
- **DMNMX_imm**: `0011 100- 0101 0---` |
|||
|
|||
FP64 Minimum/Maximum. |
|||
|
|||
# DMUL |
|||
- **DMUL_reg**: `0101 1100 1000 0---` |
|||
- **DMUL_cbuf**: `0100 1100 1000 0---` |
|||
- **DMUL_imm**: `0011 100- 1000 0---` |
|||
|
|||
FP64 Multiply. |
|||
|
|||
# DSET |
|||
- **DSET_reg**: `0101 1001 0--- ----` |
|||
- **DSET_cbuf**: `0100 1001 0--- ----` |
|||
- **DSET_imm**: `0011 001- 0--- ----` |
|||
|
|||
FP64 Compare And Set. |
|||
|
|||
# DSETP |
|||
- **DSETP_reg**: `0101 1011 1000 ----` |
|||
- **DSETP_cbuf**: `0100 1011 1000 ----` |
|||
- **DSETP_imm**: `0011 011- 1000 ----` |
|||
|
|||
FP64 Compare And Set Predicate. |
|||
|
|||
# EXIT |
|||
`1110 0011 0000 ----` |
|||
|
|||
# F2F |
|||
- **F2F_reg**: `0101 1100 1010 1---` |
|||
- **F2F_cbuf**: `0100 1100 1010 1---` |
|||
- **F2F_imm**: `0011 100- 1010 1---` |
|||
|
|||
# F2I |
|||
- **F2I_reg**: `0101 1100 1011 0---` |
|||
- **F2I_cbuf**: `0100 1100 1011 0---` |
|||
- **F2I_imm**: `0011 100- 1011 0---` |
|||
|
|||
# FADD |
|||
- **FADD_reg**: `0101 1100 0101 1---` |
|||
- **FADD_cbuf**: `0100 1100 0101 1---` |
|||
- **FADD_imm**: `0011 100- 0101 1---` |
|||
- **FADD32I**: `0000 10-- ---- ----` |
|||
|
|||
FP32 Add. |
|||
|
|||
# FCHK |
|||
- **FCHK_reg**: `0101 1100 1000 1---` |
|||
- **FCHK_cbuf**: `0100 1100 1000 1---` |
|||
- **FCHK_imm**: `0011 100- 1000 1---` |
|||
|
|||
Single Precision FP Divide Range Check. |
|||
|
|||
# FCMP |
|||
- **FCMP_reg**: `0101 1011 1010 ----` |
|||
- **FCMP_rc**: `0101 0011 1010 ----` |
|||
- **FCMP_cr**: `0100 1011 1010 ----` |
|||
- **FCMP_imm**: `0011 011- 1010 ----` |
|||
|
|||
FP32 Compare to Zero and Select Source. |
|||
|
|||
# FFMA |
|||
- **FFMA_reg**: `0101 1001 1--- ----` |
|||
- **FFMA_rc**: `0101 0001 1--- ----` |
|||
- **FFMA_cr**: `0100 1001 1--- ----` |
|||
- **FFMA_imm**: `0011 001- 1--- ----` |
|||
- **FFMA32I**: `0000 11-- ---- ----` |
|||
|
|||
FP32 Fused Multiply and Add. |
|||
|
|||
# FLO |
|||
- **FLO_reg**: `0101 1100 0011 0---` |
|||
- **FLO_cbuf**: `0100 1100 0011 0---` |
|||
- **FLO_imm**: `0011 100- 0011 0---` |
|||
|
|||
# FMNMX |
|||
- **FMNMX_reg**: `0101 1100 0110 0---` |
|||
- **FMNMX_cbuf**: `0100 1100 0110 0---` |
|||
- **FMNMX_imm**: `0011 100- 0110 0---` |
|||
|
|||
FP32 Minimum/Maximum. |
|||
|
|||
# FMUL |
|||
- **FMUL_reg**: `0101 1100 0110 1---` |
|||
- **FMUL_cbuf**: `0100 1100 0110 1---` |
|||
- **FMUL_imm**: `0011 100- 0110 1---` |
|||
- **FMUL32I**: `0001 1110 ---- ----` |
|||
|
|||
FP32 Multiply. |
|||
|
|||
# FSET |
|||
- **FSET_reg**: `0101 1000 ---- ----` |
|||
- **FSET_cbuf**: `0100 1000 ---- ----` |
|||
- **FSET_imm**: `0011 000- ---- ----` |
|||
|
|||
FP32 Compare And Set. |
|||
|
|||
# FSETP |
|||
- **FSETP_reg**: `0101 1011 1011 ----` |
|||
- **FSETP_cbuf**: `0100 1011 1011 ----` |
|||
- **FSETP_imm**: `0011 011- 1011 ----` |
|||
|
|||
FP32 Compare And Set Predicate. |
|||
|
|||
# FSWZADD |
|||
`0101 0000 1111 1---` |
|||
|
|||
FP32 Add used for FSWZ emulation. |
|||
|
|||
# GETCRSPTR |
|||
`1110 0010 1100 ----` |
|||
|
|||
# GETLMEMBASE |
|||
`1110 0010 1101 ----` |
|||
|
|||
# HADD2 |
|||
- **HADD2_reg**: `0101 1101 0001 0---` |
|||
- **HADD2_cbuf**: `0111 101- 1--- ----` |
|||
- **HADD2_imm**: `0111 101- 0--- ----` |
|||
- **HADD2_32I**: `0010 110- ---- ----` |
|||
|
|||
FP16 Add. |
|||
|
|||
# HFMA2 |
|||
- **HFMA2_reg**: `0101 1101 0000 0---` |
|||
- **HFMA2_rc**: `0110 0--- 1--- ----` |
|||
- **HFMA2_cr**: `0111 0--- 1--- ----` |
|||
- **HFMA2_imm**: `0111 0--- 0--- ----` |
|||
- **HFMA2_32I**: `0010 100- ---- ----` |
|||
|
|||
FP16 Fused Mutiply Add. |
|||
|
|||
# HMUL2 |
|||
- **HMUL2_reg**: `0101 1101 0000 1---` |
|||
- **HMUL2_cbuf**: `0111 100- 1--- ----` |
|||
- **HMUL2_imm**: `0111 100- 0--- ----` |
|||
- **HMUL2_32I**: `0010 101- ---- ----` |
|||
|
|||
FP16 Multiply. |
|||
|
|||
# HSET2 |
|||
- **HSET2_reg**: `0101 1101 0001 1---` |
|||
- **HSET2_cbuf**: `0111 110- 1--- ----` |
|||
- **HSET2_imm**: `0111 110- 0--- ----` |
|||
|
|||
FP16 Compare And Set. |
|||
|
|||
# HSETP2 |
|||
- **HSETP2_reg**: `0101 1101 0010 0---` |
|||
- **HSETP2_cbuf**: `0111 111- 1--- ----` |
|||
- **HSETP2_imm**: `0111 111- 0--- ----` |
|||
|
|||
FP16 Compare And Set Predicate. |
|||
|
|||
# I2F |
|||
- **I2F_reg**: `0101 1100 1011 1---` |
|||
- **I2F_cbuf**: `0100 1100 1011 1---` |
|||
- **I2F_imm**: `0011 100- 1011 1---` |
|||
|
|||
# I2I |
|||
- **I2I_reg**: `0101 1100 1110 0---` |
|||
- **I2I_cbuf**: `0100 1100 1110 0---` |
|||
- **I2I_imm**: `0011 100- 1110 0---` |
|||
|
|||
# IADD |
|||
- **IADD_reg**: `0101 1100 0001 0---` |
|||
- **IADD_cbuf**: `0100 1100 0001 0---` |
|||
- **IADD_imm**: `0011 100- 0001 0---` |
|||
|
|||
Integer Addition. |
|||
|
|||
# IADD3 |
|||
- **IADD3_reg**: `0101 1100 1100 ----` |
|||
- **IADD3_cbuf**: `0100 1100 1100 ----` |
|||
- **IADD3_imm**: `0011 100- 1100 ----` |
|||
- **IADD32I**: `0001 110- ---- ----` |
|||
|
|||
3-input Integer Addition. |
|||
|
|||
# ICMP |
|||
- **ICMP_reg**: `0101 1011 0100 ----` |
|||
- **ICMP_rc**: `0101 0011 0100 ----` |
|||
- **ICMP_cr**: `0100 1011 0100 ----` |
|||
- **ICMP_imm**: `0011 011- 0100 ----` |
|||
|
|||
Integer Compare to Zero and Select Source. |
|||
|
|||
# IDE |
|||
`1110 0011 1001 ----` |
|||
|
|||
# IDP |
|||
- **IDP_reg**: `0101 0011 1111 1---` |
|||
- **IDP_imm**: `0101 0011 1101 1---` |
|||
|
|||
# IMAD |
|||
- **IMAD_reg**: `0101 1010 0--- ----` |
|||
- **IMAD_rc**: `0101 0010 0--- ----` |
|||
- **IMAD_cr**: `0100 1010 0--- ----` |
|||
- **IMAD_imm**: `0011 010- 0--- ----` |
|||
- **IMAD32I**: `1000 00-- ---- ----` |
|||
|
|||
Integer Multiply And Add. |
|||
|
|||
# IMADSP |
|||
- **IMADSP_reg**: `0101 1010 1--- ----` |
|||
- **IMADSP_rc**: `0101 0010 1--- ----` |
|||
- **IMADSP_cr**: `0100 1010 1--- ----` |
|||
- **IMADSP_imm**: `0011 010- 1--- ----` |
|||
|
|||
Extracted Integer Multiply And Add.. |
|||
|
|||
# IMNMX |
|||
- **IMNMX_reg**: `0101 1100 0010 0---` |
|||
- **IMNMX_cbuf**: `0100 1100 0010 0---` |
|||
- **IMNMX_imm**: `0011 100- 0010 0---` |
|||
|
|||
Integer Minimum/Maximum. |
|||
|
|||
# IMUL |
|||
- **IMUL_reg**: `0101 1100 0011 1---` |
|||
- **IMUL_cbuf**: `0100 1100 0011 1---` |
|||
- **IMUL_imm**: `0011 100- 0011 1---` |
|||
- **IMUL32I**: `0001 1111 ---- ----` |
|||
|
|||
Integer Multiply. |
|||
|
|||
# IPA |
|||
`1110 0000 ---- ----` |
|||
|
|||
# ISBERD |
|||
`1110 1111 1101 0---` |
|||
|
|||
In-Stage-Buffer Entry Read. |
|||
|
|||
# ISCADD |
|||
- **ISCADD_reg**: `0101 1100 0001 1---` |
|||
- **ISCADD_cbuf**: `0100 1100 0001 1---` |
|||
- **ISCADD_imm**: `0011 100- 0001 1---` |
|||
- **ISCADD32I**: `0001 01-- ---- ----` |
|||
|
|||
Scaled Integer Addition. |
|||
|
|||
# ISET |
|||
- **ISET_reg**: `0101 1011 0101 ----` |
|||
- **ISET_cbuf**: `0100 1011 0101 ----` |
|||
- **ISET_imm**: `0011 011- 0101 ----` |
|||
|
|||
Integer Compare And Set. |
|||
|
|||
# ISETP |
|||
- **ISETP_reg**: `0101 1011 0110 ----` |
|||
- **ISETP_cbuf**: `0100 1011 0110 ----` |
|||
- **ISETP_imm**: `0011 011- 0110 ----` |
|||
|
|||
Integer Compare And Set Predicate. |
|||
|
|||
# JCAL |
|||
`1110 0010 0010 ----` |
|||
|
|||
Absolute Call. |
|||
|
|||
# JMP |
|||
`1110 0010 0001 ----` |
|||
|
|||
Absolute Jump. |
|||
|
|||
# JMX |
|||
`1110 0010 0000 ----` |
|||
|
|||
Absolute Jump Indirect. |
|||
|
|||
# KIL |
|||
`1110 0011 0011 ----` |
|||
|
|||
# LD |
|||
`100- ---- ---- ----` |
|||
|
|||
Load from generic Memory. |
|||
|
|||
# LDC |
|||
`1110 1111 1001 0---` |
|||
|
|||
Load Constant. |
|||
|
|||
# LDG |
|||
`1110 1110 1101 0---` |
|||
|
|||
Load from Global Memory. |
|||
|
|||
# LDL |
|||
`1110 1111 0100 0---` |
|||
|
|||
Load within Local Memory Window. |
|||
|
|||
# LDS |
|||
`1110 1111 0100 1---` |
|||
|
|||
Load within Shared Memory Window. |
|||
|
|||
# LEA |
|||
- **LEA_hi_reg**: `0101 1011 1101 1---` |
|||
- **LEA_hi_cbuf**: `0001 10-- ---- ----` |
|||
- **LEA_lo_reg**: `0101 1011 1101 0---` |
|||
- **LEA_lo_cbuf**: `0100 1011 1101 ----` |
|||
- **LEA_lo_imm**: `0011 011- 1101 0---` |
|||
|
|||
# LEPC |
|||
`0101 0000 1101 0---` |
|||
|
|||
# LONGJMP |
|||
`1110 0011 0001 ----` |
|||
|
|||
# LOP |
|||
- **LOP_reg**: `0101 1100 0100 0---` |
|||
- **LOP_cbuf**: `0100 1100 0100 0---` |
|||
- **LOP_imm**: `0011 100- 0100 0---` |
|||
|
|||
# LOP3 |
|||
- **LOP3_reg**: `0101 1011 1110 0---` |
|||
- **LOP3_cbuf**: `0000 001- ---- ----` |
|||
- **LOP3_imm**: `0011 11-- ---- ----` |
|||
- **LOP32I**: `0000 01-- ---- ----` |
|||
|
|||
# MEMBAR |
|||
`1110 1111 1001 1---` |
|||
|
|||
Memory Barrier. |
|||
|
|||
# MOV |
|||
- **MOV_reg**: `0101 1100 1001 1---` |
|||
- **MOV_cbuf**: `0100 1100 1001 1---` |
|||
- **MOV_imm**: `0011 100- 1001 1---` |
|||
- **MOV32I**: `0000 0001 0000 ----` |
|||
|
|||
# MUFU |
|||
`0101 0000 1000 0---` |
|||
|
|||
Multi Function Operation. |
|||
|
|||
# NOP |
|||
`0101 0000 1011 0---` |
|||
|
|||
No operation. |
|||
|
|||
# OUT |
|||
- **OUT_reg**: `1111 1011 1110 0---` |
|||
- **OUT_cbuf**: `1110 1011 1110 0---` |
|||
- **OUT_imm**: `1111 011- 1110 0---` |
|||
|
|||
# P2R |
|||
- **P2R_reg**: `0101 1100 1110 1---` |
|||
- **P2R_cbuf**: `0100 1100 1110 1---` |
|||
- **P2R_imm**: `0011 1000 1110 1---` |
|||
|
|||
Move Predicate Register To Register. |
|||
|
|||
# PBK |
|||
`1110 0010 1010 ----` |
|||
|
|||
Pre-break. |
|||
|
|||
# PCNT |
|||
`1110 0010 1011 ----` |
|||
|
|||
Pre-continue. |
|||
|
|||
# PEXIT |
|||
`1110 0010 0011 ----` |
|||
|
|||
Pre-exit. |
|||
|
|||
# PIXLD |
|||
`1110 1111 1110 1---` |
|||
|
|||
# PLONGJMP |
|||
`1110 0010 1000 ----` |
|||
|
|||
Pre-long jump. |
|||
|
|||
# POPC |
|||
- **POPC_reg**: `0101 1100 0000 1---` |
|||
- **POPC_cbuf**: `0100 1100 0000 1---` |
|||
- **POPC_imm**: `0011 100- 0000 1---` |
|||
|
|||
Population/Bit count. |
|||
|
|||
# PRET |
|||
`1110 0010 0111 ----` |
|||
|
|||
Pre-return from subroutine. Pushes the return address to the CRS stack. |
|||
|
|||
# PRMT |
|||
- **PRMT_reg**: `0101 1011 1100 ----` |
|||
- **PRMT_rc**: `0101 0011 1100 ----` |
|||
- **PRMT_cr**: `0100 1011 1100 ----` |
|||
- **PRMT_imm**: `0011 011- 1100 ----` |
|||
|
|||
# PSET |
|||
`0101 0000 1000 1---` |
|||
|
|||
Combine Predicates and Set. |
|||
|
|||
# PSETP |
|||
`0101 0000 1001 0---` |
|||
|
|||
Combine Predicates and Set Predicate. |
|||
|
|||
# R2B |
|||
`1111 0000 1100 0---` |
|||
|
|||
Move Register to Barrier. |
|||
|
|||
# R2P |
|||
- **R2P_reg**: `0101 1100 1111 0---` |
|||
- **R2P_cbuf**: `0100 1100 1111 0---` |
|||
- **R2P_imm**: `0011 100- 1111 0---` |
|||
|
|||
Move Register To Predicate/CC Register. |
|||
|
|||
# RAM |
|||
`1110 0011 1000 ----` |
|||
|
|||
# RED |
|||
`1110 1011 1111 1---` |
|||
|
|||
Reduction Operation on Generic Memory. |
|||
|
|||
# RET |
|||
`1110 0011 0010 ----` |
|||
|
|||
Return. |
|||
|
|||
# RRO |
|||
- **RRO_reg**: `0101 1100 1001 0---` |
|||
- **RRO_cbuf**: `0100 1100 1001 0---` |
|||
- **RRO_imm**: `0011 100- 1001 0---` |
|||
|
|||
# RTT |
|||
`1110 0011 0110 ----` |
|||
|
|||
# S2R |
|||
`1111 0000 1100 1---` |
|||
|
|||
# SAM |
|||
`1110 0011 0111 ----` |
|||
|
|||
# SEL |
|||
- **SEL_reg**: `0101 1100 1010 0---` |
|||
- **SEL_cbuf**: `0100 1100 1010 0---` |
|||
- **SEL_imm**: `0011 100- 1010 0---` |
|||
|
|||
# SETCRSPTR |
|||
`1110 0010 1110 ----` |
|||
|
|||
# SETLMEMBASE |
|||
`1110 0010 1111 ----` |
|||
|
|||
# SHF |
|||
- **SHF_l_reg**: `0101 1011 1111 1---` |
|||
- **SHF_l_imm**: `0011 011- 1111 1---` |
|||
- **SHF_r_reg**: `0101 1100 1111 1---` |
|||
- **SHF_r_imm**: `0011 100- 1111 1---` |
|||
|
|||
# SHFL |
|||
`1110 1111 0001 0---` |
|||
|
|||
# SHL |
|||
- **SHL_reg**: `0101 1100 0100 1---` |
|||
- **SHL_cbuf**: `0100 1100 0100 1---` |
|||
- **SHL_imm**: `0011 100- 0100 1---` |
|||
|
|||
# SHR |
|||
- **SHR_reg**: `0101 1100 0010 1---` |
|||
- **SHR_cbuf**: `0100 1100 0010 1---` |
|||
- **SHR_imm**: `0011 100- 0010 1---` |
|||
|
|||
# SSY |
|||
`1110 0010 1001 ----` |
|||
|
|||
Set Synchronization Point. |
|||
|
|||
# ST |
|||
`101- ---- ---- ----` |
|||
|
|||
Store to generic Memory. |
|||
|
|||
# STG |
|||
`1110 1110 1101 1---` |
|||
|
|||
Store to global Memory. |
|||
|
|||
# STL |
|||
`1110 1111 0101 0---` |
|||
|
|||
Store within Local or Shared Window. |
|||
|
|||
# STP |
|||
`1110 1110 1010 0---` |
|||
|
|||
Store to generic Memory and Predicate. |
|||
|
|||
# STS |
|||
`1110 1111 0101 1---` |
|||
|
|||
Store within Local or Shared Window. |
|||
|
|||
# SUATOM |
|||
- **SUATOM**: `1110 1010 0--- ----` |
|||
- **SUATOM_cas**: `1110 1010 1--- ----` |
|||
|
|||
Atomic Op on Surface Memory. |
|||
|
|||
# SULD |
|||
`1110 1011 000- ----` |
|||
|
|||
Surface Load. |
|||
|
|||
# SURED |
|||
`1110 1011 010- ----` |
|||
|
|||
Reduction Op on Surface Memory. |
|||
|
|||
# SUST |
|||
`1110 1011 001- ----` |
|||
|
|||
Surface Store. |
|||
|
|||
# SYNC |
|||
`1111 0000 1111 1---` |
|||
|
|||
# TEX |
|||
- **TEX**: `1100 0--- ---- ----` |
|||
- **TEX_b**: `1101 1110 10-- ----` |
|||
- **TEXS**: `1101 -00- ---- ----` |
|||
|
|||
Texture Fetch with scalar/non-vec4 source/destinations. |
|||
|
|||
# TLD |
|||
- **TLD**: `1101 1100 ---- ----` |
|||
- **TLD_b**: `1101 1101 ---- ----` |
|||
- **TLDS**: `1101 -01- ---- ----` |
|||
|
|||
Texture Load with scalar/non-vec4 source/destinations. |
|||
|
|||
# TLD4 |
|||
- **TLD4**: `1100 10-- ---- ----` |
|||
- **TLD4_b**: `1101 1110 11-- ----` |
|||
- **TLD4S**: `1101 1111 -0-- ----` |
|||
|
|||
Texture Load 4 with scalar/non-vec4 source/destinations. |
|||
|
|||
# TMML |
|||
- **TMML**: `1101 1111 0101 1---` |
|||
- **TMML_b**: `1101 1111 0110 0---` |
|||
|
|||
Texture MipMap Level. |
|||
|
|||
# TXA |
|||
`1101 1111 0100 0---` |
|||
|
|||
# TXD |
|||
- **TXD**: `1101 1110 00-- ----` |
|||
- **TXD_b**: `1101 1110 01-- ----` |
|||
|
|||
Texture Fetch With Derivatives. |
|||
|
|||
# TXQ |
|||
- **TXQ**: `1101 1111 0100 1---` |
|||
- **TXQ_b**: `1101 1111 0101 0---` |
|||
|
|||
Texture Query. |
|||
|
|||
# VABSDIFF |
|||
`0101 0100 ---- ----` |
|||
|
|||
# VABSDIFF4 |
|||
`0101 0000 0--- ----` |
|||
|
|||
# VADD |
|||
`0010 00-- ---- ----` |
|||
|
|||
# VMAD |
|||
`0101 1111 ---- ----` |
|||
|
|||
# VMNMX |
|||
`0011 101- ---- ----` |
|||
|
|||
# VOTE |
|||
- **VOTE**: `0101 0000 1101 1---` |
|||
- **VOTE_vtg**: `0101 0000 1110 0---` |
|||
|
|||
Vote Across SIMD Thread Group |
|||
|
|||
# VSET |
|||
`0100 000- ---- ----` |
|||
|
|||
# VSETP |
|||
`0101 0000 1111 0---` |
|||
|
|||
# VSHL |
|||
`0101 0111 ---- ----` |
|||
|
|||
# VSHR |
|||
`0101 0110 ---- ----` |
|||
|
|||
# XMAD |
|||
- **XMAD_reg**: `0101 1011 00-- ----` |
|||
- **XMAD_rc**: `0101 0001 0--- ----` |
|||
- **XMAD_cr**: `0100 111- ---- ----` |
|||
- **XMAD_imm**: `0011 011- 00-- ----` |
|||
|
|||
Integer Short Multiply Add. |
|||
@ -0,0 +1,25 @@ |
|||
# Release Policy |
|||
|
|||
While releases are usually made at the discretion of the team, we feel that establishing a clearer guideline on how those come to be will help expectations when it comes to features and fixes per version. |
|||
|
|||
## Release candidates |
|||
|
|||
Every full release is *preceded* by at least, 3 release candidates. The reasoning is that each week of the month, there will be a release candidate, with the "4th one" being the final full release. |
|||
|
|||
The main expectation is that the release candidates bring both fixes and, sometimes, new features. But not guarantee a regression-free experience. |
|||
|
|||
The criteria for choosing a date for a release candidate is at discretion, or "perceived necesity" at any given time. |
|||
|
|||
## Full release |
|||
|
|||
A full release means there are *no major* leftover regressions, importantly this means that a grand portion of regressions found between release candidates are swept out before declaring a full release. This doesn't mean a full release is regression-free; but we do a best-effort approach to reduce them for end-users. |
|||
|
|||
The main expectation is that users can safely upgrade from a stable build to another, with no major regressions. |
|||
|
|||
## Snapshot/rolling release |
|||
|
|||
While we don't publish rolling releases, we are aware users may compile from source and/or provide binaries to master builds of the project. |
|||
|
|||
This is mostly fine since we keep master very stable from major hiccups. However sometimes bugs do slip between tests or reviews - so users are advised to keep that in mind. |
|||
|
|||
We advise that users also read git logs (`git log --oneline`) before recompiling to get a clearer picture of the changes given into the emulator. |
|||
@ -0,0 +1,13 @@ |
|||
# User Handbook - Troubleshooting |
|||
|
|||
## Vulkan initialization error |
|||
|
|||
- Ensure you have the latest drivers |
|||
- Uninstall old drivers, for Windows you can use [Display Driver Uninstaller](https://www.guru3d.com/download/display-driver-uninstaller-download/) |
|||
- Change backend manually in the settings file (set it from `0` to `1` or viceversa). |
|||
- Disconnect your second monitor, if any |
|||
|
|||
## This mod only works on an Emulator |
|||
|
|||
- Enable RNG seed |
|||
- Set RNG seed to 0 |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue