[PATCH] D112416: [AMDGPU] Fix setcc combine for i128
Sebastian Neubauer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 26 04:43:28 PDT 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rG487f15603e73: [AMDGPU] Fix setcc combine for i128 (authored by sebastian-ne).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D112416/new/
https://reviews.llvm.org/D112416
Files:
llvm/lib/Target/AMDGPU/SIISelLowering.cpp
llvm/test/CodeGen/AMDGPU/setcc64.ll
Index: llvm/test/CodeGen/AMDGPU/setcc64.ll
===================================================================
--- llvm/test/CodeGen/AMDGPU/setcc64.ll
+++ llvm/test/CodeGen/AMDGPU/setcc64.ll
@@ -260,4 +260,28 @@
ret void
}
+; GCN-LABEL: {{^}}i128_sle:
+; GCN: v_cmp_le_u64
+; GCN: v_cmp_le_i64
+; SI: v_cmp_eq_u64
+; VI: s_cmp_eq_u64
+define amdgpu_kernel void @i128_sle(i32 addrspace(1)* %out, i128 %a, i128 %b) #0 {
+entry:
+ %tmp0 = icmp sle i128 %a, %b
+ %tmp1 = sext i1 %tmp0 to i32
+ store i32 %tmp1, i32 addrspace(1)* %out
+ ret void
+}
+
+; GCN-LABEL: {{^}}i128_eq_const:
+; SI: v_cmp_eq_u64
+; VI: s_cmp_eq_u64
+define amdgpu_kernel void @i128_eq_const(i32 addrspace(1)* %out, i128 %a) #0 {
+entry:
+ %tmp0 = icmp eq i128 %a, 85070591730234615865843651857942052992
+ %tmp1 = sext i1 %tmp0 to i32
+ store i32 %tmp1, i32 addrspace(1)* %out
+ ret void
+}
+
attributes #0 = { nounwind }
Index: llvm/lib/Target/AMDGPU/SIISelLowering.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+++ llvm/lib/Target/AMDGPU/SIISelLowering.cpp
@@ -10786,7 +10786,7 @@
return LHS.getOperand(0);
}
- uint64_t CRHSVal = CRHS->getZExtValue();
+ const APInt &CRHSVal = CRHS->getAPIntValue();
if ((CC == ISD::SETEQ || CC == ISD::SETNE) &&
LHS.getOpcode() == ISD::SELECT &&
isa<ConstantSDNode>(LHS.getOperand(1)) &&
@@ -10798,8 +10798,8 @@
// setcc (select cc, CT, CF), CF, ne => cc
// setcc (select cc, CT, CF), CT, ne => xor cc, -1
// setcc (select cc, CT, CF), CT, eq => cc
- uint64_t CT = LHS.getConstantOperandVal(1);
- uint64_t CF = LHS.getConstantOperandVal(2);
+ const APInt &CT = LHS.getConstantOperandAPInt(1);
+ const APInt &CF = LHS.getConstantOperandAPInt(2);
if ((CF == CRHSVal && CC == ISD::SETEQ) ||
(CT == CRHSVal && CC == ISD::SETNE))
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D112416.382267.patch
Type: text/x-patch
Size: 1924 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211026/37a4a9f4/attachment.bin>
More information about the llvm-commits
mailing list