crypto: aesni - add compatibility with IAS
[ Upstream commit 44069737ac
]
Clang's integrated assembler complains "invalid reassignment of
non-absolute variable 'var_ddq_add'" while assembling
arch/x86/crypto/aes_ctrby8_avx-x86_64.S. It was because var_ddq_add was
reassigned with non-absolute values several times, which IAS did not
support. We can avoid the reassignment by replacing the uses of
var_ddq_add with its definitions accordingly to have compatilibility
with IAS.
Link: https://github.com/ClangBuiltLinux/linux/issues/1008
Reported-by: Sedat Dilek <sedat.dilek@gmail.com>
Reported-by: Fangrui Song <maskray@google.com>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com> # build+boot Linux v5.7.5; clang v11.0.0-git
Signed-off-by: Jian Cai <caij2003@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
5.4-rM2-2.2.x-imx-squashed
parent
c44efee6e4
commit
5ef739b7a5
|
@ -127,10 +127,6 @@ ddq_add_8:
|
||||||
|
|
||||||
/* generate a unique variable for ddq_add_x */
|
/* generate a unique variable for ddq_add_x */
|
||||||
|
|
||||||
.macro setddq n
|
|
||||||
var_ddq_add = ddq_add_\n
|
|
||||||
.endm
|
|
||||||
|
|
||||||
/* generate a unique variable for xmm register */
|
/* generate a unique variable for xmm register */
|
||||||
.macro setxdata n
|
.macro setxdata n
|
||||||
var_xdata = %xmm\n
|
var_xdata = %xmm\n
|
||||||
|
@ -140,9 +136,7 @@ ddq_add_8:
|
||||||
|
|
||||||
.macro club name, id
|
.macro club name, id
|
||||||
.altmacro
|
.altmacro
|
||||||
.if \name == DDQ_DATA
|
.if \name == XDATA
|
||||||
setddq %\id
|
|
||||||
.elseif \name == XDATA
|
|
||||||
setxdata %\id
|
setxdata %\id
|
||||||
.endif
|
.endif
|
||||||
.noaltmacro
|
.noaltmacro
|
||||||
|
@ -165,9 +159,8 @@ ddq_add_8:
|
||||||
|
|
||||||
.set i, 1
|
.set i, 1
|
||||||
.rept (by - 1)
|
.rept (by - 1)
|
||||||
club DDQ_DATA, i
|
|
||||||
club XDATA, i
|
club XDATA, i
|
||||||
vpaddq var_ddq_add(%rip), xcounter, var_xdata
|
vpaddq (ddq_add_1 + 16 * (i - 1))(%rip), xcounter, var_xdata
|
||||||
vptest ddq_low_msk(%rip), var_xdata
|
vptest ddq_low_msk(%rip), var_xdata
|
||||||
jnz 1f
|
jnz 1f
|
||||||
vpaddq ddq_high_add_1(%rip), var_xdata, var_xdata
|
vpaddq ddq_high_add_1(%rip), var_xdata, var_xdata
|
||||||
|
@ -180,8 +173,7 @@ ddq_add_8:
|
||||||
vmovdqa 1*16(p_keys), xkeyA
|
vmovdqa 1*16(p_keys), xkeyA
|
||||||
|
|
||||||
vpxor xkey0, xdata0, xdata0
|
vpxor xkey0, xdata0, xdata0
|
||||||
club DDQ_DATA, by
|
vpaddq (ddq_add_1 + 16 * (by - 1))(%rip), xcounter, xcounter
|
||||||
vpaddq var_ddq_add(%rip), xcounter, xcounter
|
|
||||||
vptest ddq_low_msk(%rip), xcounter
|
vptest ddq_low_msk(%rip), xcounter
|
||||||
jnz 1f
|
jnz 1f
|
||||||
vpaddq ddq_high_add_1(%rip), xcounter, xcounter
|
vpaddq ddq_high_add_1(%rip), xcounter, xcounter
|
||||||
|
|
Loading…
Reference in New Issue