Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/AArch64/aarch64_win64cc_vararg.ll
; RUN: llc < %s -mtriple=aarch64-linux-gnu | FileCheck %s | ; RUN: llc < %s -mtriple=aarch64-linux-gnu | FileCheck %s | ||||
define win64cc void @pass_va(i32 %count, ...) nounwind { | define win64cc void @pass_va(i32 %count, ...) nounwind { | ||||
entry: | entry: | ||||
; CHECK: str x30, [sp, #-80]! | ; CHECK: str x30, [sp, #-80]! | ||||
; CHECK: add x8, sp, #24 | ; CHECK: add x8, sp, #24 | ||||
; CHECK: add x0, sp, #24 | ; CHECK: add x0, sp, #24 | ||||
; CHECK: stp x6, x7, [sp, #64] | ; CHECK: stp x1, x2, [sp, #24] | ||||
; CHECK: stp x4, x5, [sp, #48] | ; CHECK: stp x3, x4, [sp, #40] | ||||
; CHECK: stp x2, x3, [sp, #32] | ; CHECK: stp x5, x6, [sp, #56] | ||||
; CHECK: str x1, [sp, #24] | ; CHECK: str x7, [sp, #72] | ||||
; CHECK: str x8, [sp, #8] | ; CHECK: str x8, [sp, #8] | ||||
; CHECK: bl other_func | ; CHECK: bl other_func | ||||
; CHECK: ldr x30, [sp], #80 | ; CHECK: ldr x30, [sp], #80 | ||||
; CHECK: ret | ; CHECK: ret | ||||
%ap = alloca i8*, align 8 | %ap = alloca i8*, align 8 | ||||
%ap1 = bitcast i8** %ap to i8* | %ap1 = bitcast i8** %ap to i8* | ||||
call void @llvm.va_start(i8* %ap1) | call void @llvm.va_start(i8* %ap1) | ||||
%ap2 = load i8*, i8** %ap, align 8 | %ap2 = load i8*, i8** %ap, align 8 | ||||
▲ Show 20 Lines • Show All 57 Lines • Show Last 20 Lines |