diff options
author | bunnei <bunneidev@gmail.com> | 2019-09-20 23:10:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-20 23:10:42 +0200 |
commit | 88d857499b6168d7bcea9b91fa5bdd8b0144c07a (patch) | |
tree | 1efa1eddb43c0afd3003b449675997abc9a7637f /src/video_core/engines/shader_bytecode.h | |
parent | Merge pull request #2784 from ReinUsesLisp/smem (diff) | |
parent | shader_ir/warp: Implement SHFL (diff) | |
download | yuzu-88d857499b6168d7bcea9b91fa5bdd8b0144c07a.tar yuzu-88d857499b6168d7bcea9b91fa5bdd8b0144c07a.tar.gz yuzu-88d857499b6168d7bcea9b91fa5bdd8b0144c07a.tar.bz2 yuzu-88d857499b6168d7bcea9b91fa5bdd8b0144c07a.tar.lz yuzu-88d857499b6168d7bcea9b91fa5bdd8b0144c07a.tar.xz yuzu-88d857499b6168d7bcea9b91fa5bdd8b0144c07a.tar.zst yuzu-88d857499b6168d7bcea9b91fa5bdd8b0144c07a.zip |
Diffstat (limited to 'src/video_core/engines/shader_bytecode.h')
-rw-r--r-- | src/video_core/engines/shader_bytecode.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h index 052e6d24e..a6110bd86 100644 --- a/src/video_core/engines/shader_bytecode.h +++ b/src/video_core/engines/shader_bytecode.h @@ -566,6 +566,13 @@ enum class ImageAtomicOperation : u64 { Exch = 8, }; +enum class ShuffleOperation : u64 { + Idx = 0, // shuffleNV + Up = 1, // shuffleUpNV + Down = 2, // shuffleDownNV + Bfly = 3, // shuffleXorNV +}; + union Instruction { Instruction& operator=(const Instruction& instr) { value = instr.value; @@ -600,6 +607,15 @@ union Instruction { } vote; union { + BitField<30, 2, ShuffleOperation> operation; + BitField<48, 3, u64> pred48; + BitField<28, 1, u64> is_index_imm; + BitField<29, 1, u64> is_mask_imm; + BitField<20, 5, u64> index_imm; + BitField<34, 13, u64> mask_imm; + } shfl; + + union { BitField<8, 8, Register> gpr; BitField<20, 24, s64> offset; } gmem; @@ -1542,6 +1558,7 @@ public: BRK, DEPBAR, VOTE, + SHFL, BFE_C, BFE_R, BFE_IMM, @@ -1833,6 +1850,7 @@ private: INST("111000110000----", Id::EXIT, Type::Flow, "EXIT"), INST("1111000011110---", Id::DEPBAR, Type::Synch, "DEPBAR"), INST("0101000011011---", Id::VOTE, Type::Warp, "VOTE"), + INST("1110111100010---", Id::SHFL, Type::Warp, "SHFL"), INST("1110111111011---", Id::LD_A, Type::Memory, "LD_A"), INST("1110111101001---", Id::LD_S, Type::Memory, "LD_S"), INST("1110111101000---", Id::LD_L, Type::Memory, "LD_L"), |