I've changed the semantics of MERGE_VALUES a bit. It's now allowed to live until scheduling. It's deleted when the scheduler translate DAG nodes to machine instructions.

This is currently used by X86 to handle atomic_load_add when the output of the node is not used. I believe there is a better solution. But I find MERGE_VALUES useful for selecting multi-output node when the dead output can be selected as a IMPLICIT_DEF.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77583 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2009-07-30 08:44:08 +00:00
parent 37b7387da9
commit fe0bfe4fa4

View File

@ -225,9 +225,9 @@ namespace ISD {
// MERGE_VALUES - This node takes multiple discrete operands and returns
// them all as its individual results. This nodes has exactly the same
// number of inputs and outputs, and is only valid before legalization.
// This node is useful for some pieces of the code generator that want to
// think about a single node with multiple results, not multiple nodes.
// number of inputs and outputs. This node is useful for some pieces of the
// code generator that want to think about a single node with multiple
// results, not multiple nodes.
MERGE_VALUES,
// Simple integer binary arithmetic operators.