mirror of
https://github.com/cc65/cc65.git
synced 2025-01-11 11:30:13 +00:00
The OptNegXXX function were actually handling bnega... runtime stuff. Renamed
them accordingly. git-svn-id: svn://svn.cc65.org/cc65/trunk@5731 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
bb41dccfe3
commit
4333c76710
@ -1179,12 +1179,12 @@ static OptFunc DOptLoad2 = { OptLoad2, "OptLoad2", 200, 0,
|
||||
static OptFunc DOptRTS = { OptRTS, "OptRTS", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptRTSJumps1 = { OptRTSJumps1, "OptRTSJumps1", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptRTSJumps2 = { OptRTSJumps2, "OptRTSJumps2", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptNegA1 = { OptNegA1, "OptNegA1", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptNegA2 = { OptNegA2, "OptNegA2", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptNegAX1 = { OptNegAX1, "OptNegAX1", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptNegAX2 = { OptNegAX2, "OptNegAX2", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptNegAX3 = { OptNegAX3, "OptNegAX3", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptNegAX4 = { OptNegAX4, "OptNegAX4", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptBNegA1 = { OptBNegA1, "OptBNegA1", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptBNegA2 = { OptBNegA2, "OptBNegA2", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptBNegAX1 = { OptBNegAX1, "OptBNegAX1", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptBNegAX2 = { OptBNegAX2, "OptBNegAX2", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptBNegAX3 = { OptBNegAX3, "OptBNegAX3", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptBNegAX4 = { OptBNegAX4, "OptBNegAX4", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptPrecalc = { OptPrecalc, "OptPrecalc", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptPtrLoad1 = { OptPtrLoad1, "OptPtrLoad1", 100, 0, 0, 0, 0, 0 };
|
||||
static OptFunc DOptPtrLoad2 = { OptPtrLoad2, "OptPtrLoad2", 100, 0, 0, 0, 0, 0 };
|
||||
@ -1271,12 +1271,12 @@ static OptFunc* OptFuncs[] = {
|
||||
&DOptJumpTarget3,
|
||||
&DOptLoad1,
|
||||
&DOptLoad2,
|
||||
&DOptNegA1,
|
||||
&DOptNegA2,
|
||||
&DOptNegAX1,
|
||||
&DOptNegAX2,
|
||||
&DOptNegAX3,
|
||||
&DOptNegAX4,
|
||||
&DOptBNegA1,
|
||||
&DOptBNegA2,
|
||||
&DOptBNegAX1,
|
||||
&DOptBNegAX2,
|
||||
&DOptBNegAX3,
|
||||
&DOptBNegAX4,
|
||||
&DOptPrecalc,
|
||||
&DOptPtrLoad1,
|
||||
&DOptPtrLoad11,
|
||||
@ -1583,10 +1583,10 @@ static unsigned RunOptGroup1 (CodeSeg* S)
|
||||
Changes += RunOptFunc (S, &DOptPtrLoad15, 1);
|
||||
Changes += RunOptFunc (S, &DOptPtrLoad16, 1);
|
||||
Changes += RunOptFunc (S, &DOptPtrLoad17, 1);
|
||||
Changes += RunOptFunc (S, &DOptNegAX1, 1);
|
||||
Changes += RunOptFunc (S, &DOptNegAX2, 1);
|
||||
Changes += RunOptFunc (S, &DOptNegAX3, 1);
|
||||
Changes += RunOptFunc (S, &DOptNegAX4, 1);
|
||||
Changes += RunOptFunc (S, &DOptBNegAX1, 1);
|
||||
Changes += RunOptFunc (S, &DOptBNegAX2, 1);
|
||||
Changes += RunOptFunc (S, &DOptBNegAX3, 1);
|
||||
Changes += RunOptFunc (S, &DOptBNegAX4, 1);
|
||||
Changes += RunOptFunc (S, &DOptAdd1, 1);
|
||||
Changes += RunOptFunc (S, &DOptAdd2, 1);
|
||||
Changes += RunOptFunc (S, &DOptAdd4, 1);
|
||||
@ -1640,8 +1640,8 @@ static unsigned RunOptGroup3 (CodeSeg* S)
|
||||
do {
|
||||
C = 0;
|
||||
|
||||
C += RunOptFunc (S, &DOptNegA1, 1);
|
||||
C += RunOptFunc (S, &DOptNegA2, 1);
|
||||
C += RunOptFunc (S, &DOptBNegA1, 1);
|
||||
C += RunOptFunc (S, &DOptBNegA2, 1);
|
||||
C += RunOptFunc (S, &DOptStackOps, 1);
|
||||
C += RunOptFunc (S, &DOptSub1, 1);
|
||||
C += RunOptFunc (S, &DOptSub2, 1);
|
||||
|
@ -6,8 +6,8 @@
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* (C) 2001-2005, Ullrich von Bassewitz */
|
||||
/* Römerstrasse 52 */
|
||||
/* (C) 2001-2012, Ullrich von Bassewitz */
|
||||
/* Roemerstrasse 52 */
|
||||
/* D-70794 Filderstadt */
|
||||
/* EMail: uz@cc65.org */
|
||||
/* */
|
||||
@ -41,12 +41,12 @@
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* nega optimizations */
|
||||
/* bnega optimizations */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
unsigned OptNegA1 (CodeSeg* S)
|
||||
unsigned OptBNegA1 (CodeSeg* S)
|
||||
/* Check for
|
||||
*
|
||||
* ldx #$00
|
||||
@ -98,10 +98,10 @@ unsigned OptNegA1 (CodeSeg* S)
|
||||
|
||||
|
||||
|
||||
unsigned OptNegA2 (CodeSeg* S)
|
||||
unsigned OptBNegA2 (CodeSeg* S)
|
||||
/* Check for
|
||||
*
|
||||
* lda ..
|
||||
* lda ..
|
||||
* jsr bnega
|
||||
* jeq/jne ..
|
||||
*
|
||||
@ -160,12 +160,12 @@ unsigned OptNegA2 (CodeSeg* S)
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* negax optimizations */
|
||||
/* bnegax optimizations */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
unsigned OptNegAX1 (CodeSeg* S)
|
||||
unsigned OptBNegAX1 (CodeSeg* S)
|
||||
/* On a call to bnegax, if X is zero, the result depends only on the value in
|
||||
* A, so change the call to a call to bnega. This will get further optimized
|
||||
* later if possible.
|
||||
@ -209,7 +209,7 @@ unsigned OptNegAX1 (CodeSeg* S)
|
||||
|
||||
|
||||
|
||||
unsigned OptNegAX2 (CodeSeg* S)
|
||||
unsigned OptBNegAX2 (CodeSeg* S)
|
||||
/* Search for the sequence:
|
||||
*
|
||||
* ldy #xx
|
||||
@ -282,7 +282,7 @@ unsigned OptNegAX2 (CodeSeg* S)
|
||||
|
||||
|
||||
|
||||
unsigned OptNegAX3 (CodeSeg* S)
|
||||
unsigned OptBNegAX3 (CodeSeg* S)
|
||||
/* Search for the sequence:
|
||||
*
|
||||
* lda xx
|
||||
@ -343,7 +343,7 @@ unsigned OptNegAX3 (CodeSeg* S)
|
||||
|
||||
|
||||
|
||||
unsigned OptNegAX4 (CodeSeg* S)
|
||||
unsigned OptBNegAX4 (CodeSeg* S)
|
||||
/* Search for the sequence:
|
||||
*
|
||||
* jsr xxx
|
||||
@ -352,7 +352,7 @@ unsigned OptNegAX4 (CodeSeg* S)
|
||||
*
|
||||
* and replace it by:
|
||||
*
|
||||
* jsr xxx
|
||||
* jsr xxx
|
||||
* <boolean test>
|
||||
* jne/jeq ...
|
||||
*/
|
||||
@ -385,14 +385,14 @@ unsigned OptNegAX4 (CodeSeg* S)
|
||||
/* Insert apropriate test code */
|
||||
if (ByteSized) {
|
||||
/* Test bytes */
|
||||
X = NewCodeEntry (OP65_TAX, AM65_IMP, 0, 0, L[0]->LI);
|
||||
CS_InsertEntry (S, X, I+2);
|
||||
X = NewCodeEntry (OP65_TAX, AM65_IMP, 0, 0, L[0]->LI);
|
||||
CS_InsertEntry (S, X, I+2);
|
||||
} else {
|
||||
/* Test words */
|
||||
X = NewCodeEntry (OP65_STX, AM65_ZP, "tmp1", 0, L[0]->LI);
|
||||
CS_InsertEntry (S, X, I+2);
|
||||
X = NewCodeEntry (OP65_ORA, AM65_ZP, "tmp1", 0, L[0]->LI);
|
||||
CS_InsertEntry (S, X, I+3);
|
||||
/* Test words */
|
||||
X = NewCodeEntry (OP65_STX, AM65_ZP, "tmp1", 0, L[0]->LI);
|
||||
CS_InsertEntry (S, X, I+2);
|
||||
X = NewCodeEntry (OP65_ORA, AM65_ZP, "tmp1", 0, L[0]->LI);
|
||||
CS_InsertEntry (S, X, I+3);
|
||||
}
|
||||
|
||||
/* Delete the subroutine call */
|
||||
|
@ -6,10 +6,10 @@
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* (C) 2001 Ullrich von Bassewitz */
|
||||
/* Wacholderweg 14 */
|
||||
/* D-70597 Stuttgart */
|
||||
/* EMail: uz@cc65.org */
|
||||
/* (C) 2001-2012, Ullrich von Bassewitz */
|
||||
/* Roemerstrasse 52 */
|
||||
/* D-70794 Filderstadt */
|
||||
/* EMail: uz@cc65.org */
|
||||
/* */
|
||||
/* */
|
||||
/* This software is provided 'as-is', without any expressed or implied */
|
||||
@ -44,26 +44,26 @@
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* nega optimizations */
|
||||
/* bnega optimizations */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
unsigned OptNegA1 (CodeSeg* S);
|
||||
unsigned OptBNegA1 (CodeSeg* S);
|
||||
/* Check for
|
||||
*
|
||||
* ldx #$00
|
||||
* lda ..
|
||||
* jsr bnega
|
||||
* ldx #$00
|
||||
* lda ..
|
||||
* jsr bnega
|
||||
*
|
||||
* Remove the ldx if the lda does not use it.
|
||||
*/
|
||||
|
||||
unsigned OptNegA2 (CodeSeg* S);
|
||||
unsigned OptBNegA2 (CodeSeg* S);
|
||||
/* Check for
|
||||
*
|
||||
* lda ..
|
||||
* jsr bnega
|
||||
* lda ..
|
||||
* jsr bnega
|
||||
* jeq/jne ..
|
||||
*
|
||||
* Adjust the conditional branch and remove the call to the subroutine.
|
||||
@ -72,25 +72,25 @@ unsigned OptNegA2 (CodeSeg* S);
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/* negax optimizations */
|
||||
/* bnegax optimizations */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
unsigned OptNegAX1 (CodeSeg* S);
|
||||
unsigned OptBNegAX1 (CodeSeg* S);
|
||||
/* On a call to bnegax, if X is zero, the result depends only on the value in
|
||||
* A, so change the call to a call to bnega. This will get further optimized
|
||||
* later if possible.
|
||||
*/
|
||||
|
||||
unsigned OptNegAX2 (CodeSeg* S);
|
||||
unsigned OptBNegAX2 (CodeSeg* S);
|
||||
/* Search for the sequence:
|
||||
*
|
||||
* lda (xx),y
|
||||
* lda (xx),y
|
||||
* tax
|
||||
* dey
|
||||
* lda (xx),y
|
||||
* jsr bnegax
|
||||
* lda (xx),y
|
||||
* jsr bnegax
|
||||
* jne/jeq ...
|
||||
*
|
||||
* and replace it by
|
||||
@ -101,22 +101,22 @@ unsigned OptNegAX2 (CodeSeg* S);
|
||||
* jeq/jne ...
|
||||
*/
|
||||
|
||||
unsigned OptNegAX3 (CodeSeg* S);
|
||||
unsigned OptBNegAX3 (CodeSeg* S);
|
||||
/* Search for the sequence:
|
||||
*
|
||||
* lda xx
|
||||
* ldx yy
|
||||
* jsr bnegax
|
||||
* lda xx
|
||||
* ldx yy
|
||||
* jsr bnegax
|
||||
* jne/jeq ...
|
||||
*
|
||||
* and replace it by
|
||||
*
|
||||
* lda xx
|
||||
* ora xx+1
|
||||
* ora xx+1
|
||||
* jeq/jne ...
|
||||
*/
|
||||
|
||||
unsigned OptNegAX4 (CodeSeg* S);
|
||||
unsigned OptBNegAX4 (CodeSeg* S);
|
||||
/* Search for the sequence:
|
||||
*
|
||||
* jsr xxx
|
||||
|
Loading…
x
Reference in New Issue
Block a user