arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires more registers than available

2021-04-05 Thread kernel test robot
Hi Jason,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   0a50438c84363bd37fe18fe432888ae9a074dcab
commit: 07b586fe06625b0b610dc3d3a969c51913d143d4 crypto: x86/curve25519 - 
replace with formally verified implementation
date:   1 year, 2 months ago
config: x86_64-randconfig-a012-20210406 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 
2760a808b9916a2839513b7fd7314a464f52481e)
reproduce (this is a W=1 build):
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=07b586fe06625b0b610dc3d3a969c51913d143d4
git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 07b586fe06625b0b610dc3d3a969c51913d143d4
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot 

All errors (new ones prefixed by >>):

>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   "  movq 0(%1), %%rdx;"   
/* f[0] */
           ^
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   19 errors generated.


vim +518 arch/x86/crypto/curve25519-x86_64.c

   509  
   510  /* Computes the square of a field element: out <- f * f
   511   * Uses the 8-element buffer tmp for intermediate results */
   512  static inline void fsqr(u64 *out, const u64 *f, u64 *tmp)
   513  {
   514  asm volatile(
   515  /* Compute the raw multiplication: tmp <- f * f */
   516  
   517  /* Step 1: Compute all partial products */
 > 518  "  movq 0(%1), %%rdx;"  
 >  /* f[0] */
   519  "  mulxq 8(%1), %%r8, %%r14;"  "  xor %%r15, 
%%r15;" /* f[1]*f[0] */
   520  "  mulxq 16(%1), %%r9, %%r10;" "  adcx %%r14, 
%%r9;" /* f[2]*f[0] */
   521  "  mulxq 24(%1), %%rax, %%rcx;""  adcx %%rax, 
%%r10;"/* f[3]*f[0] */
   522  "  movq 24(%1), %%rdx;" 
 /* f[3] */
   523  "  mulxq 

arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires more registers than available

2021-03-19 Thread kernel test robot
Hi Jason,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   8b12a62a4e3ed4ae99c715034f557eb391d6b196
commit: 07b586fe06625b0b610dc3d3a969c51913d143d4 crypto: x86/curve25519 - 
replace with formally verified implementation
date:   1 year, 1 month ago
config: x86_64-randconfig-a014-20210319 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 
fcc1ce00931751ac02498986feb37744e9ace8de)
reproduce (this is a W=1 build):
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=07b586fe06625b0b610dc3d3a969c51913d143d4
git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 07b586fe06625b0b610dc3d3a969c51913d143d4
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot 

All errors (new ones prefixed by >>):

>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   "  movq 0(%1), %%rdx;"   
/* f[0] */
           ^
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   19 errors generated.


vim +518 arch/x86/crypto/curve25519-x86_64.c

   509  
   510  /* Computes the square of a field element: out <- f * f
   511   * Uses the 8-element buffer tmp for intermediate results */
   512  static inline void fsqr(u64 *out, const u64 *f, u64 *tmp)
   513  {
   514  asm volatile(
   515  /* Compute the raw multiplication: tmp <- f * f */
   516  
   517  /* Step 1: Compute all partial products */
 > 518  "  movq 0(%1), %%rdx;"  
 >  /* f[0] */
   519  "  mulxq 8(%1), %%r8, %%r14;"  "  xor %%r15, 
%%r15;" /* f[1]*f[0] */
   520  "  mulxq 16(%1), %%r9, %%r10;" "  adcx %%r14, 
%%r9;" /* f[2]*f[0] */
   521  "  mulxq 24(%1), %%rax, %%rcx;""  adcx %%rax, 
%%r10;"/* f[3]*f[0] */
   522  "  movq 24(%1), %%rdx;" 
 /* f[3] */
   523  "  mulxq 

arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires more registers than available

2020-07-11 Thread kernel test robot
Hi Jason,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   0aea6d5c5be33ce94c16f9ab2f64de1f481f424b
commit: 07b586fe06625b0b610dc3d3a969c51913d143d4 crypto: x86/curve25519 - 
replace with formally verified implementation
date:   5 months ago
config: x86_64-randconfig-a003-20200712 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 
02946de3802d3bc65bc9f2eb9b8d4969b5a7add8)
reproduce (this is a W=1 build):
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
git checkout 07b586fe06625b0b610dc3d3a969c51913d143d4
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot 

All errors (new ones prefixed by >>):

>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   "  movq 0(%1), %%rdx;"   
/* f[0] */
           ^
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   9 errors generated.

vim +518 arch/x86/crypto/curve25519-x86_64.c

   509  
   510  /* Computes the square of a field element: out <- f * f
   511   * Uses the 8-element buffer tmp for intermediate results */
   512  static inline void fsqr(u64 *out, const u64 *f, u64 *tmp)
   513  {
   514  asm volatile(
   515  /* Compute the raw multiplication: tmp <- f * f */
   516  
   517  /* Step 1: Compute all partial products */
 > 518  "  movq 0(%1), %%rdx;"  
 >  /* f[0] */
   519  "  mulxq 8(%1), %%r8, %%r14;"  "  xor %%r15, 
%%r15;" /* f[1]*f[0] */
   520  "  mulxq 16(%1), %%r9, %%r10;" "  adcx %%r14, 
%%r9;" /* f[2]*f[0] */
   521  "  mulxq 24(%1), %%rax, %%rcx;""  adcx %%rax, 
%%r10;"/* f[3]*f[0] */
   522  "  movq 24(%1), %%rdx;" 
 /* f[3] */
   523  "  mulxq 8(%1), %%r11, %%r12;" "  adcx %%rcx, 
%%r11;"/* f[1]*f[3] */
   524  "  mulxq 16(%1), %%rax, %%r13;""  adcx %%rax, 
%%r12;"/* f[2]*f[3] */
   525  "  movq 8(%1), %%rdx;" "  adcx %%r15, 
%%r13;"/* f1 */
   526  "  mulxq 16(%1), %%rax, %%rcx;""  mov $0, %%r14;"   
 /* f[2]*f[1] */
   527  
   528  /* Step 2: Compute two parallel carry chains */
   529  "  xor %%r15, %%r15;"
   530  "  adox %%rax, %%r10;"
   531  "  adcx %%r8, %%r8;"
   532  "  adox %%rcx, %%r11;"
   533  "  adcx %%r9, %%r9;"
   534  "  adox %%r15, %%r12;"
   535  "  adcx %%r10, %%r10;"
   536  "  adox %%r15, %%r13;"
   537  "  adcx %%r11, %%r11;"
   538  "  adox %%r15, %%r14;"
   539  "  adcx %%r12, %%r12;"
   540  "  adcx %%r13, %%r13;"
   541  "  adcx %%r14, %%r14;"
   542  
   543  /* Step 3: Compute intermediate squares */
   544  "  movq 0(%1), %%rdx;" "  mulx %%rdx, %%rax, 
%%rcx;"/* f[0]^2 */
   545 "  movq %%rax, 0(%0);

arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires more registers than available

2020-07-04 Thread kernel test robot
Hi Jason,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   35e884f89df4c48566d745dc5a97a0d058d04263
commit: 07b586fe06625b0b610dc3d3a969c51913d143d4 crypto: x86/curve25519 - 
replace with formally verified implementation
date:   5 months ago
config: x86_64-randconfig-a002-20200705 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 
e359ab1eca5727ce4c688bb49323b8a09478d61c)
reproduce (this is a W=1 build):
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
git checkout 07b586fe06625b0b610dc3d3a969c51913d143d4
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot 

All errors (new ones prefixed by >>):

>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   "  movq 0(%1), %%rdx;"   
/* f[0] */
           ^
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   arch/x86/crypto/curve25519-x86_64.c:609:3: error: inline assembly requires 
more registers than available
   "  movq 0(%1), %%rdx;"   
/* f[0] */
   ^
   arch/x86/crypto/curve25519-x86_64.c:609:3: error: inline assembly requires 
more registers than available
   11 errors generated.

vim +518 arch/x86/crypto/curve25519-x86_64.c

   509  
   510  /* Computes the square of a field element: out <- f * f
   511   * Uses the 8-element buffer tmp for intermediate results */
   512  static inline void fsqr(u64 *out, const u64 *f, u64 *tmp)
   513  {
   514  asm volatile(
   515  /* Compute the raw multiplication: tmp <- f * f */
   516  
   517  /* Step 1: Compute all partial products */
 > 518  "  movq 0(%1), %%rdx;"  
 >  /* f[0] */
   519  "  mulxq 8(%1), %%r8, %%r14;"  "  xor %%r15, 
%%r15;" /* f[1]*f[0] */
   520  "  mulxq 16(%1), %%r9, %%r10;" "  adcx %%r14, 
%%r9;" /* f[2]*f[0] */
   521  "  mulxq 24(%1), %%rax, %%rcx;""  adcx %%rax, 
%%r10;"/* f[3]*f[0] */
   522  "  movq 24(%1), %%rdx;" 
 /* f[3] */
   523  "  mulxq 8(%1), %%r11, %%r12;" "  adcx %%rcx, 
%%r11;"/* f[1]*f[3] */
   524  "  mulxq 16(%1), %%rax, %%r13;""  adcx %%rax, 
%%r12;"/* f[2]*f[3] */
   525  "  movq 8(%1), %%rdx;" "  adcx %%r15, 
%%r13;"/* f1 */
   526  "  mulxq 16(%1), %%rax, %%rcx;""  mov $0, %%r14;"   
 /* f[2]*f[1] */
   527  
   528  /* Step 2: Compute two parallel carry chains */
   529  "  xor %%r15, %%r15;"
   530  "  adox %%rax, %%r10;"
   531  "  adcx %%r8, %%r8;"
   532  "  adox %%rcx, %%r11;"
   533  "  adcx %%r9, %%r9;"
   534  "  adox %%r15, %%r12;"
   535  "  adcx %%r10, %%r10;"
   536  "  adox %%r15, %%r13;"
   537  "  adcx %%r11, %%r11;"
   538  "  adox %%r15, %%r14;"
   539  "  adcx %%r12, %%r12;"
   540  "  adcx %%r13,

arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires more registers than available

2020-06-18 Thread kernel test robot
Hi Jason,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   1b5044021070efa3259f3e9548dc35d1eb6aa844
commit: 07b586fe06625b0b610dc3d3a969c51913d143d4 crypto: x86/curve25519 - 
replace with formally verified implementation
date:   4 months ago
config: x86_64-randconfig-r011-20200618 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 
487ca07fcc75d52755c9fe2ee05bcb3b6c44)
reproduce (this is a W=1 build):
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
git checkout 07b586fe06625b0b610dc3d3a969c51913d143d4
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot 

All errors (new ones prefixed by >>):

>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   "  movq 0(%1), %%rdx;"   
/* f[0] */
           ^
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   9 errors generated.

vim +518 arch/x86/crypto/curve25519-x86_64.c

   509  
   510  /* Computes the square of a field element: out <- f * f
   511   * Uses the 8-element buffer tmp for intermediate results */
   512  static inline void fsqr(u64 *out, const u64 *f, u64 *tmp)
   513  {
   514  asm volatile(
   515  /* Compute the raw multiplication: tmp <- f * f */
   516  
   517  /* Step 1: Compute all partial products */
 > 518  "  movq 0(%1), %%rdx;"  
 >  /* f[0] */
   519  "  mulxq 8(%1), %%r8, %%r14;"  "  xor %%r15, 
%%r15;" /* f[1]*f[0] */
   520  "  mulxq 16(%1), %%r9, %%r10;" "  adcx %%r14, 
%%r9;" /* f[2]*f[0] */
   521  "  mulxq 24(%1), %%rax, %%rcx;""  adcx %%rax, 
%%r10;"/* f[3]*f[0] */
   522  "  movq 24(%1), %%rdx;" 
 /* f[3] */
   523  "  mulxq 8(%1), %%r11, %%r12;" "  adcx %%rcx, 
%%r11;"/* f[1]*f[3] */
   524  "  mulxq 16(%1), %%rax, %%r13;""  adcx %%rax, 
%%r12;"/* f[2]*f[3] */
   525  "  movq 8(%1), %%rdx;" "  adcx %%r15, 
%%r13;"/* f1 */
   526  "  mulxq 16(%1), %%rax, %%rcx;""  mov $0, %%r14;"   
 /* f[2]*f[1] */
   527  
   528  /* Step 2: Compute two parallel carry chains */
   529  "  xor %%r15, %%r15;"
   530  "  adox %%rax, %%r10;"
   531  "  adcx %%r8, %%r8;"
   532  "  adox %%rcx, %%r11;"
   533  "  adcx %%r9, %%r9;"
   534  "  adox %%r15, %%r12;"
   535  "  adcx %%r10, %%r10;"
   536  "  adox %%r15, %%r13;"
   537  "  adcx %%r11, %%r11;"
   538  "  adox %%r15, %%r14;"
   539  "  adcx %%r12, %%r12;"
   540  "  adcx %%r13, %%r13;"
   541  "  adcx %%r14, %%r14;"
   542  
   543  /* Step 3: Compute intermediate squares */
   544  "  movq 0(%1), %%rdx;" "  mulx %%rdx, %%rax, 
%%rcx;"/* f[0]^2 */
   545 "  movq %%rax, 0(%0);

arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires more registers than available

2020-06-03 Thread kernel test robot
Hi Jason,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   d6f9469a03d832dcd17041ed67774ffb5f3e73b3
commit: 07b586fe06625b0b610dc3d3a969c51913d143d4 crypto: x86/curve25519 - 
replace with formally verified implementation
date:   4 months ago
config: x86_64-randconfig-r012-20200603 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 
16437992cac249f6fe1efd392d20e3469b47e39e)
reproduce (this is a W=1 build):
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
git checkout 07b586fe06625b0b610dc3d3a969c51913d143d4
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot 

All errors (new ones prefixed by >>, old ones prefixed by <<):

>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
"  movq 0(%1), %%rdx;"           /* f[0] */
^
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
arch/x86/crypto/curve25519-x86_64.c:609:3: error: inline assembly requires more 
registers than available
"  movq 0(%1), %%rdx;"   /* f[0] */
^
arch/x86/crypto/curve25519-x86_64.c:609:3: error: inline assembly requires more 
registers than available
11 errors generated.

vim +518 arch/x86/crypto/curve25519-x86_64.c

   509  
   510  /* Computes the square of a field element: out <- f * f
   511   * Uses the 8-element buffer tmp for intermediate results */
   512  static inline void fsqr(u64 *out, const u64 *f, u64 *tmp)
   513  {
   514  asm volatile(
   515  /* Compute the raw multiplication: tmp <- f * f */
   516  
   517  /* Step 1: Compute all partial products */
 > 518  "  movq 0(%1), %%rdx;"  
 >  /* f[0] */
   519  "  mulxq 8(%1), %%r8, %%r14;"  "  xor %%r15, 
%%r15;" /* f[1]*f[0] */
   520  "  mulxq 16(%1), %%r9, %%r10;" "  adcx %%r14, 
%%r9;" /* f[2]*f[0] */
   521  "  mulxq 24(%1), %%rax, %%rcx;""  adcx %%rax, 
%%r10;"/* f[3]*f[0] */
   522  "  movq 24(%1), %%rdx;" 
 /* f[3] */
   523  "  mulxq 8(%1), %%r11, %%r12;" "  adcx %%rcx, 
%%r11;"/* f[1]*f[3] */
   524  "  mulxq 16(%1), %%rax, %%r13;""  adcx %%rax, 
%%r12;"/* f[2]*f[3] */
   525  "  movq 8(%1), %%rdx;" "  adcx %%r15, 
%%r13;"/* f1 */
   526  "  mulxq 16(%1), %%rax, %%rcx;""  mov $0, %%r14;"   
 /* f[2]*f[1] */
   527  
   528  /* Step 2: Compute two parallel carry chains */
   529  "  xor %%r15, %%r15;"
   530  "  adox %%rax, %%r10;"
   531  "  adcx %%r8, %%r8;"
   532  "  adox %%rcx, %%r11;"
   533  "  adcx %%r9, %%r9;"
   534  "  adox %%r15, %%r12;"
   535  "  adcx %%r10, %%r10;"
   536  "  adox %%r15, %%r13;"
   537  "  adcx %%r11, %%r11;"
   538  "  adox %%r15, %%r14;"
   539  "  adcx %%r12, %%r12;"
   540  "  adcx %%r13, %%r13;"
   541  "  adcx %%r

arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires more registers than available

2020-05-18 Thread kbuild test robot
Hi Jason,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   b9bbe6ed63b2b9f2c9ee5cbd0f2c946a2723f4ce
commit: 07b586fe06625b0b610dc3d3a969c51913d143d4 crypto: x86/curve25519 - 
replace with formally verified implementation
date:   3 months ago
config: x86_64-randconfig-r001-20200518 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 
135b877874fae96b4372c8a3fbfaa8ff44ff86e3)
reproduce:
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
git checkout 07b586fe06625b0b610dc3d3a969c51913d143d4
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot 

All errors (new ones prefixed by >>, old ones prefixed by <<):

>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
"  movq 0(%1), %%rdx;"           /* f[0] */
^
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
9 errors generated.

vim +518 arch/x86/crypto/curve25519-x86_64.c

   509  
   510  /* Computes the square of a field element: out <- f * f
   511   * Uses the 8-element buffer tmp for intermediate results */
   512  static inline void fsqr(u64 *out, const u64 *f, u64 *tmp)
   513  {
   514  asm volatile(
   515  /* Compute the raw multiplication: tmp <- f * f */
   516  
   517  /* Step 1: Compute all partial products */
 > 518  "  movq 0(%1), %%rdx;"  
 >  /* f[0] */
   519  "  mulxq 8(%1), %%r8, %%r14;"  "  xor %%r15, 
%%r15;" /* f[1]*f[0] */
   520  "  mulxq 16(%1), %%r9, %%r10;" "  adcx %%r14, 
%%r9;" /* f[2]*f[0] */
   521  "  mulxq 24(%1), %%rax, %%rcx;""  adcx %%rax, 
%%r10;"/* f[3]*f[0] */
   522  "  movq 24(%1), %%rdx;" 
 /* f[3] */
   523  "  mulxq 8(%1), %%r11, %%r12;" "  adcx %%rcx, 
%%r11;"/* f[1]*f[3] */
   524  "  mulxq 16(%1), %%rax, %%r13;""  adcx %%rax, 
%%r12;"/* f[2]*f[3] */
   525  "  movq 8(%1), %%rdx;" "  adcx %%r15, 
%%r13;"/* f1 */
   526  "  mulxq 16(%1), %%rax, %%rcx;""  mov $0, %%r14;"   
 /* f[2]*f[1] */
   527  
   528  /* Step 2: Compute two parallel carry chains */
   529  "  xor %%r15, %%r15;"
   530  "  adox %%rax, %%r10;"
   531  "  adcx %%r8, %%r8;"
   532  "  adox %%rcx, %%r11;"
   533  "  adcx %%r9, %%r9;"
   534  "  adox %%r15, %%r12;"
   535  "  adcx %%r10, %%r10;"
   536  "  adox %%r15, %%r13;"
   537  "  adcx %%r11, %%r11;"
   538  "  adox %%r15, %%r14;"
   539  "  adcx %%r12, %%r12;"
   540  "  adcx %%r13, %%r13;"
   541  "  adcx %%r14, %%r14;"
   542  
   543  /* Step 3: Compute intermediate squares */
   544  "  movq 0(%1), %%rdx;" "  mulx %%rdx, %%rax, 
%%rcx;"/* f[0]^2 */
   545 "  movq %%rax, 0(%0);"
   546  

arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires more registers than available

2020-04-30 Thread kbuild test robot
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   c45e8bccecaf633480d378daff11e122dfd5e96d
commit: 07b586fe06625b0b610dc3d3a969c51913d143d4 crypto: x86/curve25519 - 
replace with formally verified implementation
date:   3 months ago
config: x86_64-randconfig-a002-20200501 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 
1ccde533425a4ba9d379510206ad680ff9702129)
reproduce:
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
git checkout 07b586fe06625b0b610dc3d3a969c51913d143d4
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot 

All errors (new ones prefixed by >>):

>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   "  movq 0(%1), %%rdx;"   
/* f[0] */
           ^
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
>> arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires 
>> more registers than available
   9 errors generated.

vim +518 arch/x86/crypto/curve25519-x86_64.c

   509  
   510  /* Computes the square of a field element: out <- f * f
   511   * Uses the 8-element buffer tmp for intermediate results */
   512  static inline void fsqr(u64 *out, const u64 *f, u64 *tmp)
   513  {
   514  asm volatile(
   515  /* Compute the raw multiplication: tmp <- f * f */
   516  
   517  /* Step 1: Compute all partial products */
 > 518  "  movq 0(%1), %%rdx;"  
 >  /* f[0] */
   519  "  mulxq 8(%1), %%r8, %%r14;"  "  xor %%r15, 
%%r15;" /* f[1]*f[0] */
   520  "  mulxq 16(%1), %%r9, %%r10;" "  adcx %%r14, 
%%r9;" /* f[2]*f[0] */
   521  "  mulxq 24(%1), %%rax, %%rcx;""  adcx %%rax, 
%%r10;"/* f[3]*f[0] */
   522  "  movq 24(%1), %%rdx;" 
 /* f[3] */
   523  "  mulxq 8(%1), %%r11, %%r12;" "  adcx %%rcx, 
%%r11;"/* f[1]*f[3] */
   524  "  mulxq 16(%1), %%rax, %%r13;""  adcx %%rax, 
%%r12;"/* f[2]*f[3] */
   525  "  movq 8(%1), %%rdx;" "  adcx %%r15, 
%%r13;"/* f1 */
   526  "  mulxq 16(%1), %%rax, %%rcx;""  mov $0, %%r14;"   
 /* f[2]*f[1] */
   527  
   528  /* Step 2: Compute two parallel carry chains */
   529  "  xor %%r15, %%r15;"
   530  "  adox %%rax, %%r10;"
   531  "  adcx %%r8, %%r8;"
   532  "  adox %%rcx, %%r11;"
   533  "  adcx %%r9, %%r9;"
   534  "  adox %%r15, %%r12;"
   535  "  adcx %%r10, %%r10;"
   536  "  adox %%r15, %%r13;"
   537  "  adcx %%r11, %%r11;"
   538  "  adox %%r15, %%r14;"
   539  "  adcx %%r12, %%r12;"
   540  "  adcx %%r13, %%r13;"
   541  "  adcx %%r14, %%r14;"
   542  
   543  /* Step 3: Compute intermediate squares */
   544  "  movq 0(%1), %%rdx;" "  mulx %%rdx, %%rax, 
%%rcx;"/* f[0]^2 */
   545 "  movq %%rax, 0(%0);"
   546  "  add %%rcx,