I've done the neccessary changes.
One is in SDCCopt.c (it changes the ic->op to
BITWISEAND) for unsigned char left operands and right
literals of 2^n.
The second change is made in mcs51/gen.c
There I implemented a effective algorithm for moduls
signed char by 2^n literals. It saves at least 50% of the
needed cycles (5 instead of 10).
Similar improvements can be made to the other ports (in
the port-dedicated gen.c)
I attached the diff output because I'm not a developer.
If I can become a developer of SDCC I would to some
support to the project.