diff options
Diffstat (limited to 'vm/compiler/template/armv5te-vfp/TEMPLATE_SQRT_DOUBLE_VFP.S')
-rw-r--r-- | vm/compiler/template/armv5te-vfp/TEMPLATE_SQRT_DOUBLE_VFP.S | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/vm/compiler/template/armv5te-vfp/TEMPLATE_SQRT_DOUBLE_VFP.S b/vm/compiler/template/armv5te-vfp/TEMPLATE_SQRT_DOUBLE_VFP.S new file mode 100644 index 0000000..1c6bb46 --- /dev/null +++ b/vm/compiler/template/armv5te-vfp/TEMPLATE_SQRT_DOUBLE_VFP.S @@ -0,0 +1,23 @@ +%verify "executed" + /* + * 64-bit floating point vfp sqrt operation. + * If the result is a NaN, bail out to library code to do + * the right thing. + * + * On entry: + * r2 src addr of op1 + * On exit: + * r0,r1 = res + */ + fldd d0, [r2] + fsqrtd d1, d0 + fcmpd d1, d1 + fmstat + fmrrd r0, r1, d1 + bxeq lr @ Result OK - return + ldr r2, .Lsqrt + fmrrd r0, r1, d0 @ reload orig operand + bx r2 @ tail call to sqrt library routine + +.Lsqrt: + .word sqrt |