Skip to content

Commit ed5088a

Browse files
authored
[SandboxIR] Switch more Instruction::create() to InsertPosition (#111213)
Also moves CmpInst definitions from Context.cpp to Instruction.cpp
1 parent c029702 commit ed5088a

File tree

4 files changed

+69
-71
lines changed

4 files changed

+69
-71
lines changed

llvm/include/llvm/SandboxIR/Instruction.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2475,11 +2475,11 @@ class CmpInst : public SingleLLVMInstructionImpl<llvm::CmpInst> {
24752475
using Predicate = llvm::CmpInst::Predicate;
24762476

24772477
static CmpInst *create(Predicate Pred, Value *S1, Value *S2,
2478-
Instruction *InsertBefore, Context &Ctx,
2478+
InsertPosition Pos, Context &Ctx,
24792479
const Twine &Name = "");
24802480
static CmpInst *createWithCopiedFlags(Predicate Pred, Value *S1, Value *S2,
24812481
const Instruction *FlagsSource,
2482-
Instruction *InsertBefore, Context &Ctx,
2482+
InsertPosition Pos, Context &Ctx,
24832483
const Twine &Name = "");
24842484
void setPredicate(Predicate P);
24852485
void swapOperands();

llvm/lib/SandboxIR/Context.cpp

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -595,72 +595,6 @@ FCmpInst *Context::createFCmpInst(llvm::FCmpInst *I) {
595595
auto NewPtr = std::unique_ptr<FCmpInst>(new FCmpInst(I, *this));
596596
return cast<FCmpInst>(registerValue(std::move(NewPtr)));
597597
}
598-
CmpInst *CmpInst::create(Predicate P, Value *S1, Value *S2,
599-
Instruction *InsertBefore, Context &Ctx,
600-
const Twine &Name) {
601-
auto &Builder = Ctx.getLLVMIRBuilder();
602-
Builder.SetInsertPoint(InsertBefore->getTopmostLLVMInstruction());
603-
auto *LLVMI = Builder.CreateCmp(P, S1->Val, S2->Val, Name);
604-
if (dyn_cast<llvm::ICmpInst>(LLVMI))
605-
return Ctx.createICmpInst(cast<llvm::ICmpInst>(LLVMI));
606-
return Ctx.createFCmpInst(cast<llvm::FCmpInst>(LLVMI));
607-
}
608-
CmpInst *CmpInst::createWithCopiedFlags(Predicate P, Value *S1, Value *S2,
609-
const Instruction *F,
610-
Instruction *InsertBefore, Context &Ctx,
611-
const Twine &Name) {
612-
CmpInst *Inst = create(P, S1, S2, InsertBefore, Ctx, Name);
613-
cast<llvm::CmpInst>(Inst->Val)->copyIRFlags(F->Val);
614-
return Inst;
615-
}
616-
617-
Type *CmpInst::makeCmpResultType(Type *OpndType) {
618-
if (auto *VT = dyn_cast<VectorType>(OpndType)) {
619-
// TODO: Cleanup when we have more complete support for
620-
// sandboxir::VectorType
621-
return OpndType->getContext().getType(llvm::VectorType::get(
622-
llvm::Type::getInt1Ty(OpndType->getContext().LLVMCtx),
623-
cast<llvm::VectorType>(VT->LLVMTy)->getElementCount()));
624-
}
625-
return Type::getInt1Ty(OpndType->getContext());
626-
}
627-
628-
void CmpInst::setPredicate(Predicate P) {
629-
Ctx.getTracker()
630-
.emplaceIfTracking<
631-
GenericSetter<&CmpInst::getPredicate, &CmpInst::setPredicate>>(this);
632-
cast<llvm::CmpInst>(Val)->setPredicate(P);
633-
}
634-
635-
void CmpInst::swapOperands() {
636-
if (ICmpInst *IC = dyn_cast<ICmpInst>(this))
637-
IC->swapOperands();
638-
else
639-
cast<FCmpInst>(this)->swapOperands();
640-
}
641-
642-
void ICmpInst::swapOperands() {
643-
Ctx.getTracker().emplaceIfTracking<CmpSwapOperands>(this);
644-
cast<llvm::ICmpInst>(Val)->swapOperands();
645-
}
646-
647-
void FCmpInst::swapOperands() {
648-
Ctx.getTracker().emplaceIfTracking<CmpSwapOperands>(this);
649-
cast<llvm::FCmpInst>(Val)->swapOperands();
650-
}
651-
652-
#ifndef NDEBUG
653-
void CmpInst::dumpOS(raw_ostream &OS) const {
654-
dumpCommonPrefix(OS);
655-
dumpCommonSuffix(OS);
656-
}
657-
658-
void CmpInst::dump() const {
659-
dumpOS(dbgs());
660-
dbgs() << "\n";
661-
}
662-
#endif // NDEBUG
663-
664598
Value *Context::getValue(llvm::Value *V) const {
665599
auto It = LLVMValueToValueMap.find(V);
666600
if (It != LLVMValueToValueMap.end())

llvm/lib/SandboxIR/Instruction.cpp

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -927,6 +927,70 @@ void PHINode::removeIncomingValueIf(function_ref<bool(unsigned)> Predicate) {
927927
}
928928
}
929929

930+
CmpInst *CmpInst::create(Predicate P, Value *S1, Value *S2, InsertPosition Pos,
931+
Context &Ctx, const Twine &Name) {
932+
auto &Builder = setInsertPos(Pos);
933+
auto *LLVMI = Builder.CreateCmp(P, S1->Val, S2->Val, Name);
934+
if (dyn_cast<llvm::ICmpInst>(LLVMI))
935+
return Ctx.createICmpInst(cast<llvm::ICmpInst>(LLVMI));
936+
return Ctx.createFCmpInst(cast<llvm::FCmpInst>(LLVMI));
937+
}
938+
CmpInst *CmpInst::createWithCopiedFlags(Predicate P, Value *S1, Value *S2,
939+
const Instruction *F,
940+
InsertPosition Pos, Context &Ctx,
941+
const Twine &Name) {
942+
CmpInst *Inst = create(P, S1, S2, Pos, Ctx, Name);
943+
cast<llvm::CmpInst>(Inst->Val)->copyIRFlags(F->Val);
944+
return Inst;
945+
}
946+
947+
Type *CmpInst::makeCmpResultType(Type *OpndType) {
948+
if (auto *VT = dyn_cast<VectorType>(OpndType)) {
949+
// TODO: Cleanup when we have more complete support for
950+
// sandboxir::VectorType
951+
return OpndType->getContext().getType(llvm::VectorType::get(
952+
llvm::Type::getInt1Ty(OpndType->getContext().LLVMCtx),
953+
cast<llvm::VectorType>(VT->LLVMTy)->getElementCount()));
954+
}
955+
return Type::getInt1Ty(OpndType->getContext());
956+
}
957+
958+
void CmpInst::setPredicate(Predicate P) {
959+
Ctx.getTracker()
960+
.emplaceIfTracking<
961+
GenericSetter<&CmpInst::getPredicate, &CmpInst::setPredicate>>(this);
962+
cast<llvm::CmpInst>(Val)->setPredicate(P);
963+
}
964+
965+
void CmpInst::swapOperands() {
966+
if (ICmpInst *IC = dyn_cast<ICmpInst>(this))
967+
IC->swapOperands();
968+
else
969+
cast<FCmpInst>(this)->swapOperands();
970+
}
971+
972+
void ICmpInst::swapOperands() {
973+
Ctx.getTracker().emplaceIfTracking<CmpSwapOperands>(this);
974+
cast<llvm::ICmpInst>(Val)->swapOperands();
975+
}
976+
977+
void FCmpInst::swapOperands() {
978+
Ctx.getTracker().emplaceIfTracking<CmpSwapOperands>(this);
979+
cast<llvm::FCmpInst>(Val)->swapOperands();
980+
}
981+
982+
#ifndef NDEBUG
983+
void CmpInst::dumpOS(raw_ostream &OS) const {
984+
dumpCommonPrefix(OS);
985+
dumpCommonSuffix(OS);
986+
}
987+
988+
void CmpInst::dump() const {
989+
dumpOS(dbgs());
990+
dbgs() << "\n";
991+
}
992+
#endif // NDEBUG
993+
930994
static llvm::Instruction::CastOps getLLVMCastOp(Instruction::Opcode Opc) {
931995
switch (Opc) {
932996
case Instruction::Opcode::ZExt:

llvm/unittests/SandboxIR/SandboxIRTest.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5843,7 +5843,7 @@ define void @foo(i32 %i0, i32 %i1) {
58435843
}
58445844
auto *NewCmp =
58455845
sandboxir::CmpInst::create(llvm::CmpInst::ICMP_ULE, F.getArg(0),
5846-
F.getArg(1), &*BB->begin(), Ctx, "NewCmp");
5846+
F.getArg(1), BB->begin(), Ctx, "NewCmp");
58475847
EXPECT_EQ(NewCmp, &*BB->begin());
58485848
EXPECT_EQ(NewCmp->getPredicate(), llvm::CmpInst::ICMP_ULE);
58495849
EXPECT_EQ(NewCmp->getOperand(0), F.getArg(0));
@@ -5907,7 +5907,7 @@ define void @foo(float %f0, float %f1) {
59075907

59085908
// create with default flags
59095909
auto *NewFCmp = sandboxir::CmpInst::create(
5910-
llvm::CmpInst::FCMP_ONE, F.getArg(0), F.getArg(1), &*It1, Ctx, "NewFCmp");
5910+
llvm::CmpInst::FCMP_ONE, F.getArg(0), F.getArg(1), It1, Ctx, "NewFCmp");
59115911
EXPECT_EQ(NewFCmp->getPredicate(), llvm::CmpInst::FCMP_ONE);
59125912
EXPECT_EQ(NewFCmp->getOperand(0), F.getArg(0));
59135913
EXPECT_EQ(NewFCmp->getOperand(1), F.getArg(1));
@@ -5918,7 +5918,7 @@ define void @foo(float %f0, float %f1) {
59185918
EXPECT_TRUE(CopyFrom->getFastMathFlags() != DefaultFMF);
59195919
// create with copied flags
59205920
auto *NewFCmpFlags = sandboxir::CmpInst::createWithCopiedFlags(
5921-
llvm::CmpInst::FCMP_ONE, F.getArg(0), F.getArg(1), CopyFrom, &*It1, Ctx,
5921+
llvm::CmpInst::FCMP_ONE, F.getArg(0), F.getArg(1), CopyFrom, It1, Ctx,
59225922
"NewFCmpFlags");
59235923
EXPECT_FALSE(NewFCmpFlags->getFastMathFlags() !=
59245924
CopyFrom->getFastMathFlags());

0 commit comments

Comments
 (0)