[llvm] [PowerPC] need to set CallFrameSize for the pass PPCReduceCRLogicals when insert a new block (PR #151017)
zhijian lin via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 30 13:53:12 PDT 2025
https://github.com/diggerlin updated https://github.com/llvm/llvm-project/pull/151017
>From cf2633d6f7e9c50702bf148c16ecab5fd5f67c69 Mon Sep 17 00:00:00 2001
From: zhijian <zhijian at ca.ibm.com>
Date: Mon, 28 Jul 2025 18:30:13 +0000
Subject: [PATCH 1/5] [PowerPC] need to set CallFrameSize for the pass
PPCReduceCRLogicals when insert a new block
---
.../Target/PowerPC/PPCReduceCRLogicals.cpp | 5 ++
.../CodeGen/PowerPC/ppc_reduce_cr_logicals.ll | 75 +++++++++++++++++++
2 files changed, 80 insertions(+)
create mode 100644 llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
diff --git a/llvm/lib/Target/PowerPC/PPCReduceCRLogicals.cpp b/llvm/lib/Target/PowerPC/PPCReduceCRLogicals.cpp
index 0ffd35dfa279c..f83b2fb8e65a2 100644
--- a/llvm/lib/Target/PowerPC/PPCReduceCRLogicals.cpp
+++ b/llvm/lib/Target/PowerPC/PPCReduceCRLogicals.cpp
@@ -248,6 +248,11 @@ static bool splitMBB(BlockSplitInfo &BSI) {
}
addIncomingValuesToPHIs(NewBRTarget, ThisMBB, NewMBB, MRI);
+ // Set the call frame size on ThisMBB to the new basic blocks.
+ // See https://reviews.llvm.org/D156113.
+ unsigned CallFrameSize = TII->getCallFrameSizeAt(ThisMBB->back());
+ NewMBB->setCallFrameSize(CallFrameSize);
+
LLVM_DEBUG(dbgs() << "After splitting, ThisMBB:\n"; ThisMBB->dump());
LLVM_DEBUG(dbgs() << "NewMBB:\n"; NewMBB->dump());
LLVM_DEBUG(dbgs() << "New branch-to block:\n"; NewBRTarget->dump());
diff --git a/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
new file mode 100644
index 0000000000000..7502991a58cc4
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
@@ -0,0 +1,75 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECK
+
+define ptr @xe_migrate_copy(i1 %tobool, i1 %tobool6) {
+; CHECK-LABEL: xe_migrate_copy:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: mfcr 12
+; CHECK-NEXT: stw 12, 8(1)
+; CHECK-NEXT: mflr 0
+; CHECK-NEXT: stdu 1, -176(1)
+; CHECK-NEXT: std 0, 192(1)
+; CHECK-NEXT: .cfi_def_cfa_offset 176
+; CHECK-NEXT: .cfi_offset lr, 16
+; CHECK-NEXT: .cfi_offset r27, -40
+; CHECK-NEXT: .cfi_offset r28, -32
+; CHECK-NEXT: .cfi_offset r29, -24
+; CHECK-NEXT: .cfi_offset r30, -16
+; CHECK-NEXT: .cfi_offset cr2, 8
+; CHECK-NEXT: std 27, 136(1) # 8-byte Folded Spill
+; CHECK-NEXT: andi. 4, 4, 1
+; CHECK-NEXT: crmove 8, 1
+; CHECK-NEXT: andi. 3, 3, 1
+; CHECK-NEXT: std 28, 144(1) # 8-byte Folded Spill
+; CHECK-NEXT: crmove 9, 1
+; CHECK-NEXT: std 29, 152(1) # 8-byte Folded Spill
+; CHECK-NEXT: std 30, 160(1) # 8-byte Folded Spill
+; CHECK-NEXT: lwz 30, 132(1)
+; CHECK-NEXT: ld 28, 8(0)
+; CHECK-NEXT: ld 29, 16(0)
+; CHECK-NEXT: ld 27, 0(0)
+; CHECK-NEXT: std 2, 40(1)
+; CHECK-NEXT: b .LBB0_3
+; CHECK-NEXT: .LBB0_1: # %if.then36
+; CHECK-NEXT: #
+; CHECK-NEXT: li 6, 1
+; CHECK-NEXT: .LBB0_2: # %if.then36
+; CHECK-NEXT: #
+; CHECK-NEXT: mtctr 27
+; CHECK-NEXT: li 4, 0
+; CHECK-NEXT: li 5, 0
+; CHECK-NEXT: li 7, 0
+; CHECK-NEXT: li 8, 0
+; CHECK-NEXT: mr 9, 30
+; CHECK-NEXT: li 10, 0
+; CHECK-NEXT: mr 2, 28
+; CHECK-NEXT: mr 11, 29
+; CHECK-NEXT: bctrl
+; CHECK-NEXT: ld 2, 40(1)
+; CHECK-NEXT: .LBB0_3: # %if.then36
+; CHECK-NEXT: #
+; CHECK-NEXT: lwz 3, 0(0)
+; CHECK-NEXT: cmplwi 3, 0
+; CHECK-NEXT: li 3, 0
+; CHECK-NEXT: crandc 20, 8, 2
+; CHECK-NEXT: std 3, 112(1)
+; CHECK-NEXT: bc 12, 20, .LBB0_1
+; CHECK-NEXT: # %bb.4: # %if.then36
+; CHECK-NEXT: #
+; CHECK-NEXT: crand 20, 2, 9
+; CHECK-NEXT: li 6, 0
+; CHECK-NEXT: bc 4, 20, .LBB0_2
+; CHECK-NEXT: b .LBB0_1
+entry:
+ %src_L0 = alloca i64, align 8
+ br label %if.then36
+
+if.then36: ; preds = %if.then36, %entry
+ %0 = load i32, ptr null, align 4
+ %tobool37.not = icmp eq i32 %0, 0
+ %tobool.tobool6 = select i1 %tobool37.not, i1 %tobool, i1 %tobool6
+ %1 = load i64, ptr %src_L0, align 8
+ %conv55 = trunc i64 %1 to i32
+ %call57 = call i32 null(ptr null, ptr null, i64 0, i1 %tobool.tobool6, i64 0, i1 false, i32 %conv55, i64 0, i1 false)
+ br label %if.then36
+}
>From d53afd8b333ca3de10f04c07407047e95fb8338d Mon Sep 17 00:00:00 2001
From: zhijian <zhijian at ca.ibm.com>
Date: Mon, 28 Jul 2025 19:16:48 +0000
Subject: [PATCH 2/5] address comment
---
llvm/lib/Target/PowerPC/PPCReduceCRLogicals.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/llvm/lib/Target/PowerPC/PPCReduceCRLogicals.cpp b/llvm/lib/Target/PowerPC/PPCReduceCRLogicals.cpp
index f83b2fb8e65a2..74bce436b53e7 100644
--- a/llvm/lib/Target/PowerPC/PPCReduceCRLogicals.cpp
+++ b/llvm/lib/Target/PowerPC/PPCReduceCRLogicals.cpp
@@ -250,8 +250,7 @@ static bool splitMBB(BlockSplitInfo &BSI) {
// Set the call frame size on ThisMBB to the new basic blocks.
// See https://reviews.llvm.org/D156113.
- unsigned CallFrameSize = TII->getCallFrameSizeAt(ThisMBB->back());
- NewMBB->setCallFrameSize(CallFrameSize);
+ NewMBB->setCallFrameSize(TII->getCallFrameSizeAt(ThisMBB->back()));
LLVM_DEBUG(dbgs() << "After splitting, ThisMBB:\n"; ThisMBB->dump());
LLVM_DEBUG(dbgs() << "NewMBB:\n"; NewMBB->dump());
>From f4edf6f4e7b19f71bf6681a87c5acb8cbf72bb10 Mon Sep 17 00:00:00 2001
From: zhijian <zhijian at ca.ibm.com>
Date: Mon, 28 Jul 2025 19:46:53 +0000
Subject: [PATCH 3/5] add 32-bit powerpc be test scenario
---
.../CodeGen/PowerPC/ppc_reduce_cr_logicals.ll | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
index 7502991a58cc4..39712d0e3ad0f 100644
--- a/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
+++ b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
@@ -1,5 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECK
+; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECKBE
define ptr @xe_migrate_copy(i1 %tobool, i1 %tobool6) {
; CHECK-LABEL: xe_migrate_copy:
@@ -60,6 +61,54 @@ define ptr @xe_migrate_copy(i1 %tobool, i1 %tobool6) {
; CHECK-NEXT: li 6, 0
; CHECK-NEXT: bc 4, 20, .LBB0_2
; CHECK-NEXT: b .LBB0_1
+;
+; CHECKBE-LABEL: xe_migrate_copy:
+; CHECKBE: # %bb.0: # %entry
+; CHECKBE-NEXT: mflr 0
+; CHECKBE-NEXT: stwu 1, -64(1)
+; CHECKBE-NEXT: stw 0, 68(1)
+; CHECKBE-NEXT: .cfi_def_cfa_offset 64
+; CHECKBE-NEXT: .cfi_offset lr, 4
+; CHECKBE-NEXT: .cfi_offset r30, -8
+; CHECKBE-NEXT: .cfi_offset cr2, -12
+; CHECKBE-NEXT: mfcr 12
+; CHECKBE-NEXT: stw 30, 56(1) # 4-byte Folded Spill
+; CHECKBE-NEXT: andi. 4, 4, 1
+; CHECKBE-NEXT: stw 12, 52(1)
+; CHECKBE-NEXT: crmove 8, 1
+; CHECKBE-NEXT: lwz 30, 44(1)
+; CHECKBE-NEXT: andi. 3, 3, 1
+; CHECKBE-NEXT: crmove 9, 1
+; CHECKBE-NEXT: b .LBB0_3
+; CHECKBE-NEXT: .LBB0_1: # %if.then36
+; CHECKBE-NEXT: #
+; CHECKBE-NEXT: li 7, 1
+; CHECKBE-NEXT: .LBB0_2: # %if.then36
+; CHECKBE-NEXT: #
+; CHECKBE-NEXT: li 4, 0
+; CHECKBE-NEXT: li 5, 0
+; CHECKBE-NEXT: li 6, 0
+; CHECKBE-NEXT: li 9, 0
+; CHECKBE-NEXT: li 10, 0
+; CHECKBE-NEXT: bla 0x0
+; CHECKBE-NEXT: .LBB0_3: # %if.then36
+; CHECKBE-NEXT: #
+; CHECKBE-NEXT: lwz 3, 0(0)
+; CHECKBE-NEXT: stw 30, 12(1)
+; CHECKBE-NEXT: cmplwi 3, 0
+; CHECKBE-NEXT: crandc 20, 8, 2
+; CHECKBE-NEXT: li 3, 0
+; CHECKBE-NEXT: stw 3, 24(1)
+; CHECKBE-NEXT: stw 3, 20(1)
+; CHECKBE-NEXT: stw 3, 16(1)
+; CHECKBE-NEXT: stw 3, 8(1)
+; CHECKBE-NEXT: bc 12, 20, .LBB0_1
+; CHECKBE-NEXT: # %bb.4: # %if.then36
+; CHECKBE-NEXT: #
+; CHECKBE-NEXT: crand 20, 2, 9
+; CHECKBE-NEXT: li 7, 0
+; CHECKBE-NEXT: bc 4, 20, .LBB0_2
+; CHECKBE-NEXT: b .LBB0_1
entry:
%src_L0 = alloca i64, align 8
br label %if.then36
>From 248fb8bfeb090804cda24f6f908aad55ee2cdb6c Mon Sep 17 00:00:00 2001
From: zhijian <zhijian at ca.ibm.com>
Date: Wed, 30 Jul 2025 20:02:01 +0000
Subject: [PATCH 4/5] address comment
---
.../CodeGen/PowerPC/ppc_reduce_cr_logicals.ll | 165 +++++++-----------
1 file changed, 65 insertions(+), 100 deletions(-)
diff --git a/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
index 39712d0e3ad0f..233431880633b 100644
--- a/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
+++ b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
@@ -2,123 +2,88 @@
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECK
; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECKBE
-define ptr @xe_migrate_copy(i1 %tobool, i1 %tobool6) {
+define i32 @xe_migrate_copy(ptr %m, ptr %dst, ptr %tile, ptr %0, ptr %primary_gt, i1 %tobool4, i1 %tobool9, i64 %1, i32 %conv55, i1 %tobool37.not) nounwind {
; CHECK-LABEL: xe_migrate_copy:
; CHECK: # %bb.0: # %entry
-; CHECK-NEXT: mfcr 12
-; CHECK-NEXT: stw 12, 8(1)
; CHECK-NEXT: mflr 0
-; CHECK-NEXT: stdu 1, -176(1)
-; CHECK-NEXT: std 0, 192(1)
-; CHECK-NEXT: .cfi_def_cfa_offset 176
-; CHECK-NEXT: .cfi_offset lr, 16
-; CHECK-NEXT: .cfi_offset r27, -40
-; CHECK-NEXT: .cfi_offset r28, -32
-; CHECK-NEXT: .cfi_offset r29, -24
-; CHECK-NEXT: .cfi_offset r30, -16
-; CHECK-NEXT: .cfi_offset cr2, 8
-; CHECK-NEXT: std 27, 136(1) # 8-byte Folded Spill
-; CHECK-NEXT: andi. 4, 4, 1
-; CHECK-NEXT: crmove 8, 1
+; CHECK-NEXT: stdu 1, -128(1)
+; CHECK-NEXT: lbz 3, 255(1)
; CHECK-NEXT: andi. 3, 3, 1
-; CHECK-NEXT: std 28, 144(1) # 8-byte Folded Spill
-; CHECK-NEXT: crmove 9, 1
-; CHECK-NEXT: std 29, 152(1) # 8-byte Folded Spill
-; CHECK-NEXT: std 30, 160(1) # 8-byte Folded Spill
-; CHECK-NEXT: lwz 30, 132(1)
-; CHECK-NEXT: ld 28, 8(0)
-; CHECK-NEXT: ld 29, 16(0)
-; CHECK-NEXT: ld 27, 0(0)
-; CHECK-NEXT: std 2, 40(1)
-; CHECK-NEXT: b .LBB0_3
-; CHECK-NEXT: .LBB0_1: # %if.then36
-; CHECK-NEXT: #
-; CHECK-NEXT: li 6, 1
-; CHECK-NEXT: .LBB0_2: # %if.then36
-; CHECK-NEXT: #
-; CHECK-NEXT: mtctr 27
+; CHECK-NEXT: std 0, 144(1)
+; CHECK-NEXT: crmove 20, 1
+; CHECK-NEXT: andi. 3, 9, 1
+; CHECK-NEXT: lwz 9, 244(1)
+; CHECK-NEXT: crmove 21, 1
+; CHECK-NEXT: andi. 3, 8, 1
+; CHECK-NEXT: li 3, 0
+; CHECK-NEXT: std 3, 112(1)
+; CHECK-NEXT: crandc 21, 21, 20
+; CHECK-NEXT: bc 12, 21, .LBB0_2
+; CHECK-NEXT: # %bb.1: # %while.body
+; CHECK-NEXT: crand 20, 20, 1
+; CHECK-NEXT: li 8, 0
+; CHECK-NEXT: bc 4, 20, .LBB0_3
+; CHECK-NEXT: .LBB0_2: # %while.body
+; CHECK-NEXT: li 8, 1
+; CHECK-NEXT: .LBB0_3: # %while.body
; CHECK-NEXT: li 4, 0
; CHECK-NEXT: li 5, 0
+; CHECK-NEXT: li 6, 0
; CHECK-NEXT: li 7, 0
-; CHECK-NEXT: li 8, 0
-; CHECK-NEXT: mr 9, 30
; CHECK-NEXT: li 10, 0
-; CHECK-NEXT: mr 2, 28
-; CHECK-NEXT: mr 11, 29
-; CHECK-NEXT: bctrl
-; CHECK-NEXT: ld 2, 40(1)
-; CHECK-NEXT: .LBB0_3: # %if.then36
-; CHECK-NEXT: #
-; CHECK-NEXT: lwz 3, 0(0)
-; CHECK-NEXT: cmplwi 3, 0
-; CHECK-NEXT: li 3, 0
-; CHECK-NEXT: crandc 20, 8, 2
-; CHECK-NEXT: std 3, 112(1)
-; CHECK-NEXT: bc 12, 20, .LBB0_1
-; CHECK-NEXT: # %bb.4: # %if.then36
-; CHECK-NEXT: #
-; CHECK-NEXT: crand 20, 2, 9
-; CHECK-NEXT: li 6, 0
-; CHECK-NEXT: bc 4, 20, .LBB0_2
-; CHECK-NEXT: b .LBB0_1
+; CHECK-NEXT: bl xe_migrate_ccs_copy
+; CHECK-NEXT: nop
+; CHECK-NEXT: addi 1, 1, 128
+; CHECK-NEXT: ld 0, 16(1)
+; CHECK-NEXT: mtlr 0
+; CHECK-NEXT: blr
;
; CHECKBE-LABEL: xe_migrate_copy:
; CHECKBE: # %bb.0: # %entry
; CHECKBE-NEXT: mflr 0
-; CHECKBE-NEXT: stwu 1, -64(1)
-; CHECKBE-NEXT: stw 0, 68(1)
-; CHECKBE-NEXT: .cfi_def_cfa_offset 64
-; CHECKBE-NEXT: .cfi_offset lr, 4
-; CHECKBE-NEXT: .cfi_offset r30, -8
-; CHECKBE-NEXT: .cfi_offset cr2, -12
-; CHECKBE-NEXT: mfcr 12
-; CHECKBE-NEXT: stw 30, 56(1) # 4-byte Folded Spill
-; CHECKBE-NEXT: andi. 4, 4, 1
-; CHECKBE-NEXT: stw 12, 52(1)
-; CHECKBE-NEXT: crmove 8, 1
-; CHECKBE-NEXT: lwz 30, 44(1)
-; CHECKBE-NEXT: andi. 3, 3, 1
-; CHECKBE-NEXT: crmove 9, 1
-; CHECKBE-NEXT: b .LBB0_3
-; CHECKBE-NEXT: .LBB0_1: # %if.then36
-; CHECKBE-NEXT: #
-; CHECKBE-NEXT: li 7, 1
-; CHECKBE-NEXT: .LBB0_2: # %if.then36
-; CHECKBE-NEXT: #
+; CHECKBE-NEXT: stwu 1, -32(1)
+; CHECKBE-NEXT: lbz 3, 55(1)
; CHECKBE-NEXT: li 4, 0
+; CHECKBE-NEXT: stw 0, 36(1)
+; CHECKBE-NEXT: andi. 3, 3, 1
+; CHECKBE-NEXT: crmove 20, 1
+; CHECKBE-NEXT: andi. 3, 9, 1
+; CHECKBE-NEXT: crmove 21, 1
+; CHECKBE-NEXT: andi. 3, 8, 1
+; CHECKBE-NEXT: lwz 3, 48(1)
+; CHECKBE-NEXT: crandc 21, 21, 20
+; CHECKBE-NEXT: stw 4, 24(1)
+; CHECKBE-NEXT: stw 4, 20(1)
+; CHECKBE-NEXT: stw 4, 16(1)
+; CHECKBE-NEXT: stw 3, 12(1)
+; CHECKBE-NEXT: bc 12, 21, .LBB0_2
+; CHECKBE-NEXT: # %bb.1: # %while.body
+; CHECKBE-NEXT: crand 20, 20, 1
+; CHECKBE-NEXT: li 8, 0
+; CHECKBE-NEXT: bc 4, 20, .LBB0_3
+; CHECKBE-NEXT: .LBB0_2: # %while.body
+; CHECKBE-NEXT: li 8, 1
+; CHECKBE-NEXT: .LBB0_3: # %while.body
+; CHECKBE-NEXT: li 3, 0
; CHECKBE-NEXT: li 5, 0
; CHECKBE-NEXT: li 6, 0
+; CHECKBE-NEXT: li 7, 0
; CHECKBE-NEXT: li 9, 0
; CHECKBE-NEXT: li 10, 0
-; CHECKBE-NEXT: bla 0x0
-; CHECKBE-NEXT: .LBB0_3: # %if.then36
-; CHECKBE-NEXT: #
-; CHECKBE-NEXT: lwz 3, 0(0)
-; CHECKBE-NEXT: stw 30, 12(1)
-; CHECKBE-NEXT: cmplwi 3, 0
-; CHECKBE-NEXT: crandc 20, 8, 2
-; CHECKBE-NEXT: li 3, 0
-; CHECKBE-NEXT: stw 3, 24(1)
-; CHECKBE-NEXT: stw 3, 20(1)
-; CHECKBE-NEXT: stw 3, 16(1)
-; CHECKBE-NEXT: stw 3, 8(1)
-; CHECKBE-NEXT: bc 12, 20, .LBB0_1
-; CHECKBE-NEXT: # %bb.4: # %if.then36
-; CHECKBE-NEXT: #
-; CHECKBE-NEXT: crand 20, 2, 9
-; CHECKBE-NEXT: li 7, 0
-; CHECKBE-NEXT: bc 4, 20, .LBB0_2
-; CHECKBE-NEXT: b .LBB0_1
+; CHECKBE-NEXT: stw 8, 8(1)
+; CHECKBE-NEXT: bl xe_migrate_ccs_copy
+; CHECKBE-NEXT: lwz 0, 36(1)
+; CHECKBE-NEXT: addi 1, 1, 32
+; CHECKBE-NEXT: mtlr 0
+; CHECKBE-NEXT: blr
+
entry:
- %src_L0 = alloca i64, align 8
- br label %if.then36
+ br label %while.body
-if.then36: ; preds = %if.then36, %entry
- %0 = load i32, ptr null, align 4
- %tobool37.not = icmp eq i32 %0, 0
- %tobool.tobool6 = select i1 %tobool37.not, i1 %tobool, i1 %tobool6
- %1 = load i64, ptr %src_L0, align 8
- %conv55 = trunc i64 %1 to i32
- %call57 = call i32 null(ptr null, ptr null, i64 0, i1 %tobool.tobool6, i64 0, i1 false, i32 %conv55, i64 0, i1 false)
- br label %if.then36
+while.body:
+ %cond53.in = select i1 %tobool37.not, i1 %tobool4, i1 %tobool9
+ %call57 = call zeroext i32 @xe_migrate_ccs_copy(ptr noundef null, ptr noundef null, i64 0, i1 false, i64 0, i1 %cond53.in, i32 %conv55, i64 0, i1 false)
+ ret i32 %call57
}
+
+declare i32 @xe_migrate_ccs_copy(ptr, ptr, i64, i1, i64, i1, i32, i64, i1)
>From 30258cb77a339b422a7a8506313ac9179d65951c Mon Sep 17 00:00:00 2001
From: zhijian <zhijian at ca.ibm.com>
Date: Wed, 30 Jul 2025 20:16:05 +0000
Subject: [PATCH 5/5] get rid of `ptr noundef null` in test case
---
.../CodeGen/PowerPC/ppc_reduce_cr_logicals.ll | 39 +++++++++----------
1 file changed, 19 insertions(+), 20 deletions(-)
diff --git a/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
index 233431880633b..d4ce9dd80c2e2 100644
--- a/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
+++ b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll
@@ -7,16 +7,16 @@ define i32 @xe_migrate_copy(ptr %m, ptr %dst, ptr %tile, ptr %0, ptr %primary_gt
; CHECK: # %bb.0: # %entry
; CHECK-NEXT: mflr 0
; CHECK-NEXT: stdu 1, -128(1)
-; CHECK-NEXT: lbz 3, 255(1)
-; CHECK-NEXT: andi. 3, 3, 1
+; CHECK-NEXT: lbz 4, 255(1)
+; CHECK-NEXT: andi. 4, 4, 1
; CHECK-NEXT: std 0, 144(1)
; CHECK-NEXT: crmove 20, 1
-; CHECK-NEXT: andi. 3, 9, 1
+; CHECK-NEXT: andi. 4, 9, 1
; CHECK-NEXT: lwz 9, 244(1)
; CHECK-NEXT: crmove 21, 1
-; CHECK-NEXT: andi. 3, 8, 1
-; CHECK-NEXT: li 3, 0
-; CHECK-NEXT: std 3, 112(1)
+; CHECK-NEXT: andi. 4, 8, 1
+; CHECK-NEXT: li 4, 0
+; CHECK-NEXT: std 4, 112(1)
; CHECK-NEXT: crandc 21, 21, 20
; CHECK-NEXT: bc 12, 21, .LBB0_2
; CHECK-NEXT: # %bb.1: # %while.body
@@ -26,9 +26,9 @@ define i32 @xe_migrate_copy(ptr %m, ptr %dst, ptr %tile, ptr %0, ptr %primary_gt
; CHECK-NEXT: .LBB0_2: # %while.body
; CHECK-NEXT: li 8, 1
; CHECK-NEXT: .LBB0_3: # %while.body
-; CHECK-NEXT: li 4, 0
; CHECK-NEXT: li 5, 0
; CHECK-NEXT: li 6, 0
+; CHECK-NEXT: mr 4, 3
; CHECK-NEXT: li 7, 0
; CHECK-NEXT: li 10, 0
; CHECK-NEXT: bl xe_migrate_ccs_copy
@@ -42,20 +42,20 @@ define i32 @xe_migrate_copy(ptr %m, ptr %dst, ptr %tile, ptr %0, ptr %primary_gt
; CHECKBE: # %bb.0: # %entry
; CHECKBE-NEXT: mflr 0
; CHECKBE-NEXT: stwu 1, -32(1)
-; CHECKBE-NEXT: lbz 3, 55(1)
-; CHECKBE-NEXT: li 4, 0
+; CHECKBE-NEXT: lbz 4, 55(1)
+; CHECKBE-NEXT: li 5, 0
; CHECKBE-NEXT: stw 0, 36(1)
-; CHECKBE-NEXT: andi. 3, 3, 1
+; CHECKBE-NEXT: andi. 4, 4, 1
; CHECKBE-NEXT: crmove 20, 1
-; CHECKBE-NEXT: andi. 3, 9, 1
+; CHECKBE-NEXT: andi. 4, 9, 1
; CHECKBE-NEXT: crmove 21, 1
-; CHECKBE-NEXT: andi. 3, 8, 1
-; CHECKBE-NEXT: lwz 3, 48(1)
+; CHECKBE-NEXT: andi. 4, 8, 1
+; CHECKBE-NEXT: lwz 4, 48(1)
; CHECKBE-NEXT: crandc 21, 21, 20
-; CHECKBE-NEXT: stw 4, 24(1)
-; CHECKBE-NEXT: stw 4, 20(1)
-; CHECKBE-NEXT: stw 4, 16(1)
-; CHECKBE-NEXT: stw 3, 12(1)
+; CHECKBE-NEXT: stw 5, 24(1)
+; CHECKBE-NEXT: stw 5, 20(1)
+; CHECKBE-NEXT: stw 5, 16(1)
+; CHECKBE-NEXT: stw 4, 12(1)
; CHECKBE-NEXT: bc 12, 21, .LBB0_2
; CHECKBE-NEXT: # %bb.1: # %while.body
; CHECKBE-NEXT: crand 20, 20, 1
@@ -64,8 +64,7 @@ define i32 @xe_migrate_copy(ptr %m, ptr %dst, ptr %tile, ptr %0, ptr %primary_gt
; CHECKBE-NEXT: .LBB0_2: # %while.body
; CHECKBE-NEXT: li 8, 1
; CHECKBE-NEXT: .LBB0_3: # %while.body
-; CHECKBE-NEXT: li 3, 0
-; CHECKBE-NEXT: li 5, 0
+; CHECKBE-NEXT: mr 4, 3
; CHECKBE-NEXT: li 6, 0
; CHECKBE-NEXT: li 7, 0
; CHECKBE-NEXT: li 9, 0
@@ -82,7 +81,7 @@ entry:
while.body:
%cond53.in = select i1 %tobool37.not, i1 %tobool4, i1 %tobool9
- %call57 = call zeroext i32 @xe_migrate_ccs_copy(ptr noundef null, ptr noundef null, i64 0, i1 false, i64 0, i1 %cond53.in, i32 %conv55, i64 0, i1 false)
+ %call57 = call zeroext i32 @xe_migrate_ccs_copy(ptr noundef %m, ptr noundef %m, i64 0, i1 false, i64 0, i1 %cond53.in, i32 %conv55, i64 0, i1 false)
ret i32 %call57
}
More information about the llvm-commits
mailing list