; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 ; RUN: llc -march=bpfel -mcpu=v4 < %s | FileCheck %s define void @ret_s16(ptr sret([16 x i8]) %result) { ; CHECK-LABEL: ret_s16: ; CHECK: # %bb.0: ; CHECK-NEXT: *(u64 *)(r1 + 8) = 2 ; CHECK-NEXT: *(u64 *)(r1 + 0) = 1 ; CHECK-NEXT: exit store i64 1, ptr %result %p2 = getelementptr i8, ptr %result, i64 8 store i64 2, ptr %p2 ret void } define void @ret_s24(ptr sret([24 x i8]) %result) { ; CHECK-LABEL: ret_s24: ; CHECK: # %bb.0: ; CHECK-NEXT: *(u64 *)(r1 + 16) = 3 ; CHECK-NEXT: *(u64 *)(r1 + 8) = 2 ; CHECK-NEXT: *(u64 *)(r1 + 0) = 1 ; CHECK-NEXT: exit store i64 1, ptr %result %p2 = getelementptr i8, ptr %result, i64 8 store i64 2, ptr %p2 %p3 = getelementptr i8, ptr %result, i64 16 store i64 3, ptr %p3 ret void } define i64 @caller() { ; CHECK-LABEL: caller: ; CHECK: # %bb.0: ; CHECK-NEXT: r1 = r10 ; CHECK-NEXT: r1 += -16 ; CHECK-NEXT: call ret_s16 ; CHECK-NEXT: r0 = *(u64 *)(r10 - 16) ; CHECK-NEXT: exit %s = alloca [16 x i8], align 8 call void @ret_s16(ptr sret([16 x i8]) %s) %v = load i64, ptr %s ret i64 %v }