Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/ARM/2014-02-21-byval-reg-split-alignment.ll
Show All 29 Lines | |||||
; a -> r0 | ; a -> r0 | ||||
; b -> r2..r3 | ; b -> r2..r3 | ||||
define void @foo2(i32 %a, %struct8bytes8align* byval %b) { | define void @foo2(i32 %a, %struct8bytes8align* byval %b) { | ||||
; CHECK-LABEL: foo2 | ; CHECK-LABEL: foo2 | ||||
; CHECK: sub sp, sp, #8 | ; CHECK: sub sp, sp, #8 | ||||
; CHECK: push {r11, lr} | ; CHECK: push {r11, lr} | ||||
; CHECK: add r0, sp, #8 | ; CHECK: add r0, sp, #8 | ||||
; CHECK: str r3, [sp, #12] | ; CHECK-DAG: str r3, [sp, #12] | ||||
; CHECK: str r2, [sp, #8] | ; CHECK-DAG: str r2, [sp, #8] | ||||
; CHECK: bl usePtr | ; CHECK: bl usePtr | ||||
; CHECK: pop {r11, lr} | ; CHECK: pop {r11, lr} | ||||
; CHECK: add sp, sp, #8 | ; CHECK: add sp, sp, #8 | ||||
call void @usePtr(%struct8bytes8align* %b) | call void @usePtr(%struct8bytes8align* %b) | ||||
ret void | ret void | ||||
} | } | ||||
Show All 17 Lines | |||||
; a -> r0 | ; a -> r0 | ||||
; b -> r2..r3 | ; b -> r2..r3 | ||||
define void @foo4(%struct4bytes* byval %a, %struct8bytes8align* byval %b) { | define void @foo4(%struct4bytes* byval %a, %struct8bytes8align* byval %b) { | ||||
; CHECK-LABEL: foo4 | ; CHECK-LABEL: foo4 | ||||
; CHECK: sub sp, sp, #16 | ; CHECK: sub sp, sp, #16 | ||||
; CHECK: push {r11, lr} | ; CHECK: push {r11, lr} | ||||
; CHECK: str r0, [sp, #8] | ; CHECK: str r0, [sp, #8] | ||||
; CHECK: add r0, sp, #16 | ; CHECK: add r0, sp, #16 | ||||
; CHECK: str r3, [sp, #20] | ; CHECK-DAG: str r3, [sp, #20] | ||||
; CHECK: str r2, [sp, #16] | ; CHECK-DAG: str r2, [sp, #16] | ||||
; CHECK: bl usePtr | ; CHECK: bl usePtr | ||||
; CHECK: pop {r11, lr} | ; CHECK: pop {r11, lr} | ||||
; CHECK: add sp, sp, #16 | ; CHECK: add sp, sp, #16 | ||||
; CHECK: mov pc, lr | ; CHECK: mov pc, lr | ||||
call void @usePtr(%struct8bytes8align* %b) | call void @usePtr(%struct8bytes8align* %b) | ||||
ret void | ret void | ||||
} | } | ||||
Show All 33 Lines |