HomeFreeBSD

Rename skein_block_asm.s to .S and assemble using Clang IAS

Description

Rename skein_block_asm.s to .S and assemble using Clang IAS

Comparing the object files produced by GNU as 2.17.50 and Clang IAS
shows many immaterial changes in strtab etc., and one material change
in .text:

1bac:  4c 8b 4f 18             mov    0x18(%rdi),%r9
1bb0:  eb 0e                   jmp    1bc0 <Skein1024_block_loop>
  • 1bb2: 66 66 2e 0f 1f 84 00 data16 nopw %cs:0x0(%rax,%rax,1)
  • 1bb9: 00 00 00 00
  • 1bbd: 0f 1f 00 nopl (%rax)

+ 1bb2: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
+ 1bb9: 00 00 00
+ 1bbc: 0f 1f 40 00 nopl 0x0(%rax)

0000000000001bc0 <Skein1024_block_loop>:
Skein1024_block_loop():

1bc0:  4c 8b 47 10             mov    0x10(%rdi),%r8
1bc4:  4c 03 85 c0 00 00 00    add    0xc0(%rbp),%r8

That is, GNU as and Clang's integrated assembler use different multi-
byte NOPs for alignment (GNU as emits an 11 byte NOP + a 3 byte NOP,
while Clang IAS emits a 10 byte NOP + a 4 byte NOP).

Dependency cleanup hacks are not required, because we do not create
.depend files from GNU as.

Reviewed by: allanjude, arichardson, cem, tsoome
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D8434