Fix math.nbtheory linkage to asm
Don't use extern for templated functions. If the function argument is const, it gets a different mangling. So define a private function for each floatint point length and call it from template.
This commit is contained in:
@ -1,22 +1,29 @@
|
||||
.text
|
||||
|
||||
|
||||
// logl.
|
||||
.globl _D5tanya4math8nbtheory9__T2lnTeZ2lnFNaNbNiNfeZe
|
||||
.type _D5tanya4math8nbtheory9__T2lnTeZ2lnFNaNbNiNfeZe, @function
|
||||
// logf.
|
||||
.globl _D5tanya4math8nbtheory4logfFNaNbNiNffZf
|
||||
.type _D5tanya4math8nbtheory4logfFNaNbNiNffZf, @function
|
||||
|
||||
_D5tanya4math8nbtheory4logfFNaNbNiNffZf:
|
||||
movss %xmm0, -4(%rsp) // Put the argument onto the stack
|
||||
|
||||
_D5tanya4math8nbtheory9__T2lnTeZ2lnFNaNbNiNfeZe:
|
||||
fldln2 // Put lb(e) onto the FPU stack
|
||||
fldt 8(%rsp) // Put the argument onto the FPU stack
|
||||
flds -4(%rsp) // Put a float onto the FPU stack
|
||||
fyl2x // %st1 * lb(%st0)
|
||||
|
||||
// The result is on the FPU stack, but returned in %xmm0
|
||||
fstps -4(%rsp)
|
||||
movss -4(%rsp), %xmm0
|
||||
|
||||
ret
|
||||
|
||||
|
||||
// log.
|
||||
.globl _D5tanya4math8nbtheory9__T2lnTdZ2lnFNaNbNiNfdZd
|
||||
.type _D5tanya4math8nbtheory9__T2lnTdZ2lnFNaNbNiNfdZd, @function
|
||||
.globl _D5tanya4math8nbtheory3logFNaNbNiNfdZd
|
||||
.type _D5tanya4math8nbtheory3logFNaNbNiNfdZd, @function
|
||||
|
||||
_D5tanya4math8nbtheory9__T2lnTdZ2lnFNaNbNiNfdZd:
|
||||
_D5tanya4math8nbtheory3logFNaNbNiNfdZd:
|
||||
movsd %xmm0, -8(%rsp) // Put the argument onto the stack
|
||||
|
||||
fldln2 // Put lb(e) onto the FPU stack
|
||||
@ -30,19 +37,12 @@ _D5tanya4math8nbtheory9__T2lnTdZ2lnFNaNbNiNfdZd:
|
||||
ret
|
||||
|
||||
|
||||
// logf.
|
||||
.globl _D5tanya4math8nbtheory9__T2lnTfZ2lnFNaNbNiNffZf
|
||||
.type _D5tanya4math8nbtheory9__T2lnTfZ2lnFNaNbNiNffZf, @function
|
||||
|
||||
_D5tanya4math8nbtheory9__T2lnTfZ2lnFNaNbNiNffZf:
|
||||
movss %xmm0, -4(%rsp) // Put the argument onto the stack
|
||||
// logl.
|
||||
.globl _D5tanya4math8nbtheory4loglFNaNbNiNfeZe
|
||||
.type _D5tanya4math8nbtheory4loglFNaNbNiNfeZe, @function
|
||||
|
||||
_D5tanya4math8nbtheory4loglFNaNbNiNfeZe:
|
||||
fldln2 // Put lb(e) onto the FPU stack
|
||||
flds -4(%rsp) // Put a float onto the FPU stack
|
||||
fldt 8(%rsp) // Put the argument onto the FPU stack
|
||||
fyl2x // %st1 * lb(%st0)
|
||||
|
||||
// The result is on the FPU stack, but returned in %xmm0
|
||||
fstps -4(%rsp)
|
||||
movss -4(%rsp), %xmm0
|
||||
|
||||
ret
|
||||
|
Reference in New Issue
Block a user