This is the mail archive of the gcc-cvs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

r242572 - in /trunk/gcc: ChangeLog config/arc/a...


Author: aburgess
Date: Thu Nov 17 22:40:05 2016
New Revision: 242572

URL: https://gcc.gnu.org/viewcvs?rev=242572&root=gcc&view=rev
Log:
arc/nps400: New peephole2 pattern allow more cmem loads

In the case where we access a single bit from a value and use this in a
EQ/NE comparison, GCC will convert this into a sign-extend and GE/LT
comparison.

Normally this would be fine, however, if the value is in CMEM memory,
then we don't have a sign-extending load available (using the special
short CMEM load instructions), and instead we end up using a long form
load with LIMM, which is less efficient.

This peephole optimisation looks for the sign-extend followed by GE/LT
pattern and converts this back into a load and EQ/NE comparison.

gcc/ChangeLog:

	* config/arc/arc.md (cmem bit/sign-extend peephole2): New peephole
	to make better use of cmem loads in the case where a single bit is
	being accessed.
	* config/arc/predicates.md (ge_lt_comparison_operator): New
	predicate.

gcc/testsuite/ChangeLog:

	* gcc.target/arc/cmem-bit-1.c: New file.
	* gcc.target/arc/cmem-bit-2.c: New file.
	* gcc.target/arc/cmem-bit-3.c: New file.
	* gcc.target/arc/cmem-bit-4.c: New file.


Added:
    trunk/gcc/testsuite/gcc.target/arc/cmem-bit-1.c
    trunk/gcc/testsuite/gcc.target/arc/cmem-bit-2.c
    trunk/gcc/testsuite/gcc.target/arc/cmem-bit-3.c
    trunk/gcc/testsuite/gcc.target/arc/cmem-bit-4.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/arc/arc.md
    trunk/gcc/config/arc/predicates.md
    trunk/gcc/testsuite/ChangeLog


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]