+ case 'I': /* produce value of bitfield assignment */
+ /* avoid shifts -- shifts are SLOW on this machine */
+ {
+ register NODE *r = p->in.right;
+ if(r->in.op == ICON && r->tn.name[0] == '\0') {
+ putstr("movl\t");
+ printf(ACONFMT, r->tn.lval & ((1<<fldsz)-1));
+ }
+ else {
+ putstr("andl3\t");
+ printf(ACONFMT, (1 << fldsz) - 1);
+ putchar(',');
+ adrput(r);
+ }
+ putchar(',');
+ adrput(resc);
+ break;
+ }
+