arch/x86/crypto/curve25519-x86_64.c:518:3: error: inline assembly requires more registers than available
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
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
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
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
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
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
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
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,