On 10/04/13 11:35, Hurugalawadi, Naveen wrote:
+(define_insn "*cmn_swp_<optab><ALLX:mode>_reg<GPI:mode>" + [(set (reg:CC_SWP CC_REGNUM) + (compare:CC_SWP (ANY_EXTEND:GPI + (match_operand:ALLX 0 "register_operand" "r")) + (neg:GPI (match_operand:GPI 1 "register_operand" "r"))))]
Umm, I'm not convinced, are you sure this placement of EXTEND and NEG in the RTL representation of CMN are correct?
--- gcc/testsuite/gcc.target/aarch64/cmn-1.c 1970-01-01 05:30:00.000000000 +0530 +++ gcc/testsuite/gcc.target/aarch64/cmn-1.c 2013-04-10 12:27:17.845318216 +0530 @@ -0,0 +1,134 @@ +/* { dg-do run } */ +/* { dg-options "-O2 --save-temps" } */
At the point that these CMN optimizations kick in, GCC is clever enough to inline and fold main() to nothing, in effect CMN instruction generated never executes and the test cases all pass...
Try this instead: > +/* { dg-options "-O2 -fno-line --save-temps" } */ this will result in the test case failing. Cheers /Marcus