* remove bic instructions after lsr if possible

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23456 3ad0048d-3df7-0310-abae-a5850022a9f2
* improve ShiftShiftShift2ShiftShift to look further ahead
* check register usage so the destination register can be different

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23457 3ad0048d-3df7-0310-abae-a5850022a9f2
+ AndLslXsr2And and AndLsl2Lsl optimization

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23458 3ad0048d-3df7-0310-abae-a5850022a9f2
* if cs_opt_level3 is not set, limit lookahead of GetNextInstructionUsingReg to one instruction:
  only -O3 means do the really slow optimizations

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23459 3ad0048d-3df7-0310-abae-a5850022a9f2
* refactored some code and introduced usage of new method RegEndOfLife

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23460 3ad0048d-3df7-0310-abae-a5850022a9f2
* make AndAnd2And working with other instructions in between

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23461 3ad0048d-3df7-0310-abae-a5850022a9f2
* take care of instruction in between when doing ShiftShiftShift2ShiftShift optimizations

git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23462 3ad0048d-3df7-0310-abae-a5850022a9f2