;*************************************************************************
;** General Optimizer PC Absolute to Relative                           **
;** Contributor: Thomas Richter (thor)                  Nov  1st  1997  **
;** Modify all absolute addressing to PC relative if possible           **
;** This is especially for the MC68020. More optimisations are possible **
;** however.								**
;** Version 1.01, Nov 23rd:	Replaced NOP by LEA (a6),A6 to avoid	**
;**				pipeline stalls of the '060		**
;*************************************************************************



;*************************************************************************
;
; MOVE.L
;
#match
#code
%0010XXXXXX111001  =# SourceEA          ;MOVE.L ABS,rx
RRRR RRRR          =@ EA
;
;
#replace
%0010XXXXXX111010  =# SourceEA          ;MOVE.L d(PC),rx
YYYY               =@ EA
4DD6
#end


;*************************************************************************
;
; MOVE.W
;
#match
#code
%0011XXXXXX111001  =# SourceEA          ;MOVE.W ABS,rx
RRRR RRRR          =@ EA
;
;
#replace
%0011XXXXXX111010  =# SourceEA          ;MOVE.W d(PC),rx
YYYY               =@ EA
4DD6
#end


;*************************************************************************
;
; MOVE.B
;
#match
#code
%0001XXXXXX111001  =# SourceEA          ;MOVE.L ABS,rx
RRRR RRRR          =@ EA
;
;
#replace
%0001XXXXXX111010  =# SourceEA          ;MOVE.L d(PC),rx
YYYY               =@ EA
4DD6
#end


;*************************************************************************
;
; MOVE.L #???,Ax        ->      LEA
;
#match
#code
%0010XXX001111100  =# SourceEA          ;MOVE.L #ABS,Ax
RRRR RRRR          =@ EA
;
;
#replace
%0100XXX111111010  =# SourceEA          ;LEA d(PC),Ax
YYYY               =@ EA
4DD6
#end

;*************************************************************************
;
; JMP Abs
;
#match
#code
4EF9                                    ; JMP Abs.L
RRRR RRRR         =@ EA
;
;
#replace
60FF                                    ; BRA.L d
YYYY YYYY         =@ EA
#end

;*************************************************************************
;
; JSR Abs
;
#match
#code
4EB9                                    ; JSR Abs.L
RRRR RRRR         =@ EA
;
;
#replace
61FF                                    ; BSR.L d(PC)
YYYY YYYY         =@ EA
#end

;*************************************************************************
;
; PEA Abs
;
#match
#code
4879                                    ; PEA Abs.L
RRRR RRRR         =@ EA
;
;
#replace
487A                                    ; PEA d(PC)
YYYY              =@ EA
4DD6
#end

;*************************************************************************
;
; LEA Abs
;
#match
#code
%0100XXX111111001 =# SourceEA           ; LEA Abs.l,Ax
RRRR RRRR         =@ EA
;
;
#replace
%0100XXX111111010 =# SourceEA           ; LEA d(PC),Ax
YYYY              =@ EA
4DD6
#end
