[llvm] [PowerPC] `ANDI_rec_1_*` should define CR0 (PR #89034)
Kai Luo via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 17 00:57:23 PDT 2024
https://github.com/bzEq created https://github.com/llvm/llvm-project/pull/89034
These pseudo instructions finally copies the result to CR0 so they should define `CR0` in their definitions.
>From aa74200bf8ef81c88d1bcc52f3bb1964691752cf Mon Sep 17 00:00:00 2001
From: Kai Luo <lkail at cn.ibm.com>
Date: Wed, 17 Apr 2024 07:59:36 +0000
Subject: [PATCH] Missing def=cr0
---
llvm/lib/Target/PowerPC/PPCInstrInfo.td | 2 ++
1 file changed, 2 insertions(+)
diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.td b/llvm/lib/Target/PowerPC/PPCInstrInfo.td
index 6423e692d88c37..454428e83084b9 100644
--- a/llvm/lib/Target/PowerPC/PPCInstrInfo.td
+++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.td
@@ -4189,6 +4189,7 @@ def : Pat<(v4i32 (selectcc i1:$lhs, i1:$rhs, v4i32:$tval, v4i32:$fval, SETUGT)),
def : Pat<(v4i32 (selectcc i1:$lhs, i1:$rhs, v4i32:$tval, v4i32:$fval, SETNE)),
(SELECT_VRRC (CRXOR $lhs, $rhs), $tval, $fval)>;
+let Defs = [CR0] in {
def ANDI_rec_1_EQ_BIT : PPCCustomInserterPseudo<(outs crbitrc:$dst), (ins gprc:$in),
"#ANDI_rec_1_EQ_BIT",
[(set i1:$dst, (trunc (not i32:$in)))]>;
@@ -4202,6 +4203,7 @@ def ANDI_rec_1_EQ_BIT8 : PPCCustomInserterPseudo<(outs crbitrc:$dst), (ins g8rc:
def ANDI_rec_1_GT_BIT8 : PPCCustomInserterPseudo<(outs crbitrc:$dst), (ins g8rc:$in),
"#ANDI_rec_1_GT_BIT8",
[(set i1:$dst, (trunc i64:$in))]>;
+}
def : Pat<(i1 (not (trunc i32:$in))),
(ANDI_rec_1_EQ_BIT $in)>;
More information about the llvm-commits
mailing list