[XLA:CPU] Annotate start indices in dynamic-{,update-}slice with the HLO name.
This makes the IR a bit easier to follow. PiperOrigin-RevId: 170146717
This commit is contained in:
parent
35c44ab67d
commit
035a9be3cc
@ -44,8 +44,11 @@ limitations under the License.
|
||||
|
||||
namespace xla {
|
||||
|
||||
using llvm_ir::AsStringRef;
|
||||
using llvm_ir::IrArray;
|
||||
using llvm_ir::IrName;
|
||||
using llvm_ir::SetToFirstInsertPoint;
|
||||
using tensorflow::strings::StrCat;
|
||||
|
||||
StatusOr<llvm::Value*> ElementalIrEmitter::EmitUnaryOp(
|
||||
const HloInstruction* op, llvm::Value* operand_value) const {
|
||||
@ -721,9 +724,9 @@ llvm_ir::ElementGenerator ElementalIrEmitter::MakeRngElementGenerator(
|
||||
|
||||
if (ir_builder_->GetInsertPoint() == in_block->end()) {
|
||||
body_block = llvm_ir::CreateBasicBlock(
|
||||
nullptr, llvm_ir::IrName(hlo, "rng_body"), ir_builder_);
|
||||
nullptr, IrName(hlo, "rng_body"), ir_builder_);
|
||||
out_block = llvm_ir::CreateBasicBlock(
|
||||
nullptr, llvm_ir::IrName(hlo, "rng_out"), ir_builder_);
|
||||
nullptr, IrName(hlo, "rng_out"), ir_builder_);
|
||||
llvm::BranchInst::Create(body_block, in_block);
|
||||
} else {
|
||||
body_block = in_block->splitBasicBlock(
|
||||
@ -892,12 +895,10 @@ llvm_ir::ElementGenerator ElementalIrEmitter::MakeElementGenerator(
|
||||
++operand_idx) {
|
||||
const HloInstruction* operand = hlo->operand(operand_idx);
|
||||
auto true_block = llvm_ir::CreateBasicBlock(
|
||||
exit_block, tensorflow::strings::StrCat(
|
||||
"concat_index_from_operand", operand_idx),
|
||||
exit_block, StrCat("concat_index_from_operand", operand_idx),
|
||||
ir_builder_);
|
||||
auto false_block = llvm_ir::CreateBasicBlock(
|
||||
exit_block, tensorflow::strings::StrCat(
|
||||
"concat_index_not_from_operand", operand_idx),
|
||||
exit_block, StrCat("concat_index_not_from_operand", operand_idx),
|
||||
ir_builder_);
|
||||
auto concat_dim_size =
|
||||
llvm::ConstantInt::get(source_index[concat_dim]->getType(),
|
||||
@ -972,6 +973,8 @@ llvm_ir::ElementGenerator ElementalIrEmitter::MakeElementGenerator(
|
||||
TF_ASSIGN_OR_RETURN(
|
||||
llvm::Value * start_index_value,
|
||||
operand_to_generator.at(hlo->operand(1))(dim_index));
|
||||
start_index_value->setName(
|
||||
AsStringRef(IrName(hlo, StrCat("start_idx", i))));
|
||||
slice_start_index[i] = start_index_value;
|
||||
}
|
||||
|
||||
@ -1004,6 +1007,8 @@ llvm_ir::ElementGenerator ElementalIrEmitter::MakeElementGenerator(
|
||||
llvm_ir::IrArray::Index dim_index(1, ir_builder_->getInt64(i));
|
||||
TF_ASSIGN_OR_RETURN(llvm::Value * start_index_value,
|
||||
operand_to_generator.at(start_hlo)(dim_index));
|
||||
start_index_value->setName(
|
||||
AsStringRef(IrName(hlo, StrCat("start_idx", i))));
|
||||
slice_start_index[i] = ir_builder_->CreateZExtOrBitCast(
|
||||
start_index_value, index[i]->getType());
|
||||
// Emit IR to compute: slice_limit_index = start_index + update_dim
|
||||
@ -1163,7 +1168,7 @@ llvm_ir::ElementGenerator ElementalIrEmitter::MakeElementGenerator(
|
||||
|
||||
std::unique_ptr<llvm_ir::ForLoop> inner_loop =
|
||||
llvm_ir::ForLoop::EmitForLoop(
|
||||
llvm_ir::IrName(hlo, "inner"), ir_builder_->getInt64(0),
|
||||
IrName(hlo, "inner"), ir_builder_->getInt64(0),
|
||||
ir_builder_->getInt64(contracted_dim_size),
|
||||
ir_builder_->getInt64(1), ir_builder_);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user