Get codebase completely working with LLVM
You can now build Cosmopolitan with Clang:
make -j8 MODE=llvm
o/llvm/examples/hello.com
The assembler and linker code is now friendly to LLVM too.
So it's not needed to configure Clang to use binutils under
the hood. If you love LLVM then you can now use pure LLVM.
This commit is contained in:
@@ -18,22 +18,22 @@
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/macros.h"
|
||||
|
||||
/ Finds lowest set bit in word.
|
||||
/
|
||||
/ uint32 𝑥 bsf(𝑥) tzcnt(𝑥) ffs(𝑥) bsr(𝑥) lzcnt(𝑥)
|
||||
/ 0x00000000 wut 32 0 wut 32
|
||||
/ 0x00000001 0 0 1 0 31
|
||||
/ 0x80000001 0 0 1 31 0
|
||||
/ 0x80000000 31 31 32 31 0
|
||||
/ 0x00000010 4 4 5 4 27
|
||||
/ 0x08000010 4 4 5 27 4
|
||||
/ 0x08000000 27 27 28 27 4
|
||||
/ 0xffffffff 0 0 1 31 0
|
||||
/
|
||||
/ @param edi is the input number
|
||||
/ @return number in range [1,32] or 0 if no bits set
|
||||
/ @see also treasure trove of nearly identical functions
|
||||
/ @asyncsignalsafe
|
||||
// Finds lowest set bit in word.
|
||||
//
|
||||
// uint32 𝑥 bsf(𝑥) tzcnt(𝑥) ffs(𝑥) bsr(𝑥) lzcnt(𝑥)
|
||||
// 0x00000000 wut 32 0 wut 32
|
||||
// 0x00000001 0 0 1 0 31
|
||||
// 0x80000001 0 0 1 31 0
|
||||
// 0x80000000 31 31 32 31 0
|
||||
// 0x00000010 4 4 5 4 27
|
||||
// 0x08000010 4 4 5 27 4
|
||||
// 0x08000000 27 27 28 27 4
|
||||
// 0xffffffff 0 0 1 31 0
|
||||
//
|
||||
// @param edi is the input number
|
||||
// @return number in range [1,32] or 0 if no bits set
|
||||
// @see also treasure trove of nearly identical functions
|
||||
// @asyncsignalsafe
|
||||
ffs: .leafprologue
|
||||
.profilable
|
||||
or $-1,%edx
|
||||
|
||||
Reference in New Issue
Block a user