diff --git a/libc/src/math/x86_64/cos.cpp b/libc/src/math/x86_64/cos.cpp --- a/libc/src/math/x86_64/cos.cpp +++ b/libc/src/math/x86_64/cos.cpp @@ -12,9 +12,8 @@ namespace __llvm_libc { LLVM_LIBC_FUNCTION(double, cos, (double x)) { - double result; - __asm__ __volatile__("fcos" : "=t"(result) : "f"(x) : "cc"); - return result; + __asm__ __volatile__("fcos" : "+t"(x)); + return x; } } // namespace __llvm_libc diff --git a/libc/src/math/x86_64/sin.cpp b/libc/src/math/x86_64/sin.cpp --- a/libc/src/math/x86_64/sin.cpp +++ b/libc/src/math/x86_64/sin.cpp @@ -12,9 +12,8 @@ namespace __llvm_libc { LLVM_LIBC_FUNCTION(double, sin, (double x)) { - double result; - __asm__ __volatile__("fsin" : "=t"(result) : "f"(x) : "cc"); - return result; + __asm__ __volatile__("fsin" : "+t"(x)); + return x; } } // namespace __llvm_libc diff --git a/libc/src/math/x86_64/tan.cpp b/libc/src/math/x86_64/tan.cpp --- a/libc/src/math/x86_64/tan.cpp +++ b/libc/src/math/x86_64/tan.cpp @@ -13,10 +13,9 @@ LLVM_LIBC_FUNCTION(double, tan, (double x)) { double result; - double one; // The fptan instruction pushes the number 1 on to the FP stack after // computing tan. So, we read out the one before popping the actual result. - __asm__ __volatile__("fptan" : "=t"(one) : "f"(x) : "cc"); + __asm__ __volatile__("fptan" : "+t"(x)); __asm__ __volatile__("fstpl %0" : "=m"(result)); return result; }