1*c90c8d38SSiva Chandra //===-- Implementation of the trunc function for aarch64 ------------------===// 2*c90c8d38SSiva Chandra // 3*c90c8d38SSiva Chandra // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*c90c8d38SSiva Chandra // See https://llvm.org/LICENSE.txt for license information. 5*c90c8d38SSiva Chandra // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*c90c8d38SSiva Chandra // 7*c90c8d38SSiva Chandra //===----------------------------------------------------------------------===// 8*c90c8d38SSiva Chandra 9*c90c8d38SSiva Chandra #include "src/math/trunc.h" 10*c90c8d38SSiva Chandra #include "src/__support/common.h" 11*c90c8d38SSiva Chandra 12*c90c8d38SSiva Chandra namespace __llvm_libc { 13*c90c8d38SSiva Chandra 14*c90c8d38SSiva Chandra LLVM_LIBC_FUNCTION(double, trunc, (double x)) { 15*c90c8d38SSiva Chandra double y; 16*c90c8d38SSiva Chandra __asm__ __volatile__("frintz %d0, %d1\n" : "=w"(y) : "w"(x)); 17*c90c8d38SSiva Chandra return y; 18*c90c8d38SSiva Chandra } 19*c90c8d38SSiva Chandra 20*c90c8d38SSiva Chandra } // namespace __llvm_libc 21