On Thu, Apr 24, 2008 at 12:01 PM, Mohamed Shafi <[EMAIL PROTECTED]> wrote: > Hello all, > > The target that i am porting in gcc 4.1.2, has the following instructions > > setb Rx, bitno > clrb Rx, bitno > > where bit bitno of Rx will either be set or reset. > > For statements like > > a |= (1 << 2); and > b &= ~(1 << 2); > > I can use the above instructions directly. But i am not sure how to > write the patterns for the above instructions. > Can anybody help me with this? >
What i have done is to have the following pattern (define_insn "setbhi3" [(set (match_operand:HI 0 "register_operand" "=r") (ior:HI (match_operand:HI 1 "register_operand" "%0") (match_operand:HI 2 "setclrb_operand" "I")))] "" "setb\\t%0, %2" ) where setclrb_operand is (define_predicate "setclrb_operand" (match_code "const_int") { if (CONSTANT_P (op)) { if (INTVAL(op) && !(INTVAL(op) & (INTVAL(op) - 1))) if (INTVAL(op) < BITS_PER_WORD) return 1; } return 0; }) I am now able to generate the instruction. Is this OK? Thank you for your time. Regards, Shafi.