brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · b8e51b1 Raw
95 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; Test calling functions with multiple return values (LLVM ABI extension)3;4; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s5; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 -mattr=soft-float \6; RUN:   | FileCheck %s --check-prefix=SOFT-FLOAT7 8; Up to eight vector return values fit into VRs.9declare { <2 x double>, <2 x double>, <2 x double>, <2 x double>,10          <2 x double>, <2 x double>, <2 x double>, <2 x double> } @bar1()11 12define <2 x double> @f1() {13; CHECK-LABEL: f1:14; CHECK:       # %bb.0:15; CHECK-NEXT:    stmg %r14, %r15, 112(%r15)16; CHECK-NEXT:    .cfi_offset %r14, -4817; CHECK-NEXT:    .cfi_offset %r15, -4018; CHECK-NEXT:    aghi %r15, -16019; CHECK-NEXT:    .cfi_def_cfa_offset 32020; CHECK-NEXT:    brasl %r14, bar1@PLT21; CHECK-NEXT:    vlr %v24, %v3122; CHECK-NEXT:    lmg %r14, %r15, 272(%r15)23; CHECK-NEXT:    br %r1424;25; SOFT-FLOAT-LABEL: f1:26; SOFT-FLOAT:       # %bb.0:27; SOFT-FLOAT-NEXT:    stmg %r14, %r15, 112(%r15)28; SOFT-FLOAT-NEXT:    .cfi_offset %r14, -4829; SOFT-FLOAT-NEXT:    .cfi_offset %r15, -4030; SOFT-FLOAT-NEXT:    aghi %r15, -28831; SOFT-FLOAT-NEXT:    .cfi_def_cfa_offset 44832; SOFT-FLOAT-NEXT:    la %r2, 160(%r15)33; SOFT-FLOAT-NEXT:    brasl %r14, bar1@PLT34; SOFT-FLOAT-NEXT:    lg %r3, 280(%r15)35; SOFT-FLOAT-NEXT:    lg %r2, 272(%r15)36; SOFT-FLOAT-NEXT:    lmg %r14, %r15, 400(%r15)37; SOFT-FLOAT-NEXT:    br %r1438 39  %mret = call { <2 x double>, <2 x double>,40                 <2 x double>, <2 x double>,41                 <2 x double>, <2 x double>,42                 <2 x double>, <2 x double> } @bar1()43  %ret = extractvalue { <2 x double>, <2 x double>,44                        <2 x double>, <2 x double>,45                        <2 x double>, <2 x double>,46                        <2 x double>, <2 x double> } %mret, 747  ret <2 x double> %ret48}49 50; More than eight vector return values use sret.51declare { <2 x double>, <2 x double>, <2 x double>, <2 x double>,52          <2 x double>, <2 x double>, <2 x double>, <2 x double>,53          <2 x double> } @bar2()54 55define <2 x double> @f2() {56; CHECK-LABEL: f2:57; CHECK:       # %bb.0:58; CHECK-NEXT:    stmg %r14, %r15, 112(%r15)59; CHECK-NEXT:    .cfi_offset %r14, -4860; CHECK-NEXT:    .cfi_offset %r15, -4061; CHECK-NEXT:    aghi %r15, -30462; CHECK-NEXT:    .cfi_def_cfa_offset 46463; CHECK-NEXT:    la %r2, 160(%r15)64; CHECK-NEXT:    brasl %r14, bar2@PLT65; CHECK-NEXT:    vl %v24, 288(%r15), 366; CHECK-NEXT:    lmg %r14, %r15, 416(%r15)67; CHECK-NEXT:    br %r1468;69; SOFT-FLOAT-LABEL: f2:70; SOFT-FLOAT:       # %bb.0:71; SOFT-FLOAT-NEXT:    stmg %r14, %r15, 112(%r15)72; SOFT-FLOAT-NEXT:    .cfi_offset %r14, -4873; SOFT-FLOAT-NEXT:    .cfi_offset %r15, -4074; SOFT-FLOAT-NEXT:    aghi %r15, -30475; SOFT-FLOAT-NEXT:    .cfi_def_cfa_offset 46476; SOFT-FLOAT-NEXT:    la %r2, 160(%r15)77; SOFT-FLOAT-NEXT:    brasl %r14, bar2@PLT78; SOFT-FLOAT-NEXT:    lg %r3, 296(%r15)79; SOFT-FLOAT-NEXT:    lg %r2, 288(%r15)80; SOFT-FLOAT-NEXT:    lmg %r14, %r15, 416(%r15)81; SOFT-FLOAT-NEXT:    br %r1482 83  %mret = call { <2 x double>, <2 x double>,84                 <2 x double>, <2 x double>,85                 <2 x double>, <2 x double>,86                 <2 x double>, <2 x double>,87                 <2 x double> } @bar2()88  %ret = extractvalue { <2 x double>, <2 x double>,89                        <2 x double>, <2 x double>,90                        <2 x double>, <2 x double>,91                        <2 x double>, <2 x double>,92                        <2 x double> } %mret, 893  ret <2 x double> %ret94}95