diff options
| author | Dmitry Preobrazhensky <dmitry.preobrazhensky@amd.com> | 2018-04-06 16:35:11 +0000 |
|---|---|---|
| committer | Dmitry Preobrazhensky <dmitry.preobrazhensky@amd.com> | 2018-04-06 16:35:11 +0000 |
| commit | f20aff565decc48b1e398372abe003b770cadb37 (patch) | |
| tree | e886dc8fb552cd5ba24430bab590f8e228e1e4ec /llvm/lib/Target | |
| parent | a6823f0e67c2b479a48c16c81eb314217305ff36 (diff) | |
| download | bcm5719-llvm-f20aff565decc48b1e398372abe003b770cadb37.tar.gz bcm5719-llvm-f20aff565decc48b1e398372abe003b770cadb37.zip | |
[AMDGPU][MC][GFX9] Added instructions *saveexec*, *wrexec* and *bitreplicate*
See bug 36840: https://bugs.llvm.org/show_bug.cgi?id=36840
Differential Revision: https://reviews.llvm.org/D45250
Reviewers: artem.tamazov, arsenm, timcorringham
llvm-svn: 329419
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SOPInstructions.td | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/SOPInstructions.td b/llvm/lib/Target/AMDGPU/SOPInstructions.td index f66888d3492..375c2d66638 100644 --- a/llvm/lib/Target/AMDGPU/SOPInstructions.td +++ b/llvm/lib/Target/AMDGPU/SOPInstructions.td @@ -255,6 +255,17 @@ def S_SET_GPR_IDX_IDX : SOP1_0_32<"s_set_gpr_idx_idx"> { } } +let SubtargetPredicate = isGFX9 in { + let hasSideEffects = 1, Defs = [EXEC, SCC], Uses = [EXEC] in { + def S_ANDN1_SAVEEXEC_B64 : SOP1_64<"s_andn1_saveexec_b64">; + def S_ORN1_SAVEEXEC_B64 : SOP1_64<"s_orn1_saveexec_b64">; + def S_ANDN1_WREXEC_B64 : SOP1_64<"s_andn1_wrexec_b64">; + def S_ANDN2_WREXEC_B64 : SOP1_64<"s_andn2_wrexec_b64">; + } // End hasSideEffects = 1, Defs = [EXEC, SCC], Uses = [EXEC] + + def S_BITREPLICATE_B64_B32 : SOP1_64_32<"s_bitreplicate_b64_b32">; +} // End SubtargetPredicate = isGFX9 + //===----------------------------------------------------------------------===// // SOP2 Instructions //===----------------------------------------------------------------------===// @@ -1314,3 +1325,13 @@ def S_SETREG_B32_vi : SOPK_Real_vi <0x12, S_SETREG_B32>; //def S_GETREG_REGRD_B32_vi : SOPK_Real_vi <0x13, S_GETREG_REGRD_B32>; // see pseudo for comments def S_SETREG_IMM32_B32_vi : SOPK_Real64<0x14, S_SETREG_IMM32_B32>, Select_vi<S_SETREG_IMM32_B32.Mnemonic>; + +//===----------------------------------------------------------------------===// +// SOP1 - GFX9. +//===----------------------------------------------------------------------===// + +def S_ANDN1_SAVEEXEC_B64_vi : SOP1_Real_vi<0x33, S_ANDN1_SAVEEXEC_B64>; +def S_ORN1_SAVEEXEC_B64_vi : SOP1_Real_vi<0x34, S_ORN1_SAVEEXEC_B64>; +def S_ANDN1_WREXEC_B64_vi : SOP1_Real_vi<0x35, S_ANDN1_WREXEC_B64>; +def S_ANDN2_WREXEC_B64_vi : SOP1_Real_vi<0x36, S_ANDN2_WREXEC_B64>; +def S_BITREPLICATE_B64_B32_vi : SOP1_Real_vi<0x37, S_BITREPLICATE_B64_B32>; |

