[PATCH] rs6000: Cleanup bdz/bdnz insn/splitter, add new insn/splitter for bdzt/bdzf/bdnzt/bdnzf

Aaron Sawdey acsawdey@linux.vnet.ibm.com
Thu Nov 30 17:43:00 GMT 2017


This does some cleanup/consolidation so that bdz/bdnz are supported by
a single insn and splitter, and adds a new insn and splitter to support
the conditional form of those (bdzt/bdzf/bdnzt/bdnzf).

This is going to be used for the memcmp() builtin expansion patch which
is next. That also will require the change to canonicalize_condition I
posted before thanksgiving to prevent doloop from being confused by
bdnzt et. al. 

Bootstrap/regtest passes on ppc64le. OK for trunk?


2017-11-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>

	* config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
	to generate rtl.
	(cceq_ior_compare_complement): Give it a name so I can use it, and
	change boolean_or_operator predicate to boolean_operator so it can
	be used to generate a crand.
	Define new code iterator eqne, and new code_attrs bd/bd_neg.
	(<bd>_<mode>) New name for ctr<mode>_internal[12] now combined into
	a single define_insn. There is now just a single splitter for this
	that looks whether the decremented ctr result is going to a register
	or memory and generates the appropriate rtl.
	(<bd>tf_<mode>) A new insn pattern for the conditional form branch
	decrement (bdnzt/bdnzf/bdzt/bdzf). This also has a splitter similar
	to the one for <bd>_<mode>.
	* config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
	with the new names of the branch decrement patterns, and added the
	names of the branch decrement conditional patterns.

-- 
Aaron Sawdey, Ph.D.  acsawdey@linux.vnet.ibm.com
050-2/C113  (507) 253-7520 home: 507/263-0782
IBM Linux Technology Center - PPC Toolchain
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bdnzpat.patch
Type: text/x-patch
Size: 9335 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20171130/72a50f4c/attachment.bin>


More information about the Gcc-patches mailing list