brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 410f173 Raw
137 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 -verify-machineinstrs | FileCheck %s3 4define i32 @fun0(i32 %n) #0 {5; CHECK-LABEL: fun0:6; CHECK:       # %bb.0:7; CHECK-NEXT:    stmg %r11, %r15, 88(%r15)8; CHECK-NEXT:    .cfi_offset %r11, -729; CHECK-NEXT:    .cfi_offset %r15, -4010; CHECK-NEXT:    aghi %r15, -16011; CHECK-NEXT:    .cfi_def_cfa_offset 32012; CHECK-NEXT:    lgr %r11, %r1513; CHECK-NEXT:    .cfi_def_cfa_register %r1114; CHECK-NEXT:    # kill: def $r2l killed $r2l def $r2d15; CHECK-NEXT:    risbgn %r1, %r2, 30, 189, 216; CHECK-NEXT:    la %r0, 7(%r1)17; CHECK-NEXT:    risbgn %r1, %r0, 29, 188, 018; CHECK-NEXT:    clgfi %r1, 409619; CHECK-NEXT:    jl .LBB0_220; CHECK-NEXT:  .LBB0_1: # =>This Inner Loop Header: Depth=121; CHECK-NEXT:    slgfi %r1, 409622; CHECK-NEXT:    slgfi %r15, 409623; CHECK-NEXT:    cg %r15, 4088(%r15)24; CHECK-NEXT:    clgfi %r1, 409625; CHECK-NEXT:    jhe .LBB0_126; CHECK-NEXT:  .LBB0_2:27; CHECK-NEXT:    cgije %r1, 0, .LBB0_428; CHECK-NEXT:  # %bb.3:29; CHECK-NEXT:    slgr %r15, %r130; CHECK-NEXT:    cg %r15, -8(%r1,%r15)31; CHECK-NEXT:  .LBB0_4:32; CHECK-NEXT:    la %r1, 160(%r15)33; CHECK-NEXT:    lhi %r0, 134; CHECK-NEXT:    sty %r0, 4792(%r1)35; CHECK-NEXT:    l %r2, 0(%r1)36; CHECK-NEXT:    lmg %r11, %r15, 248(%r11)37; CHECK-NEXT:    br %r1438 39  %a = alloca i32, i32 %n40  %b = getelementptr inbounds i32, ptr %a, i64 119841  store volatile i32 1, ptr %b42  %c = load volatile i32, ptr %a43  ret i32 %c44}45 46; Probe size should be modulo stack alignment.47define i32 @fun1(i32 %n) #0 "stack-probe-size"="1250" {48; CHECK-LABEL: fun1:49; CHECK:       # %bb.0:50; CHECK-NEXT:    stmg %r11, %r15, 88(%r15)51; CHECK-NEXT:    .cfi_offset %r11, -7252; CHECK-NEXT:    .cfi_offset %r15, -4053; CHECK-NEXT:    aghi %r15, -16054; CHECK-NEXT:    .cfi_def_cfa_offset 32055; CHECK-NEXT:    lgr %r11, %r1556; CHECK-NEXT:    .cfi_def_cfa_register %r1157; CHECK-NEXT:    # kill: def $r2l killed $r2l def $r2d58; CHECK-NEXT:    risbgn %r1, %r2, 30, 189, 259; CHECK-NEXT:    la %r0, 7(%r1)60; CHECK-NEXT:    risbgn %r1, %r0, 29, 188, 061; CHECK-NEXT:    clgfi %r1, 124862; CHECK-NEXT:    jl .LBB1_263; CHECK-NEXT:  .LBB1_1: # =>This Inner Loop Header: Depth=164; CHECK-NEXT:    slgfi %r1, 124865; CHECK-NEXT:    slgfi %r15, 124866; CHECK-NEXT:    cg %r15, 1240(%r15)67; CHECK-NEXT:    clgfi %r1, 124868; CHECK-NEXT:    jhe .LBB1_169; CHECK-NEXT:  .LBB1_2:70; CHECK-NEXT:    cgije %r1, 0, .LBB1_471; CHECK-NEXT:  # %bb.3:72; CHECK-NEXT:    slgr %r15, %r173; CHECK-NEXT:    cg %r15, -8(%r1,%r15)74; CHECK-NEXT:  .LBB1_4:75; CHECK-NEXT:    la %r1, 160(%r15)76; CHECK-NEXT:    lhi %r0, 177; CHECK-NEXT:    sty %r0, 4792(%r1)78; CHECK-NEXT:    l %r2, 0(%r1)79; CHECK-NEXT:    lmg %r11, %r15, 248(%r11)80; CHECK-NEXT:    br %r1481  %a = alloca i32, i32 %n82  %b = getelementptr inbounds i32, ptr %a, i64 119883  store volatile i32 1, ptr %b84  %c = load volatile i32, ptr %a85  ret i32 %c86}87 88; The minimum probe size is the stack alignment.89define i32 @fun2(i32 %n) #0 "stack-probe-size"="4" {90; CHECK-LABEL: fun2:91; CHECK:       # %bb.0:92; CHECK-NEXT:    stmg %r11, %r15, 88(%r15)93; CHECK-NEXT:    .cfi_offset %r11, -7294; CHECK-NEXT:    .cfi_offset %r15, -4095; CHECK-NEXT:    lgr %r0, %r1596; CHECK-NEXT:    .cfi_def_cfa_register %r097; CHECK-NEXT:    aghi %r0, -16098; CHECK-NEXT:    .cfi_def_cfa_offset 32099; CHECK-NEXT:  .LBB2_1: # =>This Inner Loop Header: Depth=1100; CHECK-NEXT:    aghi %r15, -8101; CHECK-NEXT:    cg %r0, 0(%r15)102; CHECK-NEXT:    clgrjh %r15, %r0, .LBB2_1103; CHECK-NEXT:  # %bb.2:104; CHECK-NEXT:    .cfi_def_cfa_register %r15105; CHECK-NEXT:    lgr %r11, %r15106; CHECK-NEXT:    .cfi_def_cfa_register %r11107; CHECK-NEXT:    # kill: def $r2l killed $r2l def $r2d108; CHECK-NEXT:    risbgn %r1, %r2, 30, 189, 2109; CHECK-NEXT:    la %r0, 7(%r1)110; CHECK-NEXT:    risbgn %r1, %r0, 29, 188, 0111; CHECK-NEXT:    clgijl %r1, 8, .LBB2_4112; CHECK-NEXT:  .LBB2_3: # =>This Inner Loop Header: Depth=1113; CHECK-NEXT:    slgfi %r1, 8114; CHECK-NEXT:    slgfi %r15, 8115; CHECK-NEXT:    cg %r15, 0(%r15)116; CHECK-NEXT:    clgijhe %r1, 8, .LBB2_3117; CHECK-NEXT:  .LBB2_4:118; CHECK-NEXT:    cgije %r1, 0, .LBB2_6119; CHECK-NEXT:  # %bb.5:120; CHECK-NEXT:    slgr %r15, %r1121; CHECK-NEXT:    cg %r15, -8(%r1,%r15)122; CHECK-NEXT:  .LBB2_6:123; CHECK-NEXT:    la %r1, 160(%r15)124; CHECK-NEXT:    lhi %r0, 1125; CHECK-NEXT:    sty %r0, 4792(%r1)126; CHECK-NEXT:    l %r2, 0(%r1)127; CHECK-NEXT:    lmg %r11, %r15, 248(%r11)128; CHECK-NEXT:    br %r14129  %a = alloca i32, i32 %n130  %b = getelementptr inbounds i32, ptr %a, i64 1198131  store volatile i32 1, ptr %b132  %c = load volatile i32, ptr %a133  ret i32 %c134}135 136attributes #0 =  {"probe-stack"="inline-asm"}137