You've already forked linux-packaging-mono
Imported Upstream version 5.18.0.167
Former-commit-id: 289509151e0fee68a1b591a20c9f109c3c789d3a
This commit is contained in:
parent
e19d552987
commit
b084638f15
@ -1,61 +0,0 @@
|
||||
//===- VPlanBuilder.h - A VPlan utility for constructing VPInstructions ---===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
///
|
||||
/// \file
|
||||
/// This file provides a VPlan-based builder utility analogous to IRBuilder.
|
||||
/// It provides an instruction-level API for generating VPInstructions while
|
||||
/// abstracting away the Recipe manipulation details.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_TRANSFORMS_VECTORIZE_VPLAN_BUILDER_H
|
||||
#define LLVM_TRANSFORMS_VECTORIZE_VPLAN_BUILDER_H
|
||||
|
||||
#include "VPlan.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class VPBuilder {
|
||||
private:
|
||||
VPBasicBlock *BB = nullptr;
|
||||
VPBasicBlock::iterator InsertPt = VPBasicBlock::iterator();
|
||||
|
||||
VPInstruction *createInstruction(unsigned Opcode,
|
||||
std::initializer_list<VPValue *> Operands) {
|
||||
VPInstruction *Instr = new VPInstruction(Opcode, Operands);
|
||||
BB->insert(Instr, InsertPt);
|
||||
return Instr;
|
||||
}
|
||||
|
||||
public:
|
||||
VPBuilder() {}
|
||||
|
||||
/// \brief This specifies that created VPInstructions should be appended to
|
||||
/// the end of the specified block.
|
||||
void setInsertPoint(VPBasicBlock *TheBB) {
|
||||
assert(TheBB && "Attempting to set a null insert point");
|
||||
BB = TheBB;
|
||||
InsertPt = BB->end();
|
||||
}
|
||||
|
||||
VPValue *createNot(VPValue *Operand) {
|
||||
return createInstruction(VPInstruction::Not, {Operand});
|
||||
}
|
||||
|
||||
VPValue *createAnd(VPValue *LHS, VPValue *RHS) {
|
||||
return createInstruction(Instruction::BinaryOps::And, {LHS, RHS});
|
||||
}
|
||||
|
||||
VPValue *createOr(VPValue *LHS, VPValue *RHS) {
|
||||
return createInstruction(Instruction::BinaryOps::Or, {LHS, RHS});
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace llvm
|
||||
|
||||
#endif // LLVM_TRANSFORMS_VECTORIZE_VPLAN_BUILDER_H
|
Reference in New Issue
Block a user