[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