brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · bdf0624 Raw
104 lines · plain
1; Check that the GHC calling convention works (s390x)2;3; RUN: llc -mtriple=s390x-ibm-linux < %s | FileCheck %s4 5@base  = external dso_local global i64 ; assigned to register: r76@sp    = external dso_local global i64 ; assigned to register: r87@hp    = external dso_local global i64 ; assigned to register: r108@r1    = external dso_local global i64 ; assigned to register: r119@r2    = external dso_local global i64 ; assigned to register: r1210@r3    = external dso_local global i64 ; assigned to register: r1311@r4    = external dso_local global i64 ; assigned to register: r612@r5    = external dso_local global i64 ; assigned to register: r213@r6    = external dso_local global i64 ; assigned to register: r314@r7    = external dso_local global i64 ; assigned to register: r415@r8    = external dso_local global i64 ; assigned to register: r516@splim = external dso_local global i64 ; assigned to register: r917 18@f1 = external dso_local global float  ; assigned to register: s819@f2 = external dso_local global float  ; assigned to register: s920@f3 = external dso_local global float  ; assigned to register: s1021@f4 = external dso_local global float  ; assigned to register: s1122@f5 = external dso_local global float  ; assigned to register: s023@f6 = external dso_local global float  ; assigned to register: s124 25@d1 = external dso_local global double ; assigned to register: d1226@d2 = external dso_local global double ; assigned to register: d1327@d3 = external dso_local global double ; assigned to register: d1428@d4 = external dso_local global double ; assigned to register: d1529@d5 = external dso_local global double ; assigned to register: d230@d6 = external dso_local global double ; assigned to register: d331 32define ghccc void @foo() nounwind {33entry:34  ; CHECK:      larl    {{%r[0-9]+}}, d635  ; CHECK-NEXT: ld      %f3, 0({{%r[0-9]+}})36  ; CHECK-NEXT: larl    {{%r[0-9]+}}, d537  ; CHECK-NEXT: ld      %f2, 0({{%r[0-9]+}})38  ; CHECK-NEXT: larl    {{%r[0-9]+}}, d439  ; CHECK-NEXT: ld      %f15, 0({{%r[0-9]+}})40  ; CHECK-NEXT: larl    {{%r[0-9]+}}, d341  ; CHECK-NEXT: ld      %f14, 0({{%r[0-9]+}})42  ; CHECK-NEXT: larl    {{%r[0-9]+}}, d243  ; CHECK-NEXT: ld      %f13, 0({{%r[0-9]+}})44  ; CHECK-NEXT: larl    {{%r[0-9]+}}, d145  ; CHECK-NEXT: ld      %f12, 0({{%r[0-9]+}})46  ; CHECK-NEXT: larl    {{%r[0-9]+}}, f647  ; CHECK-NEXT: le      %f1, 0({{%r[0-9]+}})48  ; CHECK-NEXT: larl    {{%r[0-9]+}}, f549  ; CHECK-NEXT: le      %f0, 0({{%r[0-9]+}})50  ; CHECK-NEXT: larl    {{%r[0-9]+}}, f451  ; CHECK-NEXT: le      %f11, 0({{%r[0-9]+}})52  ; CHECK-NEXT: larl    {{%r[0-9]+}}, f353  ; CHECK-NEXT: le      %f10, 0({{%r[0-9]+}})54  ; CHECK-NEXT: larl    {{%r[0-9]+}}, f255  ; CHECK-NEXT: le      %f9, 0({{%r[0-9]+}})56  ; CHECK-NEXT: larl    {{%r[0-9]+}}, f157  ; CHECK-NEXT: le      %f8, 0({{%r[0-9]+}})58  ; CHECK-NEXT: lgrl    %r9,  splim59  ; CHECK-NEXT: lgrl    %r5,  r860  ; CHECK-NEXT: lgrl    %r4,  r761  ; CHECK-NEXT: lgrl    %r3,  r662  ; CHECK-NEXT: lgrl    %r2,  r563  ; CHECK-NEXT: lgrl    %r6,  r464  ; CHECK-NEXT: lgrl    %r13, r365  ; CHECK-NEXT: lgrl    %r12, r266  ; CHECK-NEXT: lgrl    %r11, r167  ; CHECK-NEXT: lgrl    %r10, hp68  ; CHECK-NEXT: lgrl    %r8,  sp69  ; CHECK-NEXT: lgrl    %r7,  base70  %0  = load double, ptr @d671  %1  = load double, ptr @d572  %2  = load double, ptr @d473  %3  = load double, ptr @d374  %4  = load double, ptr @d275  %5  = load double, ptr @d176  %6  = load float, ptr @f677  %7  = load float, ptr @f578  %8  = load float, ptr @f479  %9  = load float, ptr @f380  %10 = load float, ptr @f281  %11 = load float, ptr @f182  %12 = load i64, ptr @splim83  %13 = load i64, ptr @r884  %14 = load i64, ptr @r785  %15 = load i64, ptr @r686  %16 = load i64, ptr @r587  %17 = load i64, ptr @r488  %18 = load i64, ptr @r389  %19 = load i64, ptr @r290  %20 = load i64, ptr @r191  %21 = load i64, ptr @hp92  %22 = load i64, ptr @sp93  %23 = load i64, ptr @base94  ; CHECK: brasl %r14, bar95  tail call ghccc void @bar(i64 %23, i64 %22, i64 %21, i64 %20, i64 %19, i64 %18, i64 %17, i64 %16, i64 %15, i64 %14, i64 %13, i64 %12,96                            float %11, float %10, float %9, float %8, float %7, float %6,97                            double %5, double %4, double %3, double %2, double %1, double %0) nounwind98  ret void99}100 101declare ghccc void @bar(i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64,102                        float, float, float, float, float, float,103                        double, double, double, double, double, double)104