11772Sjl139090//===-- addsf3vfp.S - Implement addsf3vfp ---------------------------------===//
21772Sjl139090//
31772Sjl139090//                     The LLVM Compiler Infrastructure
41772Sjl139090//
51772Sjl139090// This file is dual licensed under the MIT and the University of Illinois Open
61772Sjl139090// Source Licenses. See LICENSE.TXT for details.
71772Sjl139090//
81772Sjl139090//===----------------------------------------------------------------------===//
91772Sjl139090
101772Sjl139090#include "../assembly.h"
111772Sjl139090
121772Sjl139090//
131772Sjl139090// extern float __addsf3vfp(float a, float b);
141772Sjl139090//
151772Sjl139090// Adds two single precision floating point numbers using the Darwin
161772Sjl139090// calling convention where single arguments are passsed in GPRs
171772Sjl139090//
181772Sjl139090	.syntax unified
191772Sjl139090	.p2align 2
201772Sjl139090DEFINE_COMPILERRT_FUNCTION(__addsf3vfp)
211772Sjl139090	vmov	s14, r0		// move first param from r0 into float register
221772Sjl139090	vmov	s15, r1		// move second param from r1 into float register
231772Sjl139090	vadd.f32 s14, s14, s15
241772Sjl139090	vmov	r0, s14		// move result back to r0
251772Sjl139090	bx	lr
261772Sjl139090END_COMPILERRT_FUNCTION(__addsf3vfp)
271772Sjl139090