From cf2633d6f7e9c50702bf148c16ecab5fd5f67c69 Mon Sep 17 00:00:00 2001 From: zhijian Date: Mon, 28 Jul 2025 18:30:13 +0000 Subject: [PATCH 1/7] [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 Date: Mon, 28 Jul 2025 19:16:48 +0000 Subject: [PATCH 2/7] 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 Date: Mon, 28 Jul 2025 19:46:53 +0000 Subject: [PATCH 3/7] 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 Date: Wed, 30 Jul 2025 20:02:01 +0000 Subject: [PATCH 4/7] 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 Date: Wed, 30 Jul 2025 20:16:05 +0000 Subject: [PATCH 5/7] 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 } From 48381d25d80a785b513d489116b8a860e1c1b57f Mon Sep 17 00:00:00 2001 From: zhijian Date: Wed, 6 Aug 2025 14:30:46 +0000 Subject: [PATCH 6/7] remove -verify-machineinstrs from test case --- llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll index d4ce9dd80c2e2..d4a60bd4acc0d 100644 --- a/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll +++ b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll @@ -1,6 +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 +; RUN: llc -mtriple=powerpc64-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECK +; RUN: llc -mtriple=powerpc-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECKBE 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: From 5f360fe7fb4183d234d88bef6d8fd0fce356738a Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Tue, 12 Aug 2025 20:29:36 +0900 Subject: [PATCH 7/7] whitespace fix --- llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll index d4a60bd4acc0d..585ce89e9aa46 100644 --- a/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll +++ b/llvm/test/CodeGen/PowerPC/ppc_reduce_cr_logicals.ll @@ -1,6 +1,6 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc -mtriple=powerpc64-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECK -; RUN: llc -mtriple=powerpc-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECKBE +; RUN: llc -mtriple=powerpc64-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECK +; RUN: llc -mtriple=powerpc-unknown-gnu-linux < %s | FileCheck %s -check-prefix=CHECKBE 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: