128 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s3 4; Allocate 8 bytes, no need to align stack.5define void @f0() {6; CHECK-LABEL: f0:7; CHECK: # %bb.0:8; CHECK-NEXT: aghi %r15, -1689; CHECK-NEXT: .cfi_def_cfa_offset 32810; CHECK-NEXT: mvghi 160(%r15), 1011; CHECK-NEXT: aghi %r15, 16812; CHECK-NEXT: br %r1413 %x = alloca i6414 store volatile i64 10, ptr %x15 ret void16}17 18; Allocate ptr 8, no need to align stack.19define void @f1(i64 %len) {20; CHECK-LABEL: f1:21; CHECK: # %bb.0:22; CHECK-NEXT: stmg %r11, %r15, 88(%r15)23; CHECK-NEXT: .cfi_offset %r11, -7224; CHECK-NEXT: .cfi_offset %r15, -4025; CHECK-NEXT: aghi %r15, -16026; CHECK-NEXT: .cfi_def_cfa_offset 32027; CHECK-NEXT: lgr %r11, %r1528; CHECK-NEXT: .cfi_def_cfa_register %r1129; CHECK-NEXT: lgr %r1, %r1530; CHECK-NEXT: sllg %r0, %r2, 331; CHECK-NEXT: sgr %r1, %r032; CHECK-NEXT: la %r2, 160(%r1)33; CHECK-NEXT: lgr %r15, %r134; CHECK-NEXT: mvghi 0(%r2), 1035; CHECK-NEXT: lmg %r11, %r15, 248(%r11)36; CHECK-NEXT: br %r1437 %x = alloca i64, i64 %len38 store volatile i64 10, ptr %x39 ret void40}41 42; Static alloca, align 128.43define void @f2() {44; CHECK-LABEL: f2:45; CHECK: # %bb.0:46; CHECK-NEXT: stmg %r11, %r15, 88(%r15)47; CHECK-NEXT: .cfi_offset %r11, -7248; CHECK-NEXT: .cfi_offset %r15, -4049; CHECK-NEXT: aghi %r15, -16050; CHECK-NEXT: .cfi_def_cfa_offset 32051; CHECK-NEXT: lgr %r11, %r1552; CHECK-NEXT: .cfi_def_cfa_register %r1153; CHECK-NEXT: lgr %r1, %r1554; CHECK-NEXT: aghi %r1, -12855; CHECK-NEXT: la %r2, 280(%r1)56; CHECK-NEXT: nill %r2, 6540857; CHECK-NEXT: lgr %r15, %r158; CHECK-NEXT: mvghi 0(%r2), 1059; CHECK-NEXT: lmg %r11, %r15, 248(%r11)60; CHECK-NEXT: br %r1461 %x = alloca i64, i64 1, align 12862 store volatile i64 10, ptr %x, align 12863 ret void64}65 66; Dynamic alloca, align 128.67define void @f3(i64 %len) {68; CHECK-LABEL: f3:69; CHECK: # %bb.0:70; CHECK-NEXT: stmg %r11, %r15, 88(%r15)71; CHECK-NEXT: .cfi_offset %r11, -7272; CHECK-NEXT: .cfi_offset %r15, -4073; CHECK-NEXT: aghi %r15, -16074; CHECK-NEXT: .cfi_def_cfa_offset 32075; CHECK-NEXT: lgr %r11, %r1576; CHECK-NEXT: .cfi_def_cfa_register %r1177; CHECK-NEXT: lgr %r1, %r1578; CHECK-NEXT: sllg %r0, %r2, 379; CHECK-NEXT: sgr %r1, %r080; CHECK-NEXT: lay %r15, -120(%r1)81; CHECK-NEXT: la %r1, 160(%r1)82; CHECK-NEXT: nill %r1, 6540883; CHECK-NEXT: mvghi 0(%r1), 1084; CHECK-NEXT: lmg %r11, %r15, 248(%r11)85; CHECK-NEXT: br %r1486 %x = alloca i64, i64 %len, align 12887 store volatile i64 10, ptr %x, align 12888 ret void89}90 91; Static alloca w/out alignment - part of frame.92define void @f4() {93; CHECK-LABEL: f4:94; CHECK: # %bb.0:95; CHECK-NEXT: aghi %r15, -16896; CHECK-NEXT: .cfi_def_cfa_offset 32897; CHECK-NEXT: mvhi 164(%r15), 1098; CHECK-NEXT: aghi %r15, 16899; CHECK-NEXT: br %r14100 %x = alloca i32101 store volatile i32 10, ptr %x102 ret void103}104 105; Static alloca of one i32, aligned by 128.106define void @f5() {107; CHECK-LABEL: f5:108; CHECK: # %bb.0:109; CHECK-NEXT: stmg %r11, %r15, 88(%r15)110; CHECK-NEXT: .cfi_offset %r11, -72111; CHECK-NEXT: .cfi_offset %r15, -40112; CHECK-NEXT: aghi %r15, -160113; CHECK-NEXT: .cfi_def_cfa_offset 320114; CHECK-NEXT: lgr %r11, %r15115; CHECK-NEXT: .cfi_def_cfa_register %r11116; CHECK-NEXT: lgr %r1, %r15117; CHECK-NEXT: aghi %r1, -128118; CHECK-NEXT: la %r2, 280(%r1)119; CHECK-NEXT: nill %r2, 65408120; CHECK-NEXT: lgr %r15, %r1121; CHECK-NEXT: mvhi 0(%r2), 10122; CHECK-NEXT: lmg %r11, %r15, 248(%r11)123; CHECK-NEXT: br %r14124 %x = alloca i32, i64 1, align 128125 store volatile i32 10, ptr %x126 ret void127}128