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