brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.9 KiB · 9bd6ff8 Raw
157 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; Test setjmp  store to jmp_buf when frame pointer is used and saved3; because of variable size alloca.4; Frame Pointer is stored in slot 1.5; Return address in slot 2.6; Backchain value is stored in slot 3 for -mbackchain option.7; Stack Pointer in slot 4.8; Clobber %r6-%r15, %f8-%f15.9 10; RUN: llc < %s -verify-machineinstrs -mtriple=s390x-linux-gnu | FileCheck %s11 12declare i32 @llvm.eh.sjlj.setjmp(ptr)13@buf = global [20 x ptr] zeroinitializer, align 814 15define signext i32 @foo() "frame-pointer"="all" {16; CHECK-LABEL: foo:17; CHECK:       # %bb.0: # %entry18; CHECK-NEXT:    stmg %r6, %r15, 48(%r15)19; CHECK-NEXT:    .cfi_offset %r6, -11220; CHECK-NEXT:    .cfi_offset %r7, -10421; CHECK-NEXT:    .cfi_offset %r8, -9622; CHECK-NEXT:    .cfi_offset %r9, -8823; CHECK-NEXT:    .cfi_offset %r10, -8024; CHECK-NEXT:    .cfi_offset %r11, -7225; CHECK-NEXT:    .cfi_offset %r12, -6426; CHECK-NEXT:    .cfi_offset %r13, -5627; CHECK-NEXT:    .cfi_offset %r14, -4828; CHECK-NEXT:    .cfi_offset %r15, -4029; CHECK-NEXT:    aghi %r15, -24030; CHECK-NEXT:    .cfi_def_cfa_offset 40031; CHECK-NEXT:    lgr %r11, %r1532; CHECK-NEXT:    .cfi_def_cfa_register %r1133; CHECK-NEXT:    std %f8, 232(%r11) # 8-byte Spill34; CHECK-NEXT:    std %f9, 224(%r11) # 8-byte Spill35; CHECK-NEXT:    std %f10, 216(%r11) # 8-byte Spill36; CHECK-NEXT:    std %f11, 208(%r11) # 8-byte Spill37; CHECK-NEXT:    std %f12, 200(%r11) # 8-byte Spill38; CHECK-NEXT:    std %f13, 192(%r11) # 8-byte Spill39; CHECK-NEXT:    std %f14, 184(%r11) # 8-byte Spill40; CHECK-NEXT:    std %f15, 176(%r11) # 8-byte Spill41; CHECK-NEXT:    .cfi_offset %f8, -16842; CHECK-NEXT:    .cfi_offset %f9, -17643; CHECK-NEXT:    .cfi_offset %f10, -18444; CHECK-NEXT:    .cfi_offset %f11, -19245; CHECK-NEXT:    .cfi_offset %f12, -20046; CHECK-NEXT:    .cfi_offset %f13, -20847; CHECK-NEXT:    .cfi_offset %f14, -21648; CHECK-NEXT:    .cfi_offset %f15, -22449; CHECK-NEXT:    la %r0, 160(%r11)50; CHECK-NEXT:    lgrl %r1, buf@GOT51; CHECK-NEXT:    stg %r0, 168(%r11)52; CHECK-NEXT:    mvhi 160(%r11), 1053; CHECK-NEXT:    larl %r0, .LBB0_154; CHECK-NEXT:    stg %r0, 8(%r1)55; CHECK-NEXT:    stg %r11, 0(%r1)56; CHECK-NEXT:    stg %r15, 24(%r1)57; CHECK-NEXT:  .LBB0_1: # Block address taken58; CHECK-NEXT:    # %entry59; CHECK-NEXT:  .LBB0_2: # %entry60; CHECK-NEXT:    lg %r1, 168(%r11)61; CHECK-NEXT:    lgf %r2, 0(%r1)62; CHECK-NEXT:    ld %f8, 232(%r11) # 8-byte Reload63; CHECK-NEXT:    ld %f9, 224(%r11) # 8-byte Reload64; CHECK-NEXT:    ld %f10, 216(%r11) # 8-byte Reload65; CHECK-NEXT:    ld %f11, 208(%r11) # 8-byte Reload66; CHECK-NEXT:    ld %f12, 200(%r11) # 8-byte Reload67; CHECK-NEXT:    ld %f13, 192(%r11) # 8-byte Reload68; CHECK-NEXT:    ld %f14, 184(%r11) # 8-byte Reload69; CHECK-NEXT:    ld %f15, 176(%r11) # 8-byte Reload70; CHECK-NEXT:    lmg %r6, %r15, 288(%r11)71; CHECK-NEXT:    br %r1472entry:73  %val = alloca ptr, align 874  %0 = alloca i8, i64 4, align 875  store ptr %0, ptr %val, align 876  %1 = load ptr, ptr %val, align 877  store volatile i32 10, ptr %1, align 478  %2 = call i32 @llvm.eh.sjlj.setjmp(ptr @buf)79  %3 = load ptr, ptr %val, align 880  %4 = load volatile i32, ptr %3, align 481  ret i32 %482}83 84define signext i32 @foo1() "backchain" "frame-pointer"="all" {85; CHECK-LABEL: foo1:86; CHECK:       # %bb.0: # %entry87; CHECK-NEXT:    stmg %r6, %r15, 48(%r15)88; CHECK-NEXT:    .cfi_offset %r6, -11289; CHECK-NEXT:    .cfi_offset %r7, -10490; CHECK-NEXT:    .cfi_offset %r8, -9691; CHECK-NEXT:    .cfi_offset %r9, -8892; CHECK-NEXT:    .cfi_offset %r10, -8093; CHECK-NEXT:    .cfi_offset %r11, -7294; CHECK-NEXT:    .cfi_offset %r12, -6495; CHECK-NEXT:    .cfi_offset %r13, -5696; CHECK-NEXT:    .cfi_offset %r14, -4897; CHECK-NEXT:    .cfi_offset %r15, -4098; CHECK-NEXT:    lgr %r1, %r1599; CHECK-NEXT:    aghi %r15, -240100; CHECK-NEXT:    .cfi_def_cfa_offset 400101; CHECK-NEXT:    stg %r1, 0(%r15)102; CHECK-NEXT:    lgr %r11, %r15103; CHECK-NEXT:    .cfi_def_cfa_register %r11104; CHECK-NEXT:    std %f8, 232(%r11) # 8-byte Spill105; CHECK-NEXT:    std %f9, 224(%r11) # 8-byte Spill106; CHECK-NEXT:    std %f10, 216(%r11) # 8-byte Spill107; CHECK-NEXT:    std %f11, 208(%r11) # 8-byte Spill108; CHECK-NEXT:    std %f12, 200(%r11) # 8-byte Spill109; CHECK-NEXT:    std %f13, 192(%r11) # 8-byte Spill110; CHECK-NEXT:    std %f14, 184(%r11) # 8-byte Spill111; CHECK-NEXT:    std %f15, 176(%r11) # 8-byte Spill112; CHECK-NEXT:    .cfi_offset %f8, -168113; CHECK-NEXT:    .cfi_offset %f9, -176114; CHECK-NEXT:    .cfi_offset %f10, -184115; CHECK-NEXT:    .cfi_offset %f11, -192116; CHECK-NEXT:    .cfi_offset %f12, -200117; CHECK-NEXT:    .cfi_offset %f13, -208118; CHECK-NEXT:    .cfi_offset %f14, -216119; CHECK-NEXT:    .cfi_offset %f15, -224120; CHECK-NEXT:    la %r0, 160(%r11)121; CHECK-NEXT:    lgrl %r1, buf@GOT122; CHECK-NEXT:    stg %r0, 168(%r11)123; CHECK-NEXT:    mvhi 160(%r11), 10124; CHECK-NEXT:    larl %r0, .LBB1_1125; CHECK-NEXT:    stg %r0, 8(%r1)126; CHECK-NEXT:    stg %r11, 0(%r1)127; CHECK-NEXT:    stg %r15, 24(%r1)128; CHECK-NEXT:    lg %r0, 0(%r15)129; CHECK-NEXT:    stg %r0, 16(%r1)130; CHECK-NEXT:  .LBB1_1: # Block address taken131; CHECK-NEXT:    # %entry132; CHECK-NEXT:  .LBB1_2: # %entry133; CHECK-NEXT:    lg %r1, 168(%r11)134; CHECK-NEXT:    lgf %r2, 0(%r1)135; CHECK-NEXT:    ld %f8, 232(%r11) # 8-byte Reload136; CHECK-NEXT:    ld %f9, 224(%r11) # 8-byte Reload137; CHECK-NEXT:    ld %f10, 216(%r11) # 8-byte Reload138; CHECK-NEXT:    ld %f11, 208(%r11) # 8-byte Reload139; CHECK-NEXT:    ld %f12, 200(%r11) # 8-byte Reload140; CHECK-NEXT:    ld %f13, 192(%r11) # 8-byte Reload141; CHECK-NEXT:    ld %f14, 184(%r11) # 8-byte Reload142; CHECK-NEXT:    ld %f15, 176(%r11) # 8-byte Reload143; CHECK-NEXT:    lmg %r6, %r15, 288(%r11)144; CHECK-NEXT:    br %r14145entry:146  %val = alloca ptr, align 8147  %0 = alloca i8, i64 4, align 8148  store ptr %0, ptr %val, align 8149  %1 = load ptr, ptr %val, align 8150  store volatile i32 10, ptr %1, align 4151  %2 = call i32 @llvm.eh.sjlj.setjmp(ptr @buf)152  %3 = load ptr, ptr %val, align 8153  %4 = load volatile i32, ptr %3, align 4154  ret i32 %4155}156 157