forked from OSchip/llvm-project
This patch adds a ssa_copy intrinsic, as part of splitting up D29316.
Summary: The intrinsic, marked as returning it's first argument, has no code generation effect (though currently not every optimization pass knows that intrinsics with the returned attribute can be looked through). It is about to be used to by the PredicateInfo pass to attach predicate information to existing operands, and be able to tell what the predicate information affects. We deliberately do not attach any info through a second operand so that the intrinsics do not need to dominate the comparisons/etc (since in the case of assume, we may want to push them up the post-dominator tree). Reviewers: davide, sanjoy Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29517 llvm-svn: 294341
This commit is contained in:
parent
b285deab93
commit
2c438a3075
|
@ -12700,6 +12700,33 @@ sufficient overall improvement in code quality. For this reason,
|
|||
that the optimizer can otherwise deduce or facts that are of little use to the
|
||||
optimizer.
|
||||
|
||||
.. _int_ssa_copy:
|
||||
|
||||
'``llvm.ssa_copy``' Intrinsic
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Syntax:
|
||||
"""""""
|
||||
|
||||
::
|
||||
|
||||
declare type @llvm.ssa_copy(type %operand) returned(1) readnone
|
||||
|
||||
Arguments:
|
||||
""""""""""
|
||||
|
||||
The first argument is an operand which is used as the returned value.
|
||||
|
||||
Overview:
|
||||
""""""""""
|
||||
|
||||
The ``llvm.ssa_copy`` intrinsic can be used to attach information to
|
||||
operations by copying them and giving them new names. For example,
|
||||
the PredicateInfo utility uses it to build Extended SSA form, and
|
||||
attach various forms of information to operands that dominate specific
|
||||
uses. It is not meant for general use, only for building temporary
|
||||
renaming forms that require value splits at certain points.
|
||||
|
||||
.. _type.test:
|
||||
|
||||
'``llvm.type.test``' Intrinsic
|
||||
|
|
|
@ -781,6 +781,10 @@ def int_memcpy_element_atomic : Intrinsic<[],
|
|||
[IntrArgMemOnly, NoCapture<0>, NoCapture<1>,
|
||||
WriteOnly<0>, ReadOnly<1>]>;
|
||||
|
||||
//===----- Intrinsics that are used to provide predicate information -----===//
|
||||
|
||||
def int_ssa_copy : Intrinsic<[llvm_any_ty], [LLVMMatchType<0>],
|
||||
[IntrNoMem, Returned<0>]>;
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Target-specific intrinsics
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
Loading…
Reference in New Issue