lkml.org 
[lkml]   [2012]   [Oct]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 02/16] math128, x86_64: Implement {mul,add}_u128 in 64bit asm
On 10/24/2012 03:27 PM, H. Peter Anvin wrote:
> On 10/24/2012 02:53 PM, Juri Lelli wrote:
>> diff --git a/arch/x86/include/asm/math128.h b/arch/x86/include/asm/math128.h
>> new file mode 100644
>> index 0000000..c0e2a6c
>> --- /dev/null
>> +++ b/arch/x86/include/asm/math128.h
>> @@ -0,0 +1,39 @@
>> +#ifndef _ASM_MATH128_H
>> +#define _ASM_MATH128_H
>> +
>> +#ifdef CONFIG_X86_64
>> +
>> +#ifdef __SIZEOF_INT128__
>> +#define ARCH_HAS_INT128
>> +#endif
>> +
>> +#ifndef ARCH_HAS_INT128
>> +
>> +static inline u128 mul_u64_u64(u64 a, u64 b)
>> +{
>> + u128 res;
>> +
>> + asm("mulq %2"
>> + : "=a" (res.lo), "=d" (res.hi)
>> + : "rm" (b), "0" (a));
>> +
>> + return res;
>> +}
>> +#define mul_u64_u64 mul_u64_u64
>> +
>> +static inline u128 add_u128(u128 a, u128 b)
>> +{
>> + u128 res;
>> +
>> + asm("addq %2,%0;\n"
>> + "adcq %3,%1;\n"
>> + : "=rm" (res.lo), "=rm" (res.hi)
>> + : "r" (b.lo), "r" (b.hi), "0" (a.lo), "1" (a.hi));
>> +
>> + return res;
>> +}
>> +#define add_u128 add_u128
>> +
>
> How could this work since u128 presumably has not yet been defined as a
> structure? After all, isn't it the absence of ARCH_HAS_INT128 which
> makes that happen?

Sorry, you were not in the Cc list of the previous patch in the patchset,
so you probably missed that. I should have triple checked git send-email
Cc list. Sorry about that.

I'll add you there.

Thanks and Regards,

- Juri


\
 
 \ /
  Last update: 2012-10-25 01:21    [W:0.649 / U:0.408 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site