[llvm] Remove ppc64 check from mayUseP9Setb (PR #206282)
via llvm-commits
llvm-commits at lists.llvm.org
Sat Jun 27 12:45:01 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-powerpc
Author: AZero13 (AZero13)
<details>
<summary>Changes</summary>
32 bits can use setb too.
---
Full diff: https://github.com/llvm/llvm-project/pull/206282.diff
2 Files Affected:
- (modified) llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp (+1-1)
- (added) llvm/test/CodeGen/PowerPC/p9-setb32.ll (+31)
``````````diff
diff --git a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
index 016c547821f7a..9e4ac5694fb14 100644
--- a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+++ b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
@@ -5866,7 +5866,7 @@ void PPCDAGToDAGISel::Select(SDNode *N) {
if (Subtarget->useCRBits() && N->getOperand(0).getValueType() == MVT::i1)
break;
- if (Subtarget->isISA3_0() && Subtarget->isPPC64()) {
+ if (Subtarget->isISA3_0()) {
bool NeedSwapOps = false;
bool IsUnCmp = false;
if (mayUseP9Setb(N, CC, CurDAG, NeedSwapOps, IsUnCmp)) {
diff --git a/llvm/test/CodeGen/PowerPC/p9-setb32.ll b/llvm/test/CodeGen/PowerPC/p9-setb32.ll
new file mode 100644
index 0000000000000..49ca04f38a972
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/p9-setb32.ll
@@ -0,0 +1,31 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc-unknown-unknown \
+; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s
+
+; select_cc lhs, rhs, -1, (zext (setcc lhs, rhs, setne)), setlt
+define i32 @setb1(i32 %a, i32 %b) {
+; CHECK-LABEL: setb1:
+; CHECK: # %bb.0:
+; CHECK-NEXT: cmpw r3, r4
+; CHECK-NEXT: setb r3, cr0
+; CHECK-NEXT: blr
+ %cmp = icmp ne i32 %a, %b
+ %zext = zext i1 %cmp to i32
+ %cmp1 = icmp slt i32 %a, %b
+ %res = select i1 %cmp1, i32 -1, i32 %zext
+ ret i32 %res
+}
+
+; select_cc lhs, rhs, 1, (sext (setcc lhs, rhs, setne)), setlt
+define i32 @setb2(i32 %a, i32 %b) {
+; CHECK-LABEL: setb2:
+; CHECK: # %bb.0:
+; CHECK-NEXT: cmpw r4, r3
+; CHECK-NEXT: setb r3, cr0
+; CHECK-NEXT: blr
+ %cmp = icmp ne i32 %a, %b
+ %sext = sext i1 %cmp to i32
+ %cmp1 = icmp slt i32 %a, %b
+ %res = select i1 %cmp1, i32 1, i32 %sext
+ ret i32 %res
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/206282
More information about the llvm-commits
mailing list