brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.4 KiB · 8ed707d Raw
148 lines · plain
1; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s2 3define i32 @va_func(i32, ...) {4; CHECK-LABEL: va_func:5; CHECK:       ldl.sx %s0, 184(, %s9)6; CHECK:       ld2b.sx %s18, 192(, %s9)7; CHECK:       ld1b.sx %s19, 200(, %s9)8; CHECK:       ldl.sx %s20, 208(, %s9)9; CHECK:       ld2b.zx %s21, 216(, %s9)10; CHECK:       ld1b.zx %s22, 224(, %s9)11; CHECK:       ldu %s23, 236(, %s9)12; CHECK:       ld %s24, 240(, %s9)13; CHECK:       ld %s25, 248(, %s9)14 15  %va = alloca ptr, align 816  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %va)17  call void @llvm.va_start(ptr nonnull %va)18  %p1 = va_arg ptr %va, i3219  %p2 = va_arg ptr %va, i1620  %p3 = va_arg ptr %va, i821  %p4 = va_arg ptr %va, i3222  %p5 = va_arg ptr %va, i1623  %p6 = va_arg ptr %va, i824  %p7 = va_arg ptr %va, float25  %p8 = va_arg ptr %va, ptr26  %p9 = va_arg ptr %va, i6427  %p10 = va_arg ptr %va, double28  call void @llvm.va_end(ptr nonnull %va)29  call void @use_i32(i32 %p1)30  call void @use_s16(i16 %p2)31  call void @use_s8(i8 %p3)32  call void @use_i32(i32 %p4)33  call void @use_u16(i16 %p5)34  call void @use_u8(i8 %p6)35  call void @use_float(float %p7)36  call void @use_i8p(ptr %p8)37  call void @use_i64(i64 %p9)38  call void @use_double(double %p10)39  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %va)40  ret i32 041}42 43define i32 @va_copy0(i32, ...) {44; CHECK-LABEL: va_copy0:45; CHECK:       ldl.sx %s0,46; CHECK:       ld2b.sx %s18,47; CHECK:       ld1b.sx %s19,48; CHECK:       ldl.sx %s20,49; CHECK:       ld2b.zx %s21,50; CHECK:       ld1b.zx %s22,51; CHECK:       ldu %s23,52; CHECK:       ld %s24,53; CHECK:       ld %s25,54 55  %va = alloca ptr, align 856  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %va)57  call void @llvm.va_start(ptr nonnull %va)58  %vb = alloca ptr, align 859  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %va)60  call void @llvm.va_copy(ptr nonnull %vb, ptr nonnull %va)61  call void @llvm.va_end(ptr nonnull %va)62  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %va)63  %p1 = va_arg ptr %vb, i3264  %p2 = va_arg ptr %vb, i1665  %p3 = va_arg ptr %vb, i866  %p4 = va_arg ptr %vb, i3267  %p5 = va_arg ptr %vb, i1668  %p6 = va_arg ptr %vb, i869  %p7 = va_arg ptr %vb, float70  %p8 = va_arg ptr %vb, ptr71  %p9 = va_arg ptr %vb, i6472  %p10 = va_arg ptr %vb, double73  call void @llvm.va_end(ptr nonnull %vb)74  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %vb)75  call void @use_i32(i32 %p1)76  call void @use_s16(i16 %p2)77  call void @use_s8(i8 %p3)78  call void @use_i32(i32 %p4)79  call void @use_u16(i16 %p5)80  call void @use_u8(i8 %p6)81  call void @use_float(float %p7)82  call void @use_i8p(ptr %p8)83  call void @use_i64(i64 %p9)84  call void @use_double(double %p10)85  ret i32 086}87 88define i32 @va_copy8(i32, ...) {89; CHECK-LABEL: va_copy8:90; CHECK:       ldl.sx %s0,91; CHECK:       ld2b.sx %s18,92; CHECK:       ld1b.sx %s19,93; CHECK:       ldl.sx %s20,94; CHECK:       ld2b.zx %s21,95; CHECK:       ld1b.zx %s22,96; CHECK:       ldu %s23,97; CHECK:       ld %s24,98; CHECK:       ld %s25,99 100  %va = alloca ptr, align 8101  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %va)102  call void @llvm.va_start(ptr nonnull %va)103  %p1 = va_arg ptr %va, i32104  %p2 = va_arg ptr %va, i16105  %p3 = va_arg ptr %va, i8106  %p4 = va_arg ptr %va, i32107  %p5 = va_arg ptr %va, i16108  %p6 = va_arg ptr %va, i8109  %p7 = va_arg ptr %va, float110 111  %vc = alloca ptr, align 8112  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %va)113  call void @llvm.va_copy(ptr nonnull %vc, ptr nonnull %va)114  call void @llvm.va_end(ptr nonnull %va)115  %p8 = va_arg ptr %vc, ptr116  %p9 = va_arg ptr %vc, i64117  %p10 = va_arg ptr %vc, double118  call void @llvm.va_end(ptr nonnull %vc)119  call void @use_i32(i32 %p1)120  call void @use_s16(i16 %p2)121  call void @use_s8(i8 %p3)122  call void @use_i32(i32 %p4)123  call void @use_u16(i16 %p5)124  call void @use_u8(i8 %p6)125  call void @use_float(float %p7)126  call void @use_i8p(ptr %p8)127  call void @use_i64(i64 %p9)128  call void @use_double(double %p10)129  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %va)130  ret i32 0131}132 133declare void @use_i64(i64)134declare void @use_i32(i32)135declare void @use_u16(i16 zeroext)136declare void @use_u8(i8 zeroext)137declare void @use_s16(i16 signext)138declare void @use_s8(i8 signext)139declare void @use_i8p(ptr)140declare void @use_float(float)141declare void @use_double(double)142 143declare void @llvm.lifetime.start.p0(i64, ptr nocapture)144declare void @llvm.va_start(ptr)145declare void @llvm.va_copy(ptr, ptr)146declare void @llvm.va_end(ptr)147declare void @llvm.lifetime.end.p0(i64, ptr nocapture)148