xref: /llvm-project/llvm/test/CodeGen/PowerPC/merge-private.ll (revision aaa37d6755e635bbd62ba58896acd54ceef64610)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr8 \
3; RUN:     -ppc-asm-full-reg-names < %s | FileCheck %s \
4; RUN:     --check-prefix=AIX64
5; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr8 \
6; RUN:     -ppc-asm-full-reg-names < %s | FileCheck %s \
7; RUN:     --check-prefix=AIX32
8; RUN: llc -verify-machineinstrs -mtriple powerpc64le-unknown-linux -mcpu=pwr8 \
9; RUN:     -ppc-asm-full-reg-names < %s | FileCheck %s \
10; RUN:     --check-prefix=LINUX64LE
11; RUN: llc -verify-machineinstrs -mtriple powerpc64-unknown-linux -mcpu=pwr8 \
12; RUN:     -ppc-asm-full-reg-names < %s | FileCheck %s \
13; RUN:     --check-prefix=LINUX64BE
14; The below run line is added to ensure that the assembly corresponding to
15; the following check-prefix is generated by default on AIX (without any
16; options).
17; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr8 \
18; RUN:     -ppc-asm-full-reg-names < %s | FileCheck %s \
19; RUN:     --check-prefix=AIX64
20
21@.str = private unnamed_addr constant [15 x i8] c"Private global\00", align 1
22@str = internal constant [16 x i8] c"Internal global\00", align 1
23
24declare noundef signext i32 @puts(ptr nocapture noundef readonly)
25
26define dso_local void @print_func() {
27; AIX64-LABEL: print_func:
28; AIX64:       # %bb.0: # %entry
29; AIX64-NEXT:    mflr r0
30; AIX64-NEXT:    stdu r1, -128(r1)
31; AIX64-NEXT:    std r0, 144(r1)
32; AIX64-NEXT:    std r31, 120(r1) # 8-byte Folded Spill
33; AIX64-NEXT:    ld r31, L..C0(r2) # @_MergedGlobals
34; AIX64-NEXT:    mr r3, r31
35; AIX64-NEXT:    bl .puts[PR]
36; AIX64-NEXT:    nop
37; AIX64-NEXT:    addi r3, r31, 15
38; AIX64-NEXT:    bl .puts[PR]
39; AIX64-NEXT:    nop
40; AIX64-NEXT:    ld r31, 120(r1) # 8-byte Folded Reload
41; AIX64-NEXT:    addi r1, r1, 128
42; AIX64-NEXT:    ld r0, 16(r1)
43; AIX64-NEXT:    mtlr r0
44; AIX64-NEXT:    blr
45;
46; AIX32-LABEL: print_func:
47; AIX32:       # %bb.0: # %entry
48; AIX32-NEXT:    mflr r0
49; AIX32-NEXT:    stwu r1, -64(r1)
50; AIX32-NEXT:    stw r0, 72(r1)
51; AIX32-NEXT:    stw r31, 60(r1) # 4-byte Folded Spill
52; AIX32-NEXT:    lwz r31, L..C0(r2) # @_MergedGlobals
53; AIX32-NEXT:    mr r3, r31
54; AIX32-NEXT:    bl .puts[PR]
55; AIX32-NEXT:    nop
56; AIX32-NEXT:    addi r3, r31, 15
57; AIX32-NEXT:    bl .puts[PR]
58; AIX32-NEXT:    nop
59; AIX32-NEXT:    lwz r31, 60(r1) # 4-byte Folded Reload
60; AIX32-NEXT:    addi r1, r1, 64
61; AIX32-NEXT:    lwz r0, 8(r1)
62; AIX32-NEXT:    mtlr r0
63; AIX32-NEXT:    blr
64;
65; LINUX64LE-LABEL: print_func:
66; LINUX64LE:       # %bb.0: # %entry
67; LINUX64LE-NEXT:    mflr r0
68; LINUX64LE-NEXT:    .cfi_def_cfa_offset 48
69; LINUX64LE-NEXT:    .cfi_offset lr, 16
70; LINUX64LE-NEXT:    .cfi_offset r30, -16
71; LINUX64LE-NEXT:    std r30, -16(r1) # 8-byte Folded Spill
72; LINUX64LE-NEXT:    stdu r1, -48(r1)
73; LINUX64LE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha
74; LINUX64LE-NEXT:    std r0, 64(r1)
75; LINUX64LE-NEXT:    addi r30, r3, .L_MergedGlobals@toc@l
76; LINUX64LE-NEXT:    mr r3, r30
77; LINUX64LE-NEXT:    bl puts
78; LINUX64LE-NEXT:    nop
79; LINUX64LE-NEXT:    addi r3, r30, 15
80; LINUX64LE-NEXT:    bl puts
81; LINUX64LE-NEXT:    nop
82; LINUX64LE-NEXT:    addi r1, r1, 48
83; LINUX64LE-NEXT:    ld r0, 16(r1)
84; LINUX64LE-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload
85; LINUX64LE-NEXT:    mtlr r0
86; LINUX64LE-NEXT:    blr
87;
88; LINUX64BE-LABEL: print_func:
89; LINUX64BE:       # %bb.0: # %entry
90; LINUX64BE-NEXT:    mflr r0
91; LINUX64BE-NEXT:    stdu r1, -128(r1)
92; LINUX64BE-NEXT:    std r0, 144(r1)
93; LINUX64BE-NEXT:    .cfi_def_cfa_offset 128
94; LINUX64BE-NEXT:    .cfi_offset lr, 16
95; LINUX64BE-NEXT:    .cfi_offset r30, -16
96; LINUX64BE-NEXT:    addis r3, r2, .L_MergedGlobals@toc@ha
97; LINUX64BE-NEXT:    std r30, 112(r1) # 8-byte Folded Spill
98; LINUX64BE-NEXT:    addi r30, r3, .L_MergedGlobals@toc@l
99; LINUX64BE-NEXT:    mr r3, r30
100; LINUX64BE-NEXT:    bl puts
101; LINUX64BE-NEXT:    nop
102; LINUX64BE-NEXT:    addi r3, r30, 15
103; LINUX64BE-NEXT:    bl puts
104; LINUX64BE-NEXT:    nop
105; LINUX64BE-NEXT:    ld r30, 112(r1) # 8-byte Folded Reload
106; LINUX64BE-NEXT:    addi r1, r1, 128
107; LINUX64BE-NEXT:    ld r0, 16(r1)
108; LINUX64BE-NEXT:    mtlr r0
109; LINUX64BE-NEXT:    blr
110entry:
111  %call = tail call signext i32 @puts(ptr noundef nonnull dereferenceable(1) @.str)
112  %call1 = tail call signext i32 @puts(ptr noundef nonnull dereferenceable(1) @str)
113  ret void
114}
115