70 lines · plain
1; Test the ADA section in the assembly output for all cases.2;3; RUN: llc < %s -mtriple=s390x-ibm-zos | FileCheck %s4 5; CHECK-LABEL: DoIt:6; CHECK: stmg 6,7,1840(4)7; CHECK: aghi 4,-2248; CHECK: lg 1,0(5)9; CHECK: lg 6,16(5)10; CHECK: lg 5,8(5)11; CHECK: stg 1,2264(4)12; CHECK: basr 7,613; CHECK: bcr 0,014; CHECK: lg 7,2072(4)15; CHECK: aghi 4,22416; CHECK: b 2(7)17define hidden void @DoIt() {18entry:19 %F = alloca ptr, align 820 store ptr @DoFunc, ptr %F, align 821 %0 = load ptr, ptr %F, align 822 call void @Caller(ptr noundef %0)23 ret void24}25declare void @DoFunc()26declare void @Caller(ptr noundef)27 28; CHECK-LABEL: get_i:29; CHECK: stmg 6,8,1872(4)30; CHECK: aghi 4,-19231; CHECK: lg 1,24(5)32; CHECK: lg 2,32(5)33; CHECK: lgf 1,0(1)34; CHECK: lg 6,48(5)35; CHECK: lg 5,40(5)36; CHECK: l 8,0(2)37; CHECK: basr 7,638; CHECK: bcr 0,039; CHECK: ar 3,840; CHECK: lgfr 3,341; CHECK: lmg 7,8,2072(4)42; CHECK: aghi 4,19243; CHECK: b 2(7)44@i = external global i32, align 445@i2 = external global i32, align 446 47define signext i32 @get_i() {48entry:49 %0 = load i32, ptr @i, align 450 %1 = load i32, ptr @i2, align 451 %call = call signext i32 @callout(i32 signext %1)52 %add = add nsw i32 %0, %call53 ret i32 %add54}55 56declare signext i32 @callout(i32 signext)57 58; CHECK: stdin#C CSECT59; CHECK: C_WSA64 CATTR ALIGN(4),FILL(0),DEFLOAD,NOTEXECUTABLE,RMODE(64),PART(stdin#S)60; CHECK: stdin#S XATTR LINKAGE(XPLINK),REFERENCE(DATA),SCOPE(SECTION)61; CHECK: .set L#DoFunc@indirect0, DoFunc62; CHECK: .indirect_symbol L#DoFunc@indirect063; CHECK: .quad V(L#DoFunc@indirect0) * Offset 0 pointer to function descriptor DoFunc64; CHECK: .quad R(Caller) * Offset 8 function descriptor of Caller65; CHECK: .quad V(Caller)66; CHECK: .quad A(i2) * Offset 24 pointer to data symbol i267; CHECK: .quad A(i) * Offset 32 pointer to data symbol i68; CHECK: .quad R(callout) * Offset 40 function descriptor of callout69; CHECK: .quad V(callout)70