| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[flang][hlfir] Support polymorphic hlfir.expr values. This patch sets 'polymorphic' attribute of hlfir::ExprType when the value is created from a polymorphic entity. Memoization of such ExprType involves creating a mutable descriptor on the stack, which is initialized (as a null box) and passed to AllocatableApplyMold with the mold being the entity from which the ExprType value is being created. This patch fixes "creating polymorphic temporary" TODO and also several cases of "'fir.convert' op invalid type conversion" error. Reviewed By: tblah Differential Revision: https://reviews.llvm.org/D155541 | 2 年前 | |
[flang] Carry the whole polymorphic box in PolymorphicValue Until now, only the address of the type descriptor was hold in a PolymorphicValue. In some cases, the element size and the type code are also needed when creating new polymorphic descriptors from an element of a polymorphic entity. This patch updates PolymorphicValue to carry the source descriptor from which the element is extracted. The source descriptor is then used when emboxing the element to a new polymorphic descriptor. This simplify the code done in D141274 and will be used when creating polymorphic temporary as well. Reviewed By: jeanPerier, PeteSteinfeld Differential Revision: https://reviews.llvm.org/D141609 | 3 年前 | |
[Flang] Split PowerPC-specific code out of IntrinsicCall into PPCIntrinsicCall This patch moves PPC intrinsic generator code to PPCIntrinsicCall.cpp. In order to move PowerPC intrinsic code out of IntrinsicCall.cpp, we need to also move some declarations to IntrinsicCall.h. handlers[] and mathOperations[] were also chosen to be moved to the IntrinsicCall header. Similarly, ppcHandlers[] and ppcMathOperations[] were moved to the PPCIntrinsicCall header. There are future patches coming up that will introduce many new PPC intrinsics, these will now be defined in PPCIntrinsicCall. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D152460 | 3 年前 | |
[flang][hlfir] hlfir.char_extremum op definition and codegen This patch adds an hlfir operation called char_extremum, which takes the lexicographic comparison between a variadic number (minimum of 2 arguments) of characters. Discussion for this work can be found in the draft revision found [here](https://reviews.llvm.org/D143326). The reason I'm not promoting that draft to a true patch for review was because I needed to separate out the op definition/codegen and lowering as two separate patches, as preferred by @jeanPerier. Differential Revision: https://reviews.llvm.org/D152474 | 3 年前 | |
[Flang] Add a factory class for creating Complex Ops Use the factory class in the FIRBuilder. Add unit tests for the factory class function and the convert function of the Complex class. Reviewed By: clementval, rovka Differential Revision: https://reviews.llvm.org/D114125 Co-authored-by: Jean Perier <jperier@nvidia.com> Co-authored-by: Eric Schweitz <eschweitz@nvidia.com> | 4 年前 | |
[flang] Remove 'using namespace mlir; from header files Currently, CGOps.h and FIROps.h contain using namespace mlir;. Every file that includes one of these header files (directly and transitively) will have the MLIR namespace enabled. With name-clashes within sub-projects (LLVM and MLIR, MLIR and Flang), this is not desired. Also, it is not possible to "un-use" a namespace once it is "used". Instead, we should try to limit using namespace to implementation files (i.e. *.cpp). This patch removes using namespace mlir; from header files and adjusts other files accordingly. In header and TableGen files, extra namespace qualifier is added when referring to symbols defined in MLIR. Similar approach is adopted in source files that didn't require many changes. In files that would require a lot of changes, using namespace mlir;` is added instead. Differential Revision: https://reviews.llvm.org/D120897 | 4 年前 | |
[flang][hlfir] Fixed finalization in hlfir.assign codegen. When hlfir.assign is lowered into simple load/store, we may still need to finalize the LHS. The patch passes needFinalization to genScalarAssignment for LHS of any derived type, so some Destroy calls might be redundant. They can be removed later by propagating/deducing IsFinalizable information about the LHS type. Reviewed By: clementval Differential Revision: https://reviews.llvm.org/D155664 | 2 年前 | |
[flang][hlfir] Lower char length inquiry via hlfir.get_length. ApplyOp provides the type parameters in its argument, so we can take it from there. For hlfir.expr block arguments (such as with user-defined assignments) we use hlfir.get_length in lowering. Depends on D154561 Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D154562 | 3 年前 | |
[flang] Fix complex libm use logic problems Fix the various complex libm selection logic issues from D155310: - disableMlirComplex is set to false. This means that using mlir complex is enabled. Yet, the current code still selects libm. - If we enable mlir complex, we should not check if use approx is enabled. Namely, we should use mlir complex either if we enable mlir complex OR use approx is enabled. To fix the issues, we flip the logic of disableMlirComplex to enable instead. We set it to false by default since the intention from D155310 is to use libm by default. Then we use a logical && with use approx so that we select libm when BOTH mlir complex and use approx are disabled. Reviewed By: vzakhari Differential Revision: https://reviews.llvm.org/D155737 | 2 年前 | |
[flang] IEEE_ARITHMETIC intrinsic module procedures Implement - IEEE_CLASS - IEEE_COPY_SIGN - IEEE_GET_ROUNDING_MODE - IEEE_IS_FINITE - IEEE_IS_NAN - IEEE_IS_NEGATIVE - IEEE_IS_NORMAL - IEEE_SET_ROUNDING_MODE - IEEE_SIGNBIT - IEEE_SUPPORT_ROUNDING - IEEE_UNORDERED - IEEE_VALUE for all REAL kinds (2, 3, 4, 8, 10, 16) where applicable. | 3 年前 | |
[flang][hlfir] Fixed lowering for intrinsic calls with null() box argument. Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D150501 | 3 年前 | |
[flang] Add PowerPC vec_abs, vec_nmadd, vec_msub and vec_sel intrinsics Co-authored-by: Paul Scoropan <1paulscoropan@gmail.com> Differential Revision: https://reviews.llvm.org/D154985 | 2 年前 | |
[flang][hlfir] Codegen of hlfir.region_assign where LHS conflicts When the analysis of hlfir.region_assign determined that the LHS region evaluation may be impacted by the assignment effects, all LHS must be fully evaluated and saved before any assignment is done. This patch adds TemporaryStorage variants to save address, including vector subscripted entities addresses whose shape must be saved. It uses the DescriptorStack runtime to deal with complex cases inside forall. For the sake of simplicity, this is also used for vector subscripted LHS outside of foralls (each element address is saved as a descriptor on this stack. This is a bit suboptimal, but it is a safe start that will work with all kinds of type (polymorphic, PDTs...) without further work). Another approach would be to saved only the values that are conflicting in the LHS computation, but this would require a much more complex analysis of the LHS region DAG. Differential Revision: https://reviews.llvm.org/D154057 | 3 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 4 年前 | ||
| 4 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 2 年前 | ||
| 3 年前 |