All of lore.kernel.org
 help / color / mirror / Atom feed
* [Cocci] transform needing a calculation from a Python script
@ 2018-03-01 19:13 Allan, Bruce W
  2018-03-01 19:46 ` Julia Lawall
  0 siblings, 1 reply; 6+ messages in thread
From: Allan, Bruce W @ 2018-03-01 19:13 UTC (permalink / raw)
  To: cocci

We have a macro that takes a right-justified contiguous set of bits and shifts it left to create a bitmask:

#define FOO(m, s)            (m) << (s)

where m is in hex and s is an integer.  I'd like to transform occurrences of it to the Linux kernel's GENMASK(high, low) macro (which creates a contiguous bitmask starting at bit position low and ending@position high), but am having problems trying to figure out how to do that.

For example, I'd like to transform:
               #define BITMASK_A         FOO(0x3F, 4)                      /* 0x3F0 */
to
               #define BITMASK_A         GENMASK(9, 4)                 /* 0x3F0 */

The value s in FOO() is the same as the value low in GENMASK(), but the value high in GENMASK() must be calculated from the values m and s in FOO().  One calculation would be to use the hamming weight (hweight) such as hweight(m) + s - 1.  My Python-foo is non-existent but I have found online an example for calculating the hamming weight with the Python script 'def hweight(n): return bin(n).count("1")'.  Is it possible to use this (or another) Python script in a Coccinelle script to do this transform, and if so, what would that look like?  If the transform cannot use Python, is there another suggestion?

Thanks,
Bruce.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://systeme.lip6.fr/pipermail/cocci/attachments/20180301/d114de3a/attachment.html>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-03-03  9:40 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-01 19:13 [Cocci] transform needing a calculation from a Python script Allan, Bruce W
2018-03-01 19:46 ` Julia Lawall
2018-03-01 21:17   ` Allan, Bruce W
2018-03-02  6:39     ` Julia Lawall
2018-03-03  9:05     ` Robert Larice
2018-03-03  9:40       ` Julia Lawall

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.