reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s

; Make sure all regs are spilled
define anyregcc void @anyregcc1() {
entry:
;CHECK-LABEL: anyregcc1
;CHECK: stmg %r2, %r15, 16(%r15)
;CHECK: std %f0,
;CHECK: std %f1,
;CHECK: std %f2,
;CHECK: std %f3,
;CHECK: std %f4,
;CHECK: std %f5,
;CHECK: std %f6,
;CHECK: std %f7,
;CHECK: std %f8,
;CHECK: std %f9,
;CHECK: std %f10,
;CHECK: std %f11,
;CHECK: std %f12,
;CHECK: std %f13,
;CHECK: std %f14,
;CHECK: std %f15,
  call void asm sideeffect "", "~{r0},~{r1},~{r2},~{r3},~{r4},~{r5},~{r6},~{r7},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{f0},~{f1},~{f2},~{f3},~{f4},~{f5},~{f6},~{f7},~{f8},~{f9},~{f10},~{f11},~{f12},~{f13},~{f14},~{f15}"() nounwind
  ret void
}

; Make sure we don't spill any FPs
declare anyregcc void @foo()
define void @anyregcc2() {
entry:
;CHECK-LABEL: anyregcc2
;CHECK-NOT: std
;CHECK: std %f8,
;CHECK-NEXT: std %f9,
;CHECK-NEXT: std %f10,
;CHECK-NEXT: std %f11,
;CHECK-NEXT: std %f12,
;CHECK-NEXT: std %f13,
;CHECK-NEXT: std %f14,
;CHECK-NEXT: std %f15,
;CHECK-NOT: std
  %a0 = call double asm sideeffect "", "={f0}"() nounwind
  %a1 = call double asm sideeffect "", "={f1}"() nounwind
  %a2 = call double asm sideeffect "", "={f2}"() nounwind
  %a3 = call double asm sideeffect "", "={f3}"() nounwind
  %a4 = call double asm sideeffect "", "={f4}"() nounwind
  %a5 = call double asm sideeffect "", "={f5}"() nounwind
  %a6 = call double asm sideeffect "", "={f6}"() nounwind
  %a7 = call double asm sideeffect "", "={f7}"() nounwind
  %a8 = call double asm sideeffect "", "={f8}"() nounwind
  %a9 = call double asm sideeffect "", "={f9}"() nounwind
  %a10 = call double asm sideeffect "", "={f10}"() nounwind
  %a11 = call double asm sideeffect "", "={f11}"() nounwind
  %a12 = call double asm sideeffect "", "={f12}"() nounwind
  %a13 = call double asm sideeffect "", "={f13}"() nounwind
  %a14 = call double asm sideeffect "", "={f14}"() nounwind
  %a15 = call double asm sideeffect "", "={f15}"() nounwind
  call anyregcc void @foo()
  call void asm sideeffect "", "{f0},{f1},{f2},{f3},{f4},{f5},{f6},{f7},{f8},{f9},{f10},{f11},{f12},{f13},{f14},{f15}"(double %a0, double %a1, double %a2, double %a3, double %a4, double %a5, double %a6, double %a7, double %a8, double %a9, double %a10, double %a11, double %a12, double %a13, double %a14, double %a15)
  ret void
}

declare void @llvm.experimental.patchpoint.void(i64, i32, i8*, i32, ...)
declare i64 @llvm.experimental.patchpoint.i64(i64, i32, i8*, i32, ...)