Re: [Patch, AARCH64] Define REVERSIBLE_CC_MODE
Naveen, I've committed your original REVERSIBLE_CC_MODE patch. Cheers /Marcus On 8 January 2013 05:09, Hurugalawadi, Naveen wrote: > Hi, > > AARCH64 back-end defines REVERSE_CONDITION but not REVERSIBLE_CC_MODE. > REVERSE_CONDITION is used only in case REVERSIBLE_CC_MODE (mode) is > nonzero. > > Please find attached the patch that defines REVERSIBLE_CC_MODE for > aarch64 back-end. Please review the patch and let me know if there should be > any > modifications? > > Build and tested on aarch64-thunder-elf (using Cavium's internal > simulator). > > Thanks, > Naveen.H.S > > 2013-01-08 Naveen H.S > > * config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Define.
[PING^1] [Patch, AARCH64] Define REVERSIBLE_CC_MODE
Hi, Please consider this as a reminder to review the patch posted at following link:- http://gcc.gnu.org/ml/gcc-patches/2013-01/msg00463.html Please review the patch and let me know if its okay? Thanks & Regards, Naveen.H.S
RE: [Patch, AARCH64] Define REVERSIBLE_CC_MODE
Hi Marcus, Thanks for reviewing the patch. >> Given the comment about SELECT_CC_MODE and the implementation of >> aarch64_select_cc_mode this definition of REVERSIBLE_CC_MODE looks >> broken to me. Please find attached the modified patch that does not allow floating point inequality comparisons in REVERSIBLE_CC_MODE. Please review the patch and let me know if its OK? Build and tested on aarch64-thunder-elf (using Cavium's internal simulator). No new regressions. Thanks, Naveen.H.S 2013-01-09 Naveen H.S * config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Define. --- gcc/config/aarch64/aarch64.h 2013-01-09 09:55:56.315992619 +0530 +++ gcc/config/aarch64/aarch64.h 2013-01-09 09:55:29.175991698 +0530 @@ -709,6 +709,14 @@ do { \ #define SELECT_CC_MODE(OP, X, Y) aarch64_select_cc_mode (OP, X, Y) +/* A C expression whose value is one if it is always safe to reverse a + comparison whose mode is MODE. If `SELECT_CC_MODE' can ever return + MODE for a floating-point inequality comparison, then + `REVERSIBLE_CC_MODE (MODE)' must be zero. + You need not define this macro if it would always returns zero or if the + floating-point format is anything other than `IEEE_FLOAT_FORMAT'. */ +#define REVERSIBLE_CC_MODE(MODE) ((MODE) != CCFPEmode) + #define REVERSE_CONDITION(CODE, MODE) \ (((MODE) == CCFPmode || (MODE) == CCFPEmode) \ ? reverse_condition_maybe_unordered (CODE) \
Re: [Patch, AARCH64] Define REVERSIBLE_CC_MODE
On 8 January 2013 05:09, Hurugalawadi, Naveen wrote: > Hi, > > AARCH64 back-end defines REVERSE_CONDITION but not REVERSIBLE_CC_MODE. > REVERSE_CONDITION is used only in case REVERSIBLE_CC_MODE (mode) is > nonzero. > > Please find attached the patch that defines REVERSIBLE_CC_MODE for > aarch64 back-end. Please review the patch and let me know if there should be > any > modifications? > > Build and tested on aarch64-thunder-elf (using Cavium's internal > simulator). > > Thanks, > Naveen.H.S > > 2013-01-08 Naveen H.S > > * config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Define. +/* A C expression whose value is one if it is always safe to reverse a + comparison whose mode is MODE. If `SELECT_CC_MODE' can ever return + MODE for a floating-point inequality comparison, then + `REVERSIBLE_CC_MODE (MODE)' must be zero. + You need not define this macro if it would always returns zero or if the + floating-point format is anything other than `IEEE_FLOAT_FORMAT'. */ +#define REVERSIBLE_CC_MODE(MODE) 1 + Given the comment about SELECT_CC_MODE and the implementation of aarch64_select_cc_mode this definition of REVERSIBLE_CC_MODE looks broken to me. /Marcus
[Patch, AARCH64] Define REVERSIBLE_CC_MODE
Hi, AARCH64 back-end defines REVERSE_CONDITION but not REVERSIBLE_CC_MODE. REVERSE_CONDITION is used only in case REVERSIBLE_CC_MODE (mode) is nonzero. Please find attached the patch that defines REVERSIBLE_CC_MODE for aarch64 back-end. Please review the patch and let me know if there should be any modifications? Build and tested on aarch64-thunder-elf (using Cavium's internal simulator). Thanks, Naveen.H.S 2013-01-08 Naveen H.S * config/aarch64/aarch64.h (REVERSIBLE_CC_MODE): Define.--- gcc/config/aarch64/aarch64.h 2013-01-08 09:42:21.081034770 +0530 +++ gcc/config/aarch64/aarch64.h 2013-01-08 09:43:52.277037865 +0530 @@ -709,6 +709,14 @@ do { \ #define SELECT_CC_MODE(OP, X, Y) aarch64_select_cc_mode (OP, X, Y) +/* A C expression whose value is one if it is always safe to reverse a + comparison whose mode is MODE. If `SELECT_CC_MODE' can ever return + MODE for a floating-point inequality comparison, then + `REVERSIBLE_CC_MODE (MODE)' must be zero. + You need not define this macro if it would always returns zero or if the + floating-point format is anything other than `IEEE_FLOAT_FORMAT'. */ +#define REVERSIBLE_CC_MODE(MODE) 1 + #define REVERSE_CONDITION(CODE, MODE) \ (((MODE) == CCFPmode || (MODE) == CCFPEmode) \ ? reverse_condition_maybe_unordered (CODE) \