Re: [PATCH 7/7] crypto, x86, LLVM: aesni - fix token pasting

From: Matthias Kaehlcke
Date: Mon Apr 03 2017 - 19:14:51 EST


El Thu, Mar 16, 2017 at 05:15:20PM -0700 Michael Davidson ha dit:

> aes_ctrby8_avx-x86_64.S uses the C preprocessor for token pasting
> of character sequences that are not valid preprocessor tokens.
> While this is allowed when preprocessing assembler files it exposes
> an incompatibilty between the clang and gcc preprocessors where
> clang does not strip leading white space from macro parameters,
> leading to the CONCAT(%xmm, i) macro expansion on line 96 resulting
> in a token with a space character embedded in it.
>
> While this could be fixed by deleting the offending space character,
> the assembler is perfectly capable of handling the token pasting
> correctly for itself so it seems preferable to let it do so and to
> get rid or the CONCAT(), DDQ() and XMM() preprocessor macros.
>
> Signed-off-by: Michael Davidson <md@xxxxxxxxxx>
> ---
> arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 7 ++-----
> 1 file changed, 2 insertions(+), 5 deletions(-)
>
> diff --git a/arch/x86/crypto/aes_ctrby8_avx-x86_64.S b/arch/x86/crypto/aes_ctrby8_avx-x86_64.S
> index a916c4a61165..5f6a5af9c489 100644
> --- a/arch/x86/crypto/aes_ctrby8_avx-x86_64.S
> +++ b/arch/x86/crypto/aes_ctrby8_avx-x86_64.S
> @@ -65,7 +65,6 @@
> #include <linux/linkage.h>
> #include <asm/inst.h>
>
> -#define CONCAT(a,b) a##b
> #define VMOVDQ vmovdqu
>
> #define xdata0 %xmm0
> @@ -92,8 +91,6 @@
> #define num_bytes %r8
>
> #define tmp %r10
> -#define DDQ(i) CONCAT(ddq_add_,i)
> -#define XMM(i) CONCAT(%xmm, i)
> #define DDQ_DATA 0
> #define XDATA 1
> #define KEY_128 1
> @@ -131,12 +128,12 @@ ddq_add_8:
> /* generate a unique variable for ddq_add_x */
>
> .macro setddq n
> - var_ddq_add = DDQ(\n)
> + var_ddq_add = ddq_add_\n
> .endm
>
> /* generate a unique variable for xmm register */
> .macro setxdata n
> - var_xdata = XMM(\n)
> + var_xdata = %xmm\n
> .endm
>
> /* club the numeric 'id' to the symbol 'name' */

Any feedback on this patch?

Thanks

Matthias