1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | .globl npot
.type npot, @function
# First parameter = value to elevate to the next power of two
# Return value = the given value elevated to the NPoT
npot:
xor %rax, %rax
bsr %rdi, %rcx
jz npot_end
movq $1, %rax
shl %cl, %rax
cmp %rax, %rdi
je npot_end
shl $1, %rax
npot_end:
ret
|