115 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; 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=AIX645; 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=AIX328; RUN: llc -verify-machineinstrs -mtriple powerpc64le-unknown-linux -mcpu=pwr8 \9; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s \10; RUN: --check-prefix=LINUX64LE11; RUN: llc -verify-machineinstrs -mtriple powerpc64-unknown-linux -mcpu=pwr8 \12; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s \13; RUN: --check-prefix=LINUX64BE14; The below run line is added to ensure that the assembly corresponding to15; the following check-prefix is generated by default on AIX (without any16; 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=AIX6420 21@.str = private unnamed_addr constant [15 x i8] c"Private global\00", align 122@str = internal constant [16 x i8] c"Internal global\00", align 123 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: # %entry29; AIX64-NEXT: mflr r030; AIX64-NEXT: stdu r1, -128(r1)31; AIX64-NEXT: std r0, 144(r1)32; AIX64-NEXT: std r31, 120(r1) # 8-byte Folded Spill33; AIX64-NEXT: ld r31, L..C0(r2) # @_MergedGlobals34; AIX64-NEXT: mr r3, r3135; AIX64-NEXT: bl .puts[PR]36; AIX64-NEXT: nop37; AIX64-NEXT: addi r3, r31, 1538; AIX64-NEXT: bl .puts[PR]39; AIX64-NEXT: nop40; AIX64-NEXT: ld r31, 120(r1) # 8-byte Folded Reload41; AIX64-NEXT: addi r1, r1, 12842; AIX64-NEXT: ld r0, 16(r1)43; AIX64-NEXT: mtlr r044; AIX64-NEXT: blr45;46; AIX32-LABEL: print_func:47; AIX32: # %bb.0: # %entry48; AIX32-NEXT: mflr r049; AIX32-NEXT: stwu r1, -64(r1)50; AIX32-NEXT: stw r0, 72(r1)51; AIX32-NEXT: stw r31, 60(r1) # 4-byte Folded Spill52; AIX32-NEXT: lwz r31, L..C0(r2) # @_MergedGlobals53; AIX32-NEXT: mr r3, r3154; AIX32-NEXT: bl .puts[PR]55; AIX32-NEXT: nop56; AIX32-NEXT: addi r3, r31, 1557; AIX32-NEXT: bl .puts[PR]58; AIX32-NEXT: nop59; AIX32-NEXT: lwz r31, 60(r1) # 4-byte Folded Reload60; AIX32-NEXT: addi r1, r1, 6461; AIX32-NEXT: lwz r0, 8(r1)62; AIX32-NEXT: mtlr r063; AIX32-NEXT: blr64;65; LINUX64LE-LABEL: print_func:66; LINUX64LE: # %bb.0: # %entry67; LINUX64LE-NEXT: mflr r068; LINUX64LE-NEXT: .cfi_def_cfa_offset 4869; LINUX64LE-NEXT: .cfi_offset lr, 1670; LINUX64LE-NEXT: .cfi_offset r30, -1671; LINUX64LE-NEXT: std r30, -16(r1) # 8-byte Folded Spill72; LINUX64LE-NEXT: stdu r1, -48(r1)73; LINUX64LE-NEXT: addis r3, r2, .L_MergedGlobals@toc@ha74; LINUX64LE-NEXT: std r0, 64(r1)75; LINUX64LE-NEXT: addi r30, r3, .L_MergedGlobals@toc@l76; LINUX64LE-NEXT: mr r3, r3077; LINUX64LE-NEXT: bl puts78; LINUX64LE-NEXT: nop79; LINUX64LE-NEXT: addi r3, r30, 1580; LINUX64LE-NEXT: bl puts81; LINUX64LE-NEXT: nop82; LINUX64LE-NEXT: addi r1, r1, 4883; LINUX64LE-NEXT: ld r0, 16(r1)84; LINUX64LE-NEXT: ld r30, -16(r1) # 8-byte Folded Reload85; LINUX64LE-NEXT: mtlr r086; LINUX64LE-NEXT: blr87;88; LINUX64BE-LABEL: print_func:89; LINUX64BE: # %bb.0: # %entry90; LINUX64BE-NEXT: mflr r091; LINUX64BE-NEXT: stdu r1, -128(r1)92; LINUX64BE-NEXT: std r0, 144(r1)93; LINUX64BE-NEXT: .cfi_def_cfa_offset 12894; LINUX64BE-NEXT: .cfi_offset lr, 1695; LINUX64BE-NEXT: .cfi_offset r30, -1696; LINUX64BE-NEXT: addis r3, r2, .L_MergedGlobals@toc@ha97; LINUX64BE-NEXT: std r30, 112(r1) # 8-byte Folded Spill98; LINUX64BE-NEXT: addi r30, r3, .L_MergedGlobals@toc@l99; LINUX64BE-NEXT: mr r3, r30100; LINUX64BE-NEXT: bl puts101; LINUX64BE-NEXT: nop102; LINUX64BE-NEXT: addi r3, r30, 15103; LINUX64BE-NEXT: bl puts104; LINUX64BE-NEXT: nop105; LINUX64BE-NEXT: ld r30, 112(r1) # 8-byte Folded Reload106; LINUX64BE-NEXT: addi r1, r1, 128107; LINUX64BE-NEXT: ld r0, 16(r1)108; LINUX64BE-NEXT: mtlr r0109; LINUX64BE-NEXT: blr110entry: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 void114}115