aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/compiler/xla/service/llvm_ir/loop_emitter.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/compiler/xla/service/llvm_ir/loop_emitter.cc')
-rw-r--r--tensorflow/compiler/xla/service/llvm_ir/loop_emitter.cc36
1 files changed, 16 insertions, 20 deletions
diff --git a/tensorflow/compiler/xla/service/llvm_ir/loop_emitter.cc b/tensorflow/compiler/xla/service/llvm_ir/loop_emitter.cc
index e8b0605b9d..36f5fa1952 100644
--- a/tensorflow/compiler/xla/service/llvm_ir/loop_emitter.cc
+++ b/tensorflow/compiler/xla/service/llvm_ir/loop_emitter.cc
@@ -33,26 +33,24 @@ namespace xla {
namespace llvm_ir {
LoopEmitter::LoopEmitter(const BodyEmitter& body_emitter, const Shape& shape,
- llvm::IRBuilder<>* ir_builder)
- : body_emitter_(body_emitter), shape_(shape), ir_builder_(ir_builder) {}
+ llvm::IRBuilder<>* b)
+ : body_emitter_(body_emitter), shape_(shape), b_(b) {}
LoopEmitter::LoopEmitter(const ElementGenerator& target_element_generator,
- const IrArray& target_array,
- llvm::IRBuilder<>* ir_builder)
+ const IrArray& target_array, llvm::IRBuilder<>* b)
: body_emitter_([=](const llvm_ir::IrArray::Index array_index) -> Status {
// Convert target_element_generator to a BodyEmitter.
TF_ASSIGN_OR_RETURN(llvm::Value * target_element,
target_element_generator(array_index));
- target_array.EmitWriteArrayElement(array_index, target_element,
- ir_builder);
+ target_array.EmitWriteArrayElement(array_index, target_element, b);
return Status::OK();
}),
shape_(target_array.GetShape()),
- ir_builder_(ir_builder) {}
+ b_(b) {}
static LoopEmitter::BodyEmitter MakeBodyEmitterForMultiOutputFusion(
const ElementGenerator& target_element_generator,
- const std::vector<IrArray>& target_arrays, llvm::IRBuilder<>* ir_builder) {
+ const std::vector<IrArray>& target_arrays, llvm::IRBuilder<>* b) {
return [=](const llvm_ir::IrArray::Index array_index) {
TF_ASSIGN_OR_RETURN(llvm::Value * target_element,
target_element_generator(array_index));
@@ -64,8 +62,7 @@ static LoopEmitter::BodyEmitter MakeBodyEmitterForMultiOutputFusion(
for (int64 i = 0; i < target_arrays.size(); ++i) {
target_arrays[i].EmitWriteArrayElement(
- array_index, ir_builder->CreateExtractValue(target_element, i),
- ir_builder);
+ array_index, b->CreateExtractValue(target_element, i), b);
}
return Status::OK();
};
@@ -73,13 +70,12 @@ static LoopEmitter::BodyEmitter MakeBodyEmitterForMultiOutputFusion(
LoopEmitter::LoopEmitter(const ElementGenerator& target_element_generator,
tensorflow::gtl::ArraySlice<IrArray> target_arrays,
- llvm::IRBuilder<>* ir_builder)
+ llvm::IRBuilder<>* b)
: body_emitter_(MakeBodyEmitterForMultiOutputFusion(
target_element_generator,
- std::vector<IrArray>(target_arrays.begin(), target_arrays.end()),
- ir_builder)),
+ std::vector<IrArray>(target_arrays.begin(), target_arrays.end()), b)),
shape_(target_arrays[0].GetShape()),
- ir_builder_(ir_builder) {
+ b_(b) {
// Sanity check: In multi-output fusion, all shapes produced must have the
// same dimensions.
for (const IrArray& array : target_arrays) {
@@ -102,7 +98,7 @@ std::vector<IrArray::Index> LoopEmitter::EmitIndexAndSetExitBasicBlock(
// Loops are added from outermost to innermost order with the ForLoopNest
// class so emit loops in order from most-major dimension down to most-minor
// dimension (of the target shape).
- ForLoopNest loop_nest(loop_name, ir_builder_);
+ ForLoopNest loop_nest(loop_name, b_);
IrArray::Index array_index(index_type, shape_.dimensions_size());
for (int i = 0; i < LayoutUtil::MinorToMajor(shape_).size(); ++i) {
int64 dimension = LayoutUtil::Major(shape_.layout(), i);
@@ -116,8 +112,8 @@ std::vector<IrArray::Index> LoopEmitter::EmitIndexAndSetExitBasicBlock(
// Set IR builder insertion point to the loop body basic block of the
// innermost loop.
llvm::BasicBlock* innermost_body_bb = loop_nest.GetInnerLoopBodyBasicBlock();
- ir_builder_->SetInsertPoint(innermost_body_bb,
- innermost_body_bb->getFirstInsertionPt());
+ b_->SetInsertPoint(innermost_body_bb,
+ innermost_body_bb->getFirstInsertionPt());
// Set exit_bb_ to the exit block of the loop nest.
exit_bb_ = loop_nest.GetOuterLoopExitBasicBlock();
@@ -129,7 +125,7 @@ std::vector<IrArray::Index> LoopEmitter::EmitIndexAndSetExitBasicBlock(
Status LoopEmitter::EmitLoop(tensorflow::StringPiece loop_name,
llvm::Type* index_type) {
if (index_type == nullptr) {
- index_type = ir_builder_->getInt64Ty();
+ index_type = b_->getInt64Ty();
}
for (const IrArray::Index& array_index :
@@ -137,10 +133,10 @@ Status LoopEmitter::EmitLoop(tensorflow::StringPiece loop_name,
TF_RETURN_IF_ERROR(body_emitter_(array_index));
}
- // Set the insertion point of ir_builder_ to the loop exit, so that
+ // Set the insertion point of b_ to the loop exit, so that
// code emitted for later instructions will be correctly placed.
if (exit_bb_ != nullptr) {
- ir_builder_->SetInsertPoint(exit_bb_);
+ b_->SetInsertPoint(exit_bb_);
}
return Status::OK();
}