diff options
author | Richard Earnshaw <erich@gnu.org> | 1996-02-19 17:50:20 +0000 |
---|---|---|
committer | Richard Earnshaw <erich@gnu.org> | 1996-02-19 17:50:20 +0000 |
commit | 69fcc21d4c92f37bf556fc580253d75c17825ab6 (patch) | |
tree | 88b2c5d0bb6c6b7d9778458a64cc74f664c925af /gcc | |
parent | 0502226c85bddf9ed6eb549770c0dbcabe66a856 (diff) | |
download | gcc-69fcc21d4c92f37bf556fc580253d75c17825ab6.zip gcc-69fcc21d4c92f37bf556fc580253d75c17825ab6.tar.gz gcc-69fcc21d4c92f37bf556fc580253d75c17825ab6.tar.bz2 |
(EXTRA_CC_MODES, EXTRA_CC_NAMES): Add CC_Zmode.
(SELECT_CC_MODE): return CC_Zmode if the operand is QImode. Allow LT
and GE comparisons in CC_NOOVmode.
(PREDICATE_CODES): add offsettable_memory_operand and
alignable_memory_operand.
From-SVN: r11306
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/arm/arm.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index b2cab46..268da29 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -1438,17 +1438,18 @@ do \ CCFPEmode should be used with floating inequalities, CCFPmode should be used with floating equalities. CC_NOOVmode should be used with SImode integer equalities. + CC_Zmode should be used if only the Z flag is set correctly CCmode should be used otherwise. */ -#define EXTRA_CC_MODES CC_NOOVmode, CCFPmode, CCFPEmode +#define EXTRA_CC_MODES CC_NOOVmode, CC_Zmode, CCFPmode, CCFPEmode -#define EXTRA_CC_NAMES "CC_NOOV", "CCFP", "CCFPE" +#define EXTRA_CC_NAMES "CC_NOOV", "CC_Z", "CCFP", "CCFPE" #define SELECT_CC_MODE(OP,X,Y) \ (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT \ ? ((OP == EQ || OP == NE) ? CCFPmode : CCFPEmode) \ : ((GET_MODE (X) == SImode) \ - && ((OP) == EQ || (OP) == NE) \ + && ((OP) == EQ || (OP) == NE || (OP) == LT || (OP) == GE) \ && (GET_CODE (X) == PLUS || GET_CODE (X) == MINUS \ || GET_CODE (X) == AND || GET_CODE (X) == IOR \ || GET_CODE (X) == XOR || GET_CODE (X) == MULT \ @@ -1457,7 +1458,7 @@ do \ || GET_CODE (X) == ASHIFT || GET_CODE (X) == ASHIFTRT \ || GET_CODE (X) == ROTATERT || GET_CODE (X) == ZERO_EXTRACT) \ ? CC_NOOVmode \ - : GET_MODE (X) == QImode ? CC_NOOVmode : CCmode)) + : GET_MODE (X) == QImode ? CC_Zmode : CCmode)) #define REVERSIBLE_CC_MODE(MODE) ((MODE) != CCFPEmode) @@ -1478,6 +1479,8 @@ extern int arm_compare_fp; {"arm_rhs_operand", {SUBREG, REG, CONST_INT}}, \ {"fpu_rhs_operand", {SUBREG, REG, CONST_DOUBLE}}, \ {"arm_not_operand", {SUBREG, REG, CONST_INT}}, \ + {"offsettable_memory_operand", {MEM}}, \ + {"alignable_memory_operand", {MEM}}, \ {"shiftable_operator", {PLUS, MINUS, AND, IOR, XOR}}, \ {"minmax_operator", {SMIN, SMAX, UMIN, UMAX}}, \ {"shift_operator", {ASHIFT, ASHIFTRT, LSHIFTRT, ROTATERT, MULT}}, \ |