Skip to content

Commit 3cad8ad

Browse files
pruthvi1990ftynse
authored andcommitted
Add zero_extendi and sign_extendi to intrinsic namespace
Summary: - update zero_extendi and sign_extendi in edsc/intrinsic namespace - Builder API test for zero_extendi and sign_extendi Differential Revision: https://reviews.llvm.org/D72298
1 parent 9d3e78e commit 3cad8ad

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

mlir/include/mlir/EDSC/Intrinsics.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@ using std_store = OperationBuilder<StoreOp>;
213213
using subi = ValueBuilder<SubIOp>;
214214
using tanh = ValueBuilder<TanhOp>;
215215
using view = ValueBuilder<ViewOp>;
216+
using zero_extendi = ValueBuilder<ZeroExtendIOp>;
217+
using sign_extendi = ValueBuilder<SignExtendIOp>;
216218

217219
/// Branches into the mlir::Block* captured by BlockHandle `b` with `operands`.
218220
///

mlir/test/EDSC/builder-api-test.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,32 @@ TEST_FUNC(insertion_in_block) {
459459
f.erase();
460460
}
461461

462+
TEST_FUNC(zero_and_sign_extendi_op_i1_to_i8) {
463+
using namespace edsc;
464+
using namespace edsc::intrinsics;
465+
using namespace edsc::op;
466+
auto i1Type = IntegerType::get(1, &globalContext());
467+
auto i8Type = IntegerType::get(8, &globalContext());
468+
auto memrefType = MemRefType::get({}, i1Type, {}, 0);
469+
auto f = makeFunction("zero_and_sign_extendi_op", {}, {memrefType, memrefType});
470+
471+
OpBuilder builder(f.getBody());
472+
ScopedContext scope(builder, f.getLoc());
473+
IndexedValue A(f.getArgument(0));
474+
IndexedValue B(f.getArgument(1));
475+
// clang-format off
476+
edsc::intrinsics::zero_extendi(*A, i8Type);
477+
edsc::intrinsics::sign_extendi(*B, i8Type);
478+
// CHECK-LABEL: @zero_and_sign_extendi_op
479+
// CHECK: %[[SRC1:.*]] = affine.load
480+
// CHECK: zexti %[[SRC1]] : i1 to i8
481+
// CHECK: %[[SRC2:.*]] = affine.load
482+
// CHECK: sexti %[[SRC2]] : i1 to i8
483+
// clang-format on
484+
f.print(llvm::outs());
485+
f.erase();
486+
}
487+
462488
TEST_FUNC(select_op_i32) {
463489
using namespace edsc;
464490
using namespace edsc::intrinsics;

0 commit comments

Comments
 (0)