brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.0 KiB · 5626f45 Raw
255 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; Simulate register pressure around setjmp call and check all virtual registers3; are saved to stack before setjmp call and restored from stack after the call.4; And these registers are not live across the setjmp call.5; setjmp storing to jmp_buf.6; Return address in slot 2.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 14@t = global i32 0, align 415@s = global i32 0, align 416@r = global i32 0, align 417@q = global i32 0, align 418@p = global i32 0, align 419@o = global i32 0, align 420@n = global i32 0, align 421@m = global i32 0, align 422@l = global i32 0, align 423@k = global i32 0, align 424@j = global i32 0, align 425@i = global i32 0, align 426@h = global i32 0, align 427@g = global i32 0, align 428@f = global i32 0, align 429@e = global i32 0, align 430@d = global i32 0, align 431@c = global i32 0, align 432@b = global i32 0, align 433@a = global i32 0, align 434@buf = global [10 x ptr] zeroinitializer, align 835 36define signext i32 @func() {37; CHECK-LABEL: func:38; CHECK:       # %bb.0: # %entry39; CHECK-NEXT:    stmg %r6, %r15, 48(%r15)40; CHECK-NEXT:    .cfi_offset %r6, -11241; CHECK-NEXT:    .cfi_offset %r7, -10442; CHECK-NEXT:    .cfi_offset %r8, -9643; CHECK-NEXT:    .cfi_offset %r9, -8844; CHECK-NEXT:    .cfi_offset %r10, -8045; CHECK-NEXT:    .cfi_offset %r11, -7246; CHECK-NEXT:    .cfi_offset %r12, -6447; CHECK-NEXT:    .cfi_offset %r13, -5648; CHECK-NEXT:    .cfi_offset %r14, -4849; CHECK-NEXT:    .cfi_offset %r15, -4050; CHECK-NEXT:    aghi %r15, -38451; CHECK-NEXT:    .cfi_def_cfa_offset 54452; CHECK-NEXT:    std %f8, 376(%r15) # 8-byte Spill53; CHECK-NEXT:    std %f9, 368(%r15) # 8-byte Spill54; CHECK-NEXT:    std %f10, 360(%r15) # 8-byte Spill55; CHECK-NEXT:    std %f11, 352(%r15) # 8-byte Spill56; CHECK-NEXT:    std %f12, 344(%r15) # 8-byte Spill57; CHECK-NEXT:    std %f13, 336(%r15) # 8-byte Spill58; CHECK-NEXT:    std %f14, 328(%r15) # 8-byte Spill59; CHECK-NEXT:    std %f15, 320(%r15) # 8-byte Spill60; CHECK-NEXT:    .cfi_offset %f8, -16861; CHECK-NEXT:    .cfi_offset %f9, -17662; CHECK-NEXT:    .cfi_offset %f10, -18463; CHECK-NEXT:    .cfi_offset %f11, -19264; CHECK-NEXT:    .cfi_offset %f12, -20065; CHECK-NEXT:    .cfi_offset %f13, -20866; CHECK-NEXT:    .cfi_offset %f14, -21667; CHECK-NEXT:    .cfi_offset %f15, -22468; CHECK-NEXT:    lgrl %r1, t@GOT69; CHECK-NEXT:    lgrl %r2, s@GOT70; CHECK-NEXT:    stg %r1, 312(%r15) # 8-byte Spill71; CHECK-NEXT:    mvhi 0(%r1), 172; CHECK-NEXT:    lgrl %r1, r@GOT73; CHECK-NEXT:    lgrl %r3, q@GOT74; CHECK-NEXT:    stg %r2, 304(%r15) # 8-byte Spill75; CHECK-NEXT:    mvhi 0(%r2), 176; CHECK-NEXT:    lgrl %r2, p@GOT77; CHECK-NEXT:    stg %r1, 296(%r15) # 8-byte Spill78; CHECK-NEXT:    mvhi 0(%r1), 179; CHECK-NEXT:    stg %r3, 288(%r15) # 8-byte Spill80; CHECK-NEXT:    mvhi 0(%r3), 181; CHECK-NEXT:    lgrl %r1, o@GOT82; CHECK-NEXT:    stg %r2, 280(%r15) # 8-byte Spill83; CHECK-NEXT:    mvhi 0(%r2), 184; CHECK-NEXT:    lgrl %r2, n@GOT85; CHECK-NEXT:    lgrl %r3, m@GOT86; CHECK-NEXT:    stg %r1, 272(%r15) # 8-byte Spill87; CHECK-NEXT:    mvhi 0(%r1), 188; CHECK-NEXT:    lgrl %r1, l@GOT89; CHECK-NEXT:    stg %r2, 264(%r15) # 8-byte Spill90; CHECK-NEXT:    mvhi 0(%r2), 191; CHECK-NEXT:    stg %r3, 256(%r15) # 8-byte Spill92; CHECK-NEXT:    mvhi 0(%r3), 193; CHECK-NEXT:    lgrl %r2, k@GOT94; CHECK-NEXT:    stg %r1, 248(%r15) # 8-byte Spill95; CHECK-NEXT:    mvhi 0(%r1), 196; CHECK-NEXT:    lgrl %r1, j@GOT97; CHECK-NEXT:    lgrl %r3, i@GOT98; CHECK-NEXT:    stg %r2, 240(%r15) # 8-byte Spill99; CHECK-NEXT:    mvhi 0(%r2), 1100; CHECK-NEXT:    lgrl %r2, h@GOT101; CHECK-NEXT:    stg %r1, 232(%r15) # 8-byte Spill102; CHECK-NEXT:    mvhi 0(%r1), 1103; CHECK-NEXT:    stg %r3, 224(%r15) # 8-byte Spill104; CHECK-NEXT:    mvhi 0(%r3), 1105; CHECK-NEXT:    lgrl %r1, g@GOT106; CHECK-NEXT:    stg %r2, 216(%r15) # 8-byte Spill107; CHECK-NEXT:    mvhi 0(%r2), 1108; CHECK-NEXT:    lgrl %r2, f@GOT109; CHECK-NEXT:    lgrl %r3, e@GOT110; CHECK-NEXT:    stg %r1, 208(%r15) # 8-byte Spill111; CHECK-NEXT:    mvhi 0(%r1), 1112; CHECK-NEXT:    lgrl %r1, d@GOT113; CHECK-NEXT:    stg %r2, 200(%r15) # 8-byte Spill114; CHECK-NEXT:    mvhi 0(%r2), 1115; CHECK-NEXT:    stg %r3, 192(%r15) # 8-byte Spill116; CHECK-NEXT:    mvhi 0(%r3), 1117; CHECK-NEXT:    lgrl %r2, c@GOT118; CHECK-NEXT:    stg %r1, 184(%r15) # 8-byte Spill119; CHECK-NEXT:    mvhi 0(%r1), 1120; CHECK-NEXT:    lgrl %r3, b@GOT121; CHECK-NEXT:    lgrl %r4, a@GOT122; CHECK-NEXT:    stg %r2, 176(%r15) # 8-byte Spill123; CHECK-NEXT:    mvhi 0(%r2), 1124; CHECK-NEXT:    lgrl %r1, buf@GOT125; CHECK-NEXT:    stg %r3, 168(%r15) # 8-byte Spill126; CHECK-NEXT:    mvhi 0(%r3), 1127; CHECK-NEXT:    stg %r4, 160(%r15) # 8-byte Spill128; CHECK-NEXT:    mvhi 0(%r4), 1129; CHECK-NEXT:    larl %r0, .LBB0_2130; CHECK-NEXT:    stg %r0, 8(%r1)131; CHECK-NEXT:    stg %r15, 24(%r1)132; CHECK-NEXT:  .LBB0_1: # %entry133; CHECK-NEXT:    lhi %r0, 0134; CHECK-NEXT:    j .LBB0_3135; CHECK-NEXT:  .LBB0_2: # Block address taken136; CHECK-NEXT:    # %entry137; CHECK-NEXT:    lhi %r0, 1138; CHECK-NEXT:  .LBB0_3: # %entry139; CHECK-NEXT:    lg %r1, 160(%r15) # 8-byte Reload140; CHECK-NEXT:    a %r0, 0(%r1)141; CHECK-NEXT:    lg %r1, 168(%r15) # 8-byte Reload142; CHECK-NEXT:    a %r0, 0(%r1)143; CHECK-NEXT:    lg %r1, 176(%r15) # 8-byte Reload144; CHECK-NEXT:    a %r0, 0(%r1)145; CHECK-NEXT:    lg %r1, 184(%r15) # 8-byte Reload146; CHECK-NEXT:    a %r0, 0(%r1)147; CHECK-NEXT:    lg %r1, 192(%r15) # 8-byte Reload148; CHECK-NEXT:    a %r0, 0(%r1)149; CHECK-NEXT:    lg %r1, 200(%r15) # 8-byte Reload150; CHECK-NEXT:    a %r0, 0(%r1)151; CHECK-NEXT:    lg %r1, 208(%r15) # 8-byte Reload152; CHECK-NEXT:    a %r0, 0(%r1)153; CHECK-NEXT:    lg %r1, 216(%r15) # 8-byte Reload154; CHECK-NEXT:    a %r0, 0(%r1)155; CHECK-NEXT:    lg %r1, 224(%r15) # 8-byte Reload156; CHECK-NEXT:    a %r0, 0(%r1)157; CHECK-NEXT:    lg %r1, 232(%r15) # 8-byte Reload158; CHECK-NEXT:    a %r0, 0(%r1)159; CHECK-NEXT:    lg %r1, 240(%r15) # 8-byte Reload160; CHECK-NEXT:    a %r0, 0(%r1)161; CHECK-NEXT:    lg %r1, 248(%r15) # 8-byte Reload162; CHECK-NEXT:    a %r0, 0(%r1)163; CHECK-NEXT:    lg %r1, 256(%r15) # 8-byte Reload164; CHECK-NEXT:    a %r0, 0(%r1)165; CHECK-NEXT:    lg %r1, 264(%r15) # 8-byte Reload166; CHECK-NEXT:    a %r0, 0(%r1)167; CHECK-NEXT:    lg %r1, 272(%r15) # 8-byte Reload168; CHECK-NEXT:    a %r0, 0(%r1)169; CHECK-NEXT:    lg %r1, 280(%r15) # 8-byte Reload170; CHECK-NEXT:    a %r0, 0(%r1)171; CHECK-NEXT:    lg %r1, 288(%r15) # 8-byte Reload172; CHECK-NEXT:    a %r0, 0(%r1)173; CHECK-NEXT:    lg %r1, 296(%r15) # 8-byte Reload174; CHECK-NEXT:    a %r0, 0(%r1)175; CHECK-NEXT:    lg %r1, 304(%r15) # 8-byte Reload176; CHECK-NEXT:    a %r0, 0(%r1)177; CHECK-NEXT:    lg %r1, 312(%r15) # 8-byte Reload178; CHECK-NEXT:    a %r0, 0(%r1)179; CHECK-NEXT:    lgfr %r2, %r0180; CHECK-NEXT:    ld %f8, 376(%r15) # 8-byte Reload181; CHECK-NEXT:    ld %f9, 368(%r15) # 8-byte Reload182; CHECK-NEXT:    ld %f10, 360(%r15) # 8-byte Reload183; CHECK-NEXT:    ld %f11, 352(%r15) # 8-byte Reload184; CHECK-NEXT:    ld %f12, 344(%r15) # 8-byte Reload185; CHECK-NEXT:    ld %f13, 336(%r15) # 8-byte Reload186; CHECK-NEXT:    ld %f14, 328(%r15) # 8-byte Reload187; CHECK-NEXT:    ld %f15, 320(%r15) # 8-byte Reload188; CHECK-NEXT:    lmg %r6, %r15, 432(%r15)189; CHECK-NEXT:    br %r14190entry:191  store i32 1, ptr @t, align 4192  store i32 1, ptr @s, align 4193  store i32 1, ptr @r, align 4194  store i32 1, ptr @q, align 4195  store i32 1, ptr @p, align 4196  store i32 1, ptr @o, align 4197  store i32 1, ptr @n, align 4198  store i32 1, ptr @m, align 4199  store i32 1, ptr @l, align 4200  store i32 1, ptr @k, align 4201  store i32 1, ptr @j, align 4202  store i32 1, ptr @i, align 4203  store i32 1, ptr @h, align 4204  store i32 1, ptr @g, align 4205  store i32 1, ptr @f, align 4206  store i32 1, ptr @e, align 4207  store i32 1, ptr @d, align 4208  store i32 1, ptr @c, align 4209  store i32 1, ptr @b, align 4210  store i32 1, ptr @a, align 4211  %0 = tail call i32 @llvm.eh.sjlj.setjmp(ptr nonnull @buf)212  %1 = load i32, ptr @a, align 4213  %2 = load i32, ptr @b, align 4214  %3 = load i32, ptr @c, align 4215  %4 = load i32, ptr @d, align 4216  %5 = load i32, ptr @e, align 4217  %6 = load i32, ptr @f, align 4218  %7 = load i32, ptr @g, align 4219  %8 = load i32, ptr @h, align 4220  %9 = load i32, ptr @i, align 4221  %10 = load i32, ptr @j, align 4222  %11 = load i32, ptr @k, align 4223  %12 = load i32, ptr @l, align 4224  %13 = load i32, ptr @m, align 4225  %14 = load i32, ptr @n, align 4226  %15 = load i32, ptr @o, align 4227  %16 = load i32, ptr @p, align 4228  %17 = load i32, ptr @q, align 4229  %18 = load i32, ptr @r, align 4230  %19 = load i32, ptr @s, align 4231  %20 = load i32, ptr @t, align 4232  %add = add i32 %1, %0233  %add1 = add i32 %add, %2234  %add2 = add i32 %add1, %3235  %add3 = add i32 %add2, %4236  %add4 = add i32 %add3, %5237  %add5 = add i32 %add4, %6238  %add6 = add i32 %add5, %7239  %add7 = add i32 %add6, %8240  %add8 = add i32 %add7, %9241  %add9 = add i32 %add8, %10242  %add10 = add i32 %add9, %11243  %add11 = add i32 %add10, %12244  %add12 = add i32 %add11, %13245  %add13 = add i32 %add12, %14246  %add14 = add i32 %add13, %15247  %add15 = add i32 %add14, %16248  %add16 = add i32 %add15, %17249  %add17 = add i32 %add16, %18250  %add18 = add i32 %add17, %19251  %add19 = add i32 %add18, %20252  ret i32 %add19253}254 255