| Tim Northover | 52d3283 | 2014-04-22 12:45:47 +0000 | [diff] [blame] | 1 | ; RUN: llc -verify-machineinstrs -mtriple=arm64-none-linux-gnu -disable-fp-elim < %s | FileCheck %s | 
|  | 2 | declare void @use_addr(i8*) | 
|  | 3 |  | 
|  | 4 | @addr = global i8* null | 
|  | 5 |  | 
|  | 6 | define void @test_bigframe() { | 
|  | 7 | ; CHECK-LABEL: test_bigframe: | 
|  | 8 | ; CHECK: .cfi_startproc | 
|  | 9 |  | 
|  | 10 | %var1 = alloca i8, i32 20000000 | 
|  | 11 | %var2 = alloca i8, i32 16 | 
|  | 12 | %var3 = alloca i8, i32 20000000 | 
|  | 13 |  | 
|  | 14 | ; CHECK: sub sp, sp, #16773120 | 
|  | 15 | ; CHECK: sub sp, sp, #16773120 | 
|  | 16 | ; CHECK: sub sp, sp, #6451200 | 
|  | 17 | ; CHECK: sub sp, sp, #2576 | 
|  | 18 | ; CHECK: .cfi_def_cfa_offset 40000032 | 
|  | 19 |  | 
|  | 20 |  | 
|  | 21 | ; CHECK: add [[TMP:x[0-9]+]], sp, #16773120 | 
|  | 22 | ; CHECK: add [[TMP1:x[0-9]+]], [[TMP]], #3223552 | 
|  | 23 | ; CHECK: add {{x[0-9]+}}, [[TMP1]], #3344 | 
|  | 24 | store volatile i8* %var1, i8** @addr | 
|  | 25 |  | 
|  | 26 | %var1plus2 = getelementptr i8* %var1, i32 2 | 
|  | 27 | store volatile i8* %var1plus2, i8** @addr | 
|  | 28 |  | 
|  | 29 | ; CHECK: add [[TMP:x[0-9]+]], sp, #16773120 | 
|  | 30 | ; CHECK: add [[TMP1:x[0-9]+]], [[TMP]], #3223552 | 
|  | 31 | ; CHECK: add {{x[0-9]+}}, [[TMP1]], #3328 | 
|  | 32 | store volatile i8* %var2, i8** @addr | 
|  | 33 |  | 
|  | 34 | %var2plus2 = getelementptr i8* %var2, i32 2 | 
|  | 35 | store volatile i8* %var2plus2, i8** @addr | 
|  | 36 |  | 
|  | 37 | store volatile i8* %var3, i8** @addr | 
|  | 38 |  | 
|  | 39 | %var3plus2 = getelementptr i8* %var3, i32 2 | 
|  | 40 | store volatile i8* %var3plus2, i8** @addr | 
|  | 41 |  | 
|  | 42 | ; CHECK: add sp, sp, #16773120 | 
|  | 43 | ; CHECK: add sp, sp, #16773120 | 
|  | 44 | ; CHECK: add sp, sp, #6451200 | 
|  | 45 | ; CHECK: add sp, sp, #2576 | 
|  | 46 | ; CHECK: .cfi_endproc | 
|  | 47 | ret void | 
|  | 48 | } | 
|  | 49 |  | 
|  | 50 | define void @test_mediumframe() { | 
|  | 51 | ; CHECK-LABEL: test_mediumframe: | 
|  | 52 | %var1 = alloca i8, i32 1000000 | 
|  | 53 | %var2 = alloca i8, i32 16 | 
|  | 54 | %var3 = alloca i8, i32 1000000 | 
|  | 55 | ; CHECK: sub sp, sp, #1998848 | 
|  | 56 | ; CHECK-NEXT: sub sp, sp, #1168 | 
|  | 57 |  | 
|  | 58 | store volatile i8* %var1, i8** @addr | 
|  | 59 | ; CHECK: add     [[VAR1ADDR:x[0-9]+]], sp, #999424 | 
|  | 60 | ; CHECK: add     [[VAR1ADDR]], [[VAR1ADDR]], #592 | 
|  | 61 |  | 
|  | 62 | ; CHECK: add [[VAR2ADDR:x[0-9]+]], sp, #999424 | 
|  | 63 | ; CHECK: add [[VAR2ADDR]], [[VAR2ADDR]], #576 | 
|  | 64 |  | 
|  | 65 | store volatile i8* %var2, i8** @addr | 
|  | 66 | ; CHECK: add     sp, sp, #1998848 | 
|  | 67 | ; CHECK: add     sp, sp, #1168 | 
|  | 68 | ret void | 
|  | 69 | } |