summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/SOPInstructions.td
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2016-09-17 02:02:19 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2016-09-17 02:02:19 +0000
commit7b1dc2c9834fb98455159e49eded58536d0f524a (patch)
treeb3892a35c8b5bd14d7a751cbbd9304100d3c0c26 /llvm/lib/Target/AMDGPU/SOPInstructions.td
parent6fa7681bb613f4b92889b55a232507671e8f39be (diff)
downloadbcm5719-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.td12
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
OpenPOWER on IntegriCloud