[llvm] [PowerPC] Turn string pooling on by default. (PR #65628)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 7 09:01:07 PDT 2023
https://github.com/stefanp-ibm created https://github.com/llvm/llvm-project/pull/65628:
This patch turns the string pooling pass on by default. Some tests are updated as required.
>From b01ed359e2f4ebbd350d2109ba5bb5f52536198e Mon Sep 17 00:00:00 2001
From: Stefan Pintilie <stefanp at ca.ibm.com>
Date: Wed, 6 Sep 2023 20:30:56 -0500
Subject: [PATCH] [PowerPC] Turn string pooling on by default.
This patch turns the string pooling pass on by default.
Some tests are updated as required.
---
llvm/lib/Target/PowerPC/PPCTargetMachine.cpp | 2 +-
llvm/test/CodeGen/PowerPC/O3-pipeline.ll | 3 ++
.../CodeGen/PowerPC/PR35812-neg-cmpxchg.ll | 28 +++++++++++--------
llvm/test/CodeGen/PowerPC/licm-remat.ll | 9 ++----
.../PowerPC/mergeable-string-pool-large.ll | 8 +++---
.../CodeGen/PowerPC/mergeable-string-pool.ll | 8 +++---
.../CodeGen/PowerPC/toc-load-sched-bug.ll | 4 +--
7 files changed, 33 insertions(+), 29 deletions(-)
diff --git a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
index 52bbfeaad1b528..eaef4bf467c058 100644
--- a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
+++ b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
@@ -103,7 +103,7 @@ static cl::opt<bool>
static cl::opt<bool> MergeStringPool(
"ppc-merge-string-pool",
cl::desc("Merge all of the strings in a module into one pool"),
- cl::init(false), cl::Hidden);
+ cl::init(true), cl::Hidden);
static cl::opt<bool> EnablePPCGenScalarMASSEntries(
"enable-ppc-gen-scalar-mass", cl::init(false),
diff --git a/llvm/test/CodeGen/PowerPC/O3-pipeline.ll b/llvm/test/CodeGen/PowerPC/O3-pipeline.ll
index f329f1a69128be..16cb7596cd6057 100644
--- a/llvm/test/CodeGen/PowerPC/O3-pipeline.ll
+++ b/llvm/test/CodeGen/PowerPC/O3-pipeline.ll
@@ -71,6 +71,9 @@
; CHECK-NEXT: CodeGen Prepare
; CHECK-NEXT: Dominator Tree Construction
; CHECK-NEXT: Exception handling preparation
+; CHECK-NEXT: PPC Merge String Pool
+; CHECK-NEXT: FunctionPass Manager
+; CHECK-NEXT: Dominator Tree Construction
; CHECK-NEXT: Natural Loop Information
; CHECK-NEXT: Scalar Evolution Analysis
; CHECK-NEXT: Prepare loop for ppc preferred instruction forms
diff --git a/llvm/test/CodeGen/PowerPC/PR35812-neg-cmpxchg.ll b/llvm/test/CodeGen/PowerPC/PR35812-neg-cmpxchg.ll
index 649aaf404b8c36..924a2dec8b6996 100644
--- a/llvm/test/CodeGen/PowerPC/PR35812-neg-cmpxchg.ll
+++ b/llvm/test/CodeGen/PowerPC/PR35812-neg-cmpxchg.ll
@@ -39,19 +39,21 @@ define signext i32 @main() nounwind {
; CHECK-NEXT: cmplwi 3, 234
; CHECK-NEXT: bne 0, .LBB0_7
; CHECK-NEXT: # %bb.5: # %L.B0001
-; CHECK-NEXT: addis 3, 2, .Lstr.2 at toc@ha
-; CHECK-NEXT: addi 3, 3, .Lstr.2 at toc@l
+; CHECK-NEXT: addis 3, 2, .L__ModuleStringPool at toc@ha
+; CHECK-NEXT: addi 3, 3, .L__ModuleStringPool at toc@l
; CHECK-NEXT: bl puts
; CHECK-NEXT: nop
; CHECK-NEXT: li 3, 0
; CHECK-NEXT: b .LBB0_9
; CHECK-NEXT: .LBB0_6: # %L.B0003
-; CHECK-NEXT: addis 3, 2, .Lstr at toc@ha
-; CHECK-NEXT: addi 3, 3, .Lstr at toc@l
+; CHECK-NEXT: addis 3, 2, .L__ModuleStringPool at toc@ha
+; CHECK-NEXT: addi 3, 3, .L__ModuleStringPool at toc@l
+; CHECK-NEXT: addi 3, 3, 7
; CHECK-NEXT: b .LBB0_8
; CHECK-NEXT: .LBB0_7: # %L.B0005
-; CHECK-NEXT: addis 3, 2, .Lstr.1 at toc@ha
-; CHECK-NEXT: addi 3, 3, .Lstr.1 at toc@l
+; CHECK-NEXT: addis 3, 2, .L__ModuleStringPool at toc@ha
+; CHECK-NEXT: addi 3, 3, .L__ModuleStringPool at toc@l
+; CHECK-NEXT: addi 3, 3, 53
; CHECK-NEXT: .LBB0_8: # %L.B0003
; CHECK-NEXT: bl puts
; CHECK-NEXT: nop
@@ -105,19 +107,21 @@ define signext i32 @main() nounwind {
; CHECK-P7-NEXT: cmplwi 3, 234
; CHECK-P7-NEXT: bne 0, .LBB0_7
; CHECK-P7-NEXT: # %bb.5: # %L.B0001
-; CHECK-P7-NEXT: addis 3, 2, .Lstr.2 at toc@ha
-; CHECK-P7-NEXT: addi 3, 3, .Lstr.2 at toc@l
+; CHECK-P7-NEXT: addis 3, 2, .L__ModuleStringPool at toc@ha
+; CHECK-P7-NEXT: addi 3, 3, .L__ModuleStringPool at toc@l
; CHECK-P7-NEXT: bl puts
; CHECK-P7-NEXT: nop
; CHECK-P7-NEXT: li 3, 0
; CHECK-P7-NEXT: b .LBB0_9
; CHECK-P7-NEXT: .LBB0_6: # %L.B0003
-; CHECK-P7-NEXT: addis 3, 2, .Lstr at toc@ha
-; CHECK-P7-NEXT: addi 3, 3, .Lstr at toc@l
+; CHECK-P7-NEXT: addis 3, 2, .L__ModuleStringPool at toc@ha
+; CHECK-P7-NEXT: addi 3, 3, .L__ModuleStringPool at toc@l
+; CHECK-P7-NEXT: addi 3, 3, 7
; CHECK-P7-NEXT: b .LBB0_8
; CHECK-P7-NEXT: .LBB0_7: # %L.B0005
-; CHECK-P7-NEXT: addis 3, 2, .Lstr.1 at toc@ha
-; CHECK-P7-NEXT: addi 3, 3, .Lstr.1 at toc@l
+; CHECK-P7-NEXT: addis 3, 2, .L__ModuleStringPool at toc@ha
+; CHECK-P7-NEXT: addi 3, 3, .L__ModuleStringPool at toc@l
+; CHECK-P7-NEXT: addi 3, 3, 53
; CHECK-P7-NEXT: .LBB0_8: # %L.B0003
; CHECK-P7-NEXT: bl puts
; CHECK-P7-NEXT: nop
diff --git a/llvm/test/CodeGen/PowerPC/licm-remat.ll b/llvm/test/CodeGen/PowerPC/licm-remat.ll
index 5ece3560aa246e..b1944a7107c1bf 100644
--- a/llvm/test/CodeGen/PowerPC/licm-remat.ll
+++ b/llvm/test/CodeGen/PowerPC/licm-remat.ll
@@ -20,13 +20,10 @@ declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture reado
define linkonce_odr void @ZN6snappyDecompressor_(ptr %this, ptr %writer) {
; CHECK-LABEL: ZN6snappyDecompressor_:
; CHECK: # %bb.0: # %entry
-; CHECK: addis 3, 2, _ZN6snappy8internalL8wordmaskE at toc@ha
-; CHECK-DAG: addi 25, 3, _ZN6snappy8internalL8wordmaskE at toc@l
-; CHECK-DAG: addis 5, 2, _ZN6snappy8internalL10char_tableE at toc@ha
-; CHECK-DAG: addi 24, 5, _ZN6snappy8internalL10char_tableE at toc@l
+; CHECK: addis 3, 2, .L__ModuleStringPool at toc@ha
+; CHECK: addi 25, 3, .L__ModuleStringPool at toc@l
; CHECK: .LBB0_2: # %for.cond
-; CHECK-NOT: addis {{[0-9]+}}, 2, _ZN6snappy8internalL8wordmaskE at toc@ha
-; CHECK-NOT: addis {{[0-9]+}}, 2, _ZN6snappy8internalL10char_tableE at toc@ha
+; CHECK-NOT: addis {{[0-9]+}}, 2, .L__ModuleStringPool at toc@ha
; CHECK: bctrl
entry:
%ip_limit_ = getelementptr inbounds %"class.snappy::SnappyDecompressor", ptr %this, i64 0, i32 2
diff --git a/llvm/test/CodeGen/PowerPC/mergeable-string-pool-large.ll b/llvm/test/CodeGen/PowerPC/mergeable-string-pool-large.ll
index b450475e8a66ef..1d42d27f37f6ed 100644
--- a/llvm/test/CodeGen/PowerPC/mergeable-string-pool-large.ll
+++ b/llvm/test/CodeGen/PowerPC/mergeable-string-pool-large.ll
@@ -1,12 +1,12 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr8 \
-; RUN: -ppc-merge-string-pool=true -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX32
+; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX32
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr8 \
-; RUN: -ppc-merge-string-pool=true -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX64
+; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX64
; RUN: llc -verify-machineinstrs -mtriple powerpc64-unknown-linux -mcpu=pwr8 \
-; RUN: -ppc-merge-string-pool=true -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64BE
+; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64BE
; RUN: llc -verify-machineinstrs -mtriple powerpc64le-unknown-linux -mcpu=pwr8 \
-; RUN: -ppc-merge-string-pool=true -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64LE
+; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64LE
@.str.1 = private unnamed_addr constant [12 x i8] c"str1_STRING\00", align 1
@__const.IntArray0 = private unnamed_addr constant [7 x i32] [i32 5, i32 7, i32 9, i32 11, i32 17, i32 1235, i32 32], align 4
diff --git a/llvm/test/CodeGen/PowerPC/mergeable-string-pool.ll b/llvm/test/CodeGen/PowerPC/mergeable-string-pool.ll
index 8e327d527574f6..441ec41e0d054d 100644
--- a/llvm/test/CodeGen/PowerPC/mergeable-string-pool.ll
+++ b/llvm/test/CodeGen/PowerPC/mergeable-string-pool.ll
@@ -1,11 +1,11 @@
; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr8 \
-; RUN: -ppc-merge-string-pool=true -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX32,AIXDATA
+; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX32,AIXDATA
; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr8 \
-; RUN: -ppc-merge-string-pool=true -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX64,AIXDATA
+; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=AIX64,AIXDATA
; RUN: llc -verify-machineinstrs -mtriple powerpc64-unknown-linux -mcpu=pwr8 \
-; RUN: -ppc-merge-string-pool=true -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64BE,LINUXDATA
+; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64BE,LINUXDATA
; RUN: llc -verify-machineinstrs -mtriple powerpc64le-unknown-linux -mcpu=pwr8 \
-; RUN: -ppc-merge-string-pool=true -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64LE,LINUXDATA
+; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefixes=LINUX64LE,LINUXDATA
;; This @GLOBALSTRING is a user of @.str which causes @.str to not get pooled.
diff --git a/llvm/test/CodeGen/PowerPC/toc-load-sched-bug.ll b/llvm/test/CodeGen/PowerPC/toc-load-sched-bug.ll
index f017d216d546cf..61e0a86340cc8a 100644
--- a/llvm/test/CodeGen/PowerPC/toc-load-sched-bug.ll
+++ b/llvm/test/CodeGen/PowerPC/toc-load-sched-bug.ll
@@ -164,8 +164,8 @@ entry:
; CHECK: .globl _ZN4llvm11ParseIRFileERKSsRNS_12SMDiagnosticERNS_11LLVMContextE
; CHECK: bctrl
; CHECK: ld 2, 24(1)
-; CHECK: addis [[REG:[0-9]+]], 2, .L.str at toc@ha
-; CHECK: addi {{[0-9]+}}, [[REG]], .L.str at toc@l
+; CHECK: addis [[REG:[0-9]+]], 2, .L__ModuleStringPool at toc@ha
+; CHECK: addi {{[0-9]+}}, [[REG]], .L__ModuleStringPool at toc@l
; CHECK: bl _ZNSs6insertEmPKcm
%.atomicdst.i.i.i.i.i46 = alloca i32, align 4
%ref.tmp.i.i47 = alloca %"class.std::allocator", align 1
More information about the llvm-commits
mailing list