From 57911e85012dd9661ee89716087bf84a020b76b2 Mon Sep 17 00:00:00 2001 From: Mamy Ratsimbazafy Date: Sat, 27 Jul 2024 16:31:39 +0200 Subject: [PATCH] feat(crandall reduction): prevent asm for mul on 32-bit reloaded --- .../math/arithmetic/assembly/limbs_asm_crandall_x86.nim | 6 ++++-- .../arithmetic/assembly/limbs_asm_crandall_x86_adx_bmi2.nim | 6 +++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/constantine/math/arithmetic/assembly/limbs_asm_crandall_x86.nim b/constantine/math/arithmetic/assembly/limbs_asm_crandall_x86.nim index be1cfae2..ee4b730a 100644 --- a/constantine/math/arithmetic/assembly/limbs_asm_crandall_x86.nim +++ b/constantine/math/arithmetic/assembly/limbs_asm_crandall_x86.nim @@ -10,8 +10,10 @@ import # Standard library std/macros, # Internal - constantine/platforms/abstractions, - ./limbs_asm_mul_x86 + constantine/platforms/abstractions + +when UseASM_X86_64: + import ./limbs_asm_mul_x86 # ############################################################ # diff --git a/constantine/math/arithmetic/assembly/limbs_asm_crandall_x86_adx_bmi2.nim b/constantine/math/arithmetic/assembly/limbs_asm_crandall_x86_adx_bmi2.nim index de8ea93a..d4256467 100644 --- a/constantine/math/arithmetic/assembly/limbs_asm_crandall_x86_adx_bmi2.nim +++ b/constantine/math/arithmetic/assembly/limbs_asm_crandall_x86_adx_bmi2.nim @@ -11,9 +11,11 @@ import std/macros, # Internal constantine/platforms/abstractions, - ./limbs_asm_mul_x86_adx_bmi2, ./limbs_asm_crandall_x86 +when UseASM_X86_64: + import ./limbs_asm_mul_x86_adx_bmi2 + # ############################################################ # # Assembly implementation of finite fields @@ -178,6 +180,7 @@ func mulCranPartialReduce_asm_adx*[N: static int]( r: var Limbs[N], a, b: Limbs[N], m: static int, c: static SecretWord) = + static: doAssert UseASM_X86_64, "x86-32 does not have enough registers for squaring" var r2 {.noInit.}: Limbs[2*N] r2.mul_asm_adx(a, b) r.reduceCrandallPartial_asm_adx(r2, m, c) @@ -186,6 +189,7 @@ func squareCranPartialReduce_asm_adx*[N: static int]( r: var Limbs[N], a: Limbs[N], m: static int, c: static SecretWord) = + static: doAssert UseASM_X86_64, "x86-32 does not have enough registers for squaring" var r2 {.noInit.}: Limbs[2*N] r2.square_asm_adx(a) r.reduceCrandallPartial_asm_adx(r2, m, c)