64 lines · plain
1# RUN: llc -o - %s -mtriple=s390x-linux-gnu -mcpu=zEC12 -verify-machineinstrs \2# RUN: -start-before=greedy | FileCheck %s -check-prefix=CHECK3# RUN: llc -o - %s -mtriple=s390x-linux-gnu -mcpu=z16 -verify-machineinstrs \4# RUN: -start-before=greedy | FileCheck %s -check-prefix=VECTOR5 6# Test spilling / reloading fp16bit virtual registers.7 8---9name: fun010tracksRegLiveness: true11body: |12 bb.0:13 liveins: $f0h, $f2h, $f4h14 15 ; CHECK-LABEL: fun0:16 ; CHECK: aghi %r15, -24017 ; CHECK: ste %f4, 172(%r15) # 4-byte Spill18 ; CHECK-NEXT: ste %f2, 164(%r15) # 4-byte Spill19 ; CHECK-NEXT: ste %f0, 168(%r15) # 4-byte Spill20 ; CHECK-NEXT: #APP21 ; CHECK-NEXT: #NO_APP22 ; CHECK-NEXT: le %f0, 164(%r15) # 4-byte Reload23 ; CHECK: le %f0, 168(%r15) # 4-byte Reload24 ; CHECK: le %f0, 172(%r15) # 4-byte Reload25 26 ; VECTOR-LABEL: fun0:27 ; VECTOR: aghi %r15, -23228 ; VECTOR: vsteh %v4, 166(%r15), 0 # 2-byte Spill29 ; VECTOR-NEXT: vsteh %v2, 162(%r15), 0 # 2-byte Spill30 ; VECTOR-NEXT: vsteh %v0, 164(%r15), 0 # 2-byte Spill31 ; VECTOR-NEXT: #APP32 ; VECTOR-NEXT: #NO_APP33 ; VECTOR-NEXT: vlreph %v0, 162(%r15) # 2-byte Reload34 ; VECTOR: vlreph %v0, 164(%r15) # 2-byte Reload35 ; VECTOR: vlreph %v0, 166(%r15) # 2-byte Reload36 37 %2:fp16bit = COPY $f4h38 %1:fp16bit = COPY $f2h39 %0:fp16bit = COPY $f0h40 INLINEASM &"", 1, 12, implicit-def dead early-clobber $f0d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d41 $f0h = COPY %142 CallBRASL &__extendhfsf2, $f0h, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $f0s43 %3:fp32bit = COPY $f0s44 $f0h = COPY %045 CallBRASL &__extendhfsf2, $f0h, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $f0s46 %5:fp32bit = COPY $f0s47 %5:fp32bit = nofpexcept AEBR %5, %3, implicit-def dead $cc, implicit $fpc48 $f0s = COPY %549 CallBRASL &__truncsfhf2, $f0s, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $f0h50 %6:fp16bit = COPY $f0h51 $f0h = COPY %652 CallBRASL &__extendhfsf2, $f0h, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $f0s53 %7:fp32bit = COPY $f0s54 $f0h = COPY %255 CallBRASL &__extendhfsf2, $f0h, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $f0s56 %9:fp32bit = COPY $f0s57 %9:fp32bit = nofpexcept AEBR %9, %7, implicit-def dead $cc, implicit $fpc58 $f0s = COPY %959 CallBRASL &__truncsfhf2, $f0s, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $f0h60 %10:fp16bit = COPY $f0h61 $f0h = COPY %1062 Return implicit $f0h63...64