brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · ceba7b1 Raw
50 lines · plain
1; RUN: llc -verify-machineinstrs < %s | FileCheck %s2 3target datalayout = "e-p:16:16:16-i8:8:8-i16:16:16-i32:16:32-n8:16"4target triple = "msp430---elf"5 6declare void @llvm.va_start(ptr) nounwind7declare void @llvm.va_end(ptr) nounwind8declare void @llvm.va_copy(ptr, ptr) nounwind9 10define void @va_start(i16 %a, ...) nounwind {11entry:12; CHECK-LABEL: va_start:13; CHECK: sub #2, r114  %vl = alloca ptr, align 215  %vl1 = bitcast ptr %vl to ptr16; CHECK-NEXT: mov r1, [[REG:r[0-9]+]]17; CHECK-NEXT: add #6, [[REG]]18; CHECK-NEXT: mov [[REG]], 0(r1)19  call void @llvm.va_start(ptr %vl1)20  call void @llvm.va_end(ptr %vl1)21  ret void22}23 24define i16 @va_arg(ptr %vl) nounwind {25entry:26; CHECK-LABEL: va_arg:27  %vl.addr = alloca ptr, align 228  store ptr %vl, ptr %vl.addr, align 229; CHECK: mov r12, [[REG:r[0-9]+]]30; CHECK-NEXT: incd [[REG]]31; CHECK-NEXT: mov [[REG]], 0(r1)32  %0 = va_arg ptr %vl.addr, i1633; CHECK-NEXT: mov 0(r12), r1234  ret i16 %035}36 37define void @va_copy(ptr %vl) nounwind {38entry:39; CHECK-LABEL: va_copy:40  %vl.addr = alloca ptr, align 241  %vl2 = alloca ptr, align 242; CHECK-DAG: mov r12, 2(r1)43  store ptr %vl, ptr %vl.addr, align 244  %0 = bitcast ptr %vl2 to ptr45  %1 = bitcast ptr %vl.addr to ptr46; CHECK-DAG: mov r12, 0(r1)47  call void @llvm.va_copy(ptr %0, ptr %1)48  ret void49}50