[flang-commits] [flang] [flang] add simplification for ProductOp intrinsic (PR #169575)
Eugene Epshteyn via flang-commits
flang-commits at lists.llvm.org
Wed Nov 26 07:04:21 PST 2025
================
@@ -1671,6 +1671,25 @@ mlir::Value fir::factory::createZeroValue(fir::FirOpBuilder &builder,
"numeric or logical type");
}
+mlir::Value fir::factory::createOneValue(fir::FirOpBuilder &builder,
+ mlir::Location loc, mlir::Type type) {
+ mlir::Type i1 = builder.getIntegerType(1);
+ if (mlir::isa<fir::LogicalType>(type) || type == i1)
+ return builder.createConvert(loc, type, builder.createBool(loc, true));
+ if (fir::isa_integer(type))
+ return builder.createIntegerConstant(loc, type, 0);
+ if (fir::isa_real(type))
+ return builder.createRealOneConstant(loc, type);
+ if (fir::isa_complex(type)) {
+ fir::factory::Complex complexHelper(builder, loc);
+ mlir::Type partType = complexHelper.getComplexPartType(type);
+ mlir::Value onePart = builder.createRealOneConstant(loc, partType);
+ return complexHelper.createComplex(type, onePart, onePart);
+ }
+ fir::emitFatalError(loc, "internal: trying to generate zero value of non "
----------------
eugeneepshteyn wrote:
"one value"
https://github.com/llvm/llvm-project/pull/169575
More information about the flang-commits
mailing list