mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-28 05:36:06 +00:00
[mlir][sparse] simplify negi code generation with subi
The lack of negi details leaked from merger class into codegen part. Also, special case for vector code was not needed, the type can be used directly! Reviewed By: bixia Differential Revision: https://reviews.llvm.org/D110677
This commit is contained in:
parent
d35702efe7
commit
7f1cb43d60
@ -790,14 +790,6 @@ static Value genExp(Merger &merger, CodeGen &codegen, PatternRewriter &rewriter,
|
||||
return genInvariantValue(merger, codegen, rewriter, exp);
|
||||
Value v0 = genExp(merger, codegen, rewriter, op, merger.exp(exp).children.e0);
|
||||
Value v1 = genExp(merger, codegen, rewriter, op, merger.exp(exp).children.e1);
|
||||
if (merger.exp(exp).kind == Kind::kNegI) {
|
||||
// TODO: no negi in std, need to make zero explicit.
|
||||
Type tp = op.getOutputTensorTypes()[0].getElementType();
|
||||
v1 = v0;
|
||||
v0 = rewriter.create<ConstantOp>(loc, tp, rewriter.getZeroAttr(tp));
|
||||
if (codegen.curVecLength > 1)
|
||||
v0 = genVectorInvariantValue(codegen, rewriter, v0);
|
||||
}
|
||||
return merger.buildExp(rewriter, loc, exp, v0, v1);
|
||||
}
|
||||
|
||||
|
@ -568,7 +568,7 @@ Optional<unsigned> Merger::buildTensorExp(linalg::GenericOp op, Value v) {
|
||||
if (isa<FloorFOp>(def))
|
||||
return addExp(kFloorF, e);
|
||||
if (isa<NegFOp>(def))
|
||||
return addExp(kNegF, e); // TODO: no negi in std?
|
||||
return addExp(kNegF, e); // no negi in std
|
||||
if (isa<FPTruncOp>(def))
|
||||
return addExp(kTruncF, e, v);
|
||||
if (isa<FPExtOp>(def))
|
||||
@ -651,9 +651,12 @@ Value Merger::buildExp(PatternRewriter &rewriter, Location loc, unsigned e,
|
||||
return rewriter.create<FloorFOp>(loc, v0);
|
||||
case kNegF:
|
||||
return rewriter.create<NegFOp>(loc, v0);
|
||||
case kNegI:
|
||||
assert(v1); // no negi in std
|
||||
return rewriter.create<SubIOp>(loc, v0, v1);
|
||||
case kNegI: // no negi in std
|
||||
return rewriter.create<SubIOp>(
|
||||
loc,
|
||||
rewriter.create<ConstantOp>(loc, v0.getType(),
|
||||
rewriter.getZeroAttr(v0.getType())),
|
||||
v0);
|
||||
case kTruncF:
|
||||
return rewriter.create<FPTruncOp>(loc, v0, inferType(e, v0));
|
||||
case kExtF:
|
||||
|
Loading…
x
Reference in New Issue
Block a user