blob: 6c41cc45306bf8cc9267ab1fd06accf975e877ab [file]
/*
* Copyright (c) 2013 The Native Client Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
.syntax unified
.arm
/*
* TODO(jvoung): The LLVM assembler doesn't grok '.fpu vfp',
* but the PNaCl ARM assembler currently assumes +neon.
*/
#ifndef __clang__
.fpu vfp
#endif
.p2align 4
.global try_operations_with_snans
try_operations_with_snans:
/* Try a simple SNaN <op> SNaN w/ VFP ops. NEON doesn't trap. */
movw r0, #0
movt r0, #0x7fa0
vmov.f32 s14, r0
vmov.f32 s15, r0
vadd.f32 s15, s14, s15
/* Reload an argument in case it was converted to a QNaN. */
vmov.f32 s15, r0
vsub.f32 s15, s14, s15
vmov.f32 s15, r0
vmul.f32 s15, s14, s15
vmov.f32 s15, r0
vdiv.f32 s15, s14, s15
nop
bic lr, lr, #0xc000000f
bx lr