eval: add general support for "integer functions" and add ilog2*()
commit290b4cb3a4d32ec8260e88b4e67fc968cf9adb5e
authorH. Peter Anvin <hpa@zytor.com>
Thu, 31 May 2012 17:25:37 +0000 (31 10:25 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Thu, 31 May 2012 17:25:37 +0000 (31 10:25 -0700)
treede83fd4983a16831905213858b417239aa58cb75
parent3d1d159e1c876308712fd5e21089dfddfbad1e69
eval: add general support for "integer functions" and add ilog2*()

Add general support in the function parser for "integer functions"
(actually implemented as special unary operators, then wrapped in
macros) and implement a family of integer logarithms.  The only
difference is the behavior on a non-power-of-two argument:

ilog2[e] -- throw an error
ilog2w -- throw a warning
ilog2f -- round down to power of 2
ilog2c -- round up to power of 2

This is useful for back-converting from masks to bit values.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
eval.c
macros/ifunc.mac [new file with mode: 0644]
nasm.h
tokens.dat