13fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley//===-- nedf2vfp.S - Implement nedf2vfp -----------------------------------===// 23fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// 33fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// The LLVM Compiler Infrastructure 43fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// 53fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// This file is distributed under the University of Illinois Open Source 63fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// License. See LICENSE.TXT for details. 73fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// 83fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley//===----------------------------------------------------------------------===// 93fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley 103fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley#include "../assembly.h" 113fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley 123fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// 133fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// extern double __nedf2vfp(double a, double b); 143fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// 153fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// Returns zero if a and b are unequal and neither is NaN. 163fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// Uses Darwin calling convention where double precision arguments are passsed 173fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// like in GPR pairs. 183fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley// 193fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen SmalleyDEFINE_COMPILERRT_FUNCTION(__nedf2vfp) 203fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley fmdrr d6, r0, r1 // load r0/r1 pair in double register 213fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley fmdrr d7, r2, r3 // load r2/r3 pair in double register 223fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley fcmpd d6, d7 233fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley fmstat 243fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley movne r0, #1 // set result register to 0 if unequal 253fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley moveq r0, #0 263fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley bx lr 273fab9cdeebb5bd40681a59f9f3f3406ff600cfebStephen Smalley