/// Wrapper function around std::equal to detect if all elements
/// in a container are same.
-template <typename R>
+template <typename R>
bool is_splat(R &&Range) {
size_t range_size = size(Range);
return range_size != 0 && (range_size == 1 ||
/// Return the alias set which contains the specified memory location. If
/// the memory location aliases two or more existing alias sets, will have
/// the effect of merging those alias sets before the single resulting alias
- /// set is returned.
+ /// set is returned.
AliasSet &getAliasSetFor(const MemoryLocation &MemLoc);
/// Return true if the specified instruction "may" (or must) alias one of the
static const unsigned TrampolineSize = 20;
static const unsigned ResolverCodeSize = 0xfc;
using IndirectStubsInfo = GenericIndirectStubsInfo<16>;
-
+
using JITReentryFn = JITTargetAddress (*)(void *CallbackMgr,
void *TrampolineId);
/// @brief Write the requsted number of trampolines into the given memory,
std::vector<std::pair<StringRef, unsigned>> VariableUses;
/// Maps definitions of variables to their parenthesized capture numbers.
- ///
+ ///
/// E.g. for the pattern "foo[[bar:.*]]baz", VariableDefs will map "bar" to
/// 1.
std::map<StringRef, unsigned> VariableDefs;
/// \p TargetExecutesOncePerLoop is true only when it is guaranteed that the
/// target executes at most once per execution of the loop body. This is used
/// to assess the legality of duplicating atomic loads. Generally, this is
-/// true when moving out of loop and not true when moving into loops.
+/// true when moving out of loop and not true when moving into loops.
/// If \p ORE is set use it to emit optimization remarks.
bool canSinkOrHoistInst(Instruction &I, AAResults *AA, DominatorTree *DT,
Loop *CurLoop, AliasSetTracker *CurAST,
unsigned ConstantOpNo,
MachineInstr &DefMI,
bool KillDefMI) const;
- // Try to find that, if the instruction 'MI' contains any operand that
+ // Try to find that, if the instruction 'MI' contains any operand that
// could be forwarded from some inst that feeds it. If yes, return the
// Def of that operand. And OpNoForForwarding is the operand index in
// the 'MI' for that 'Def'. If we see another use of this Def between
void inferSchedClasses();
void checkMCInstPredicates() const;
-
+
void checkCompleteness();
void inferFromRW(ArrayRef<unsigned> OperWrites, ArrayRef<unsigned> OperReads,
/// @result - True if the filter returns the same value for any ModR/M
/// byte; false if not.
virtual bool isDumb() const { return false; }
-
+
/// accepts - Indicates whether the filter accepts a particular ModR/M
/// byte value.
///
};
/// ExtendedFilter - Extended opcodes are classified based on the value of the
-/// mod field [bits 7-6] and the value of the nnn field [bits 5-3].
+/// mod field [bits 7-6] and the value of the nnn field [bits 5-3].
class ExtendedFilter : public ModRMFilter {
void anchor() override;
bool R;
/// \param r True if the mod field must be set to 11; false otherwise.
/// The name is explained at ModFilter.
/// \param nnn The required value of the nnn field.
- ExtendedFilter(bool r, uint8_t nnn) :
+ ExtendedFilter(bool r, uint8_t nnn) :
ModRMFilter(),
R(r),
NNN(nnn) {