diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-09-17 02:02:19 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-09-17 02:02:19 +0000 |
| commit | 7b1dc2c9834fb98455159e49eded58536d0f524a (patch) | |
| tree | b3892a35c8b5bd14d7a751cbbd9304100d3c0c26 /llvm/lib/Target/AMDGPU/SOPInstructions.td | |
| parent | 6fa7681bb613f4b92889b55a232507671e8f39be (diff) | |
| download | bcm5719-llvm-7b1dc2c9834fb98455159e49eded58536d0f524a.tar.gz bcm5719-llvm-7b1dc2c9834fb98455159e49eded58536d0f524a.zip | |
AMDGPU: Use i64 scalar compare instructions
VI added eq/ne for i64, so use them.
llvm-svn: 281800
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SOPInstructions.td')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SOPInstructions.td | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/SOPInstructions.td b/llvm/lib/Target/AMDGPU/SOPInstructions.td index 4451d1642f5..9744cd3cd07 100644 --- a/llvm/lib/Target/AMDGPU/SOPInstructions.td +++ b/llvm/lib/Target/AMDGPU/SOPInstructions.td @@ -630,6 +630,14 @@ class SOPC_CMP_32<bits<7> op, string opName, let isCommutable = 1; } +class SOPC_CMP_64<bits<7> op, string opName, + PatLeaf cond = COND_NULL, string revOp = opName> + : SOPC_Helper<op, SSrc_b64, i64, opName, cond>, + Commutable_REV<revOp, !eq(revOp, opName)> { + let isCompare = 1; + let isCommutable = 1; +} + class SOPC_32<bits<7> op, string opName, list<dag> pattern = []> : SOPC_Base<op, SSrc_b32, SSrc_b32, opName, pattern>; @@ -655,6 +663,10 @@ def S_BITCMP0_B64 : SOPC_64_32 <0x0e, "s_bitcmp0_b64">; def S_BITCMP1_B64 : SOPC_64_32 <0x0f, "s_bitcmp1_b64">; def S_SETVSKIP : SOPC_32 <0x10, "s_setvskip">; +let SubtargetPredicate = isVI in { +def S_CMP_EQ_U64 : SOPC_CMP_64 <0x12, "s_cmp_eq_u64", COND_EQ>; +def S_CMP_LG_U64 : SOPC_CMP_64 <0x13, "s_cmp_lg_u64", COND_NE>; +} //===----------------------------------------------------------------------===// // SOPP Instructions |

