brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 511bc46 Raw
67 lines · plain
1; RUN: llc < %s -mtriple=s390x-ibm-zos -emit-gnuas-syntax-on-zos=0 | FileCheck %s2%struct.LargeStruct_t = type { [33 x i32] }3 4@GlobLargeS = hidden global %struct.LargeStruct_t zeroinitializer, align 45@GlobInt = hidden global i32 0, align 46 7; === Check that function with small frame does not emit PPA1 Argument Area Length.8define void @fSmallOutArgArea() {9; CHECK-LABEL: L#EPM_fSmallOutArgArea_0 DS 0H10; CHECK: *   Bit 1: 1 = Leaf function11; CHECK: *   Bit 2: 0 = Does not use alloca12; CHECK:  DC XL4'00000008'13; CHECK: fSmallOutArgArea DS 0H14; CHECK: L#PPA1_fSmallOutArgArea_0 DS 0H15; CHECK: * PPA1 Flags 316; CHECK:  DC XL1'00'17  ret void18}19 20; === Check that function with large frame does emit PPA1 Argument Area Length.21define void @fLargeOutArgArea() {22; CHECK-LABEL: L#EPM_fLargeOutArgArea_0 DS 0H23; CHECK: *   Bit 1: 0 = Non-leaf function24; CHECK: *   Bit 2: 0 = Does not use alloca25; CHECK:  DC XL4'00000220'26; CHECK: fLargeOutArgArea DS 0H27; CHECK: L#PPA1_fLargeOutArgArea_0 DS 0H28; CHECK: * PPA1 Flags 329; CHECK: *   Bit 1: 1 = Argument Area Length is in optional area30; CHECK:  DC XL1'40'31; CHECK: * Argument Area Length32; CHECK:  DC XL4'00000140'33  %1 = load [33 x i32], ptr @GlobLargeS, align 434  call void @fLargeParm([33 x i32] inreg %1)35  ret void36}37 38; === Check that function with parameter does emit PPA1 Length/4 of parms39define void @fLargeParm([33 x i64] inreg %arr) {40; CHECK-LABEL: L#EPM_fLargeParm_0 DS 0H41; CHECK: * Length/4 of Parms42; CHECK:  DC XL2'0042'43  %1 = extractvalue [33 x i64] %arr, 144  call void @foo(i64 %1)45  ret void46}47 48; === Check that function with alloca call does emit PPA1 Argument Area Length.49define hidden void @fHasAlloca() {50; CHECK-LABEL: L#EPM_fHasAlloca_0 DS 0H51; CHECK: *   Bit 2: 1 = Uses alloca52; CHECK: fHasAlloca DS 0H53; CHECK: L#PPA1_fHasAlloca_0 DS 0H54; CHECK: * PPA1 Flags 355; CHECK: *   Bit 1: 1 = Argument Area Length is in optional area56; CHECK:  DC XL1'40'57; CHECK: * Argument Area Length58; CHECK:  DC XL4'00000040'59  %p = alloca ptr, align 460  %1 = load i32, ptr @GlobInt, align 461  %2 = alloca i8, i32 %1, align 862  store ptr %2, ptr %p, align 463  ret void64}65 66declare void @foo(i64)67