1dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org//===-- floatsisfvfp.S - Implement floatsisfvfp ---------------------------===// 2dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// 3dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// The LLVM Compiler Infrastructure 4dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// 5dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// This file is dual licensed under the MIT and the University of Illinois Open 6dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// Source Licenses. See LICENSE.TXT for details. 7dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// 8dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org//===----------------------------------------------------------------------===// 9dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org 10dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#include "../assembly.h" 11dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org 12dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// 13dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// extern float __floatsisfvfp(int a); 14dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// 15dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// Converts single precision float to a 32-bit int rounding towards zero. 16dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// Uses Darwin calling convention where a single precision result is 17dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// return in a GPR.. 18dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org// 19dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org .syntax unified 20dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org .p2align 2 21dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgDEFINE_COMPILERRT_FUNCTION(__floatsisfvfp) 22dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org vmov s15, r0 // move int to float register s15 23dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org vcvt.f32.s32 s15, s15 // convert 32-bit int in s15 to float in s15 24dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org vmov r0, s15 // move s15 to result register 25dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org bx lr 26dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgEND_COMPILERRT_FUNCTION(__floatsisfvfp) 27dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org