On 12/04/12 02:48, Joey Ye wrote:
> For thumb1 use move + add instructions for immediate move [256-510].
> Following is a complete range if combine an imm mov with listed
> instructions. Among them, lsls and neg have already been implemented. The
> only missing opportunity is add, in which I enabled in this patch. Others
> are replicated with lsls or neg.
> 1. Result imm range with 16bit movs
> Insn Result imm with movs
> lsls [0x1-0xff] shifted by 1-31
> add [256, 510]
> neg [-255, 0]
> rev [0x1000000-0xff000000] step 0x1000000
> rev16 [0x100-0xff00] step 0x100
> revsh [0x10000-0xff0000] step 0x10000
> rsb [-255, 0]
> mvn [-255, 0]
> sub [-255, 0]
> sxtb [-255, 0]
> * config/arm/constraints.md (Pe): New constraint.
> * config/arm/arm.md: New split for imm 256-510.
> * gcc.target/arm/thumb1-imm.c: New testcase.