summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2018-05-08 17:45:51 +0200
committerEugen Wissner <belka@caraus.de>2018-05-08 18:07:42 +0200
commit2ec750ca05a87ebc20e358e73cb375a2c844ad59 (patch)
treef04a291d242fccf82da47612caa3658917f905ca /arch
parent6ed299286223654f1a89635c93c06d4b57062f9a (diff)
downloadtanya-2ec750ca05a87ebc20e358e73cb375a2c844ad59.tar.gz
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.
Diffstat (limited to 'arch')
-rw-r--r--arch/x64/linux/math/abs.S18
-rw-r--r--arch/x64/linux/math/log.S40
2 files changed, 29 insertions, 29 deletions
diff --git a/arch/x64/linux/math/abs.S b/arch/x64/linux/math/abs.S
index edf8ac9..6635273 100644
--- a/arch/x64/linux/math/abs.S
+++ b/arch/x64/linux/math/abs.S
@@ -2,10 +2,10 @@
// fabsf.
- .globl _D5tanya4math8nbtheory10__T3absTfZ3absFNaNbNiNffZf
- .type _D5tanya4math8nbtheory10__T3absTfZ3absFNaNbNiNffZf, @function
+ .globl _D5tanya4math8nbtheory4fabsFNaNbNiNffZf
+ .type _D5tanya4math8nbtheory4fabsFNaNbNiNffZf, @function
-_D5tanya4math8nbtheory10__T3absTfZ3absFNaNbNiNffZf:
+_D5tanya4math8nbtheory4fabsFNaNbNiNffZf:
mov $0x7fffffff, %eax
movq %rax, %xmm1
andpd %xmm1, %xmm0
@@ -13,10 +13,10 @@ _D5tanya4math8nbtheory10__T3absTfZ3absFNaNbNiNffZf:
// fabs.
- .globl _D5tanya4math8nbtheory10__T3absTdZ3absFNaNbNiNfdZd
- .type _D5tanya4math8nbtheory10__T3absTdZ3absFNaNbNiNfdZd, @function
+ .globl _D5tanya4math8nbtheory4fabsFNaNbNiNfdZd
+ .type _D5tanya4math8nbtheory4fabsFNaNbNiNfdZd, @function
-_D5tanya4math8nbtheory10__T3absTdZ3absFNaNbNiNfdZd:
+_D5tanya4math8nbtheory4fabsFNaNbNiNfdZd:
mov $0x7fffffffffffffff, %rax
movq %rax, %xmm1
andpd %xmm1, %xmm0
@@ -24,12 +24,12 @@ _D5tanya4math8nbtheory10__T3absTdZ3absFNaNbNiNfdZd:
// fabsl.
- .globl _D5tanya4math8nbtheory10__T3absTeZ3absFNaNbNiNfeZe
- .type _D5tanya4math8nbtheory10__T3absTeZ3absFNaNbNiNfeZe, @function
+ .globl _D5tanya4math8nbtheory4fabsFNaNbNiNfeZe
+ .type _D5tanya4math8nbtheory4fabsFNaNbNiNfeZe, @function
// Load the parameter from the stack onto FP stack, execute 'fabs' instruction
// The result is returned in ST0.
-_D5tanya4math8nbtheory10__T3absTeZ3absFNaNbNiNfeZe:
+_D5tanya4math8nbtheory4fabsFNaNbNiNfeZe:
fldt 0x8(%rsp)
fabs
ret
diff --git a/arch/x64/linux/math/log.S b/arch/x64/linux/math/log.S
index 941e399..9c5ed35 100644
--- a/arch/x64/linux/math/log.S
+++ b/arch/x64/linux/math/log.S
@@ -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