mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-05 13:09:10 +00:00
Refactor some code to use the IRBuilder.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173467 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
172d5978c8
commit
f8c2f90bb3
@ -941,29 +941,30 @@ InnerLoopVectorizer::addRuntimeCheck(LoopVectorizationLegality *Legal,
|
||||
}
|
||||
}
|
||||
|
||||
IRBuilder<> ChkBuilder(Loc->getContext());
|
||||
ChkBuilder.SetInsertPoint(Loc);
|
||||
|
||||
for (unsigned i = 0; i < NumPointers; ++i) {
|
||||
for (unsigned j = i+1; j < NumPointers; ++j) {
|
||||
Instruction::CastOps Op = Instruction::BitCast;
|
||||
Value *Start0 = CastInst::Create(Op, Starts[i], PtrArithTy, "bc", Loc);
|
||||
Value *Start1 = CastInst::Create(Op, Starts[j], PtrArithTy, "bc", Loc);
|
||||
Value *End0 = CastInst::Create(Op, Ends[i], PtrArithTy, "bc", Loc);
|
||||
Value *End1 = CastInst::Create(Op, Ends[j], PtrArithTy, "bc", Loc);
|
||||
|
||||
Value *Cmp0 = CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_ULE,
|
||||
Start0, End1, "bound0", Loc);
|
||||
Value *Cmp1 = CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_ULE,
|
||||
Start1, End0, "bound1", Loc);
|
||||
Instruction *IsConflict = BinaryOperator::Create(Instruction::And, Cmp0,
|
||||
Cmp1, "found.conflict",
|
||||
Loc);
|
||||
if (MemoryRuntimeCheck)
|
||||
MemoryRuntimeCheck = BinaryOperator::Create(Instruction::Or,
|
||||
MemoryRuntimeCheck,
|
||||
IsConflict,
|
||||
"conflict.rdx", Loc);
|
||||
else
|
||||
MemoryRuntimeCheck = IsConflict;
|
||||
Value *Start0 = ChkBuilder.CreateCast(Op, Starts[i], PtrArithTy, "bc");
|
||||
Value *Start1 = ChkBuilder.CreateCast(Op, Starts[j], PtrArithTy, "bc");
|
||||
Value *End0 = ChkBuilder.CreateCast(Op, Ends[i], PtrArithTy, "bc");
|
||||
Value *End1 = ChkBuilder.CreateCast(Op, Ends[j], PtrArithTy, "bc");
|
||||
|
||||
Value *Cmp0 = ChkBuilder.CreateICmp(CmpInst::ICMP_ULE,
|
||||
Start0, End1, "bound0");
|
||||
Value *Cmp1 = ChkBuilder.CreateICmp(CmpInst::ICMP_ULE,
|
||||
Start1, End0, "bound1");
|
||||
Value *IsConflict = ChkBuilder.CreateBinOp(Instruction::And, Cmp0, Cmp1,
|
||||
"found.conflict");
|
||||
if (MemoryRuntimeCheck) {
|
||||
Value *B = ChkBuilder.CreateBinOp(Instruction::Or, MemoryRuntimeCheck,
|
||||
IsConflict, "conflict.rdx");
|
||||
MemoryRuntimeCheck = cast<Instruction>(B);
|
||||
} else {
|
||||
MemoryRuntimeCheck = cast<Instruction>(IsConflict);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user