Revision tags: llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2 |
|
#
ce1b24cc |
| 03-Aug-2022 |
Chuanqi Xu <yedeng.yd@linux.alibaba.com> |
[IRBuilder] Handle constexpr-bitcast for IRBuilder::CreateThreadLocalAddress
In case that opaque pointers not enabled, there may be some constexpr bitcast uses for thread local variables and the des
[IRBuilder] Handle constexpr-bitcast for IRBuilder::CreateThreadLocalAddress
In case that opaque pointers not enabled, there may be some constexpr bitcast uses for thread local variables and the design of llvm allow people to sink constant arbitrarily. This breaks the assumption of IRBuilder::CreateThreadLocalAddress. This patch tries to handle the case.
show more ...
|
Revision tags: llvmorg-15.0.0-rc1 |
|
#
bb283241 |
| 29-Jul-2022 |
Jay Foad <jay.foad@amd.com> |
[IRBuilder] CreateIntrinsic with implicit mangling
Add a new IRBuilderBase::CreateIntrinsic which takes the return type and argument values for the intrinsic call but does not take an explicit list
[IRBuilder] CreateIntrinsic with implicit mangling
Add a new IRBuilderBase::CreateIntrinsic which takes the return type and argument values for the intrinsic call but does not take an explicit list of types to mangle. Instead the builder works this out from the intrinsic declaration and the types of the supplied arguments.
This means that the mangling is hidden from the client, which in turn means that intrinsic definitions can change which arguments are mangled without requiring any changes to the client code.
Differential Revision: https://reviews.llvm.org/D130776
show more ...
|
Revision tags: llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5 |
|
#
41d5033e |
| 31-May-2022 |
Nikita Popov <npopov@redhat.com> |
[IR] Enable opaque pointers by default
This enabled opaque pointers by default in LLVM. The effect of this is twofold:
* If IR that contains *neither* explicit ptr nor %T* types is passed to tool
[IR] Enable opaque pointers by default
This enabled opaque pointers by default in LLVM. The effect of this is twofold:
* If IR that contains *neither* explicit ptr nor %T* types is passed to tools, we will now use opaque pointer mode, unless -opaque-pointers=0 has been explicitly passed. * Users of LLVM as a library will now default to opaque pointers. It is possible to opt-out by calling setOpaquePointers(false) on LLVMContext.
A cmake option to toggle this default will not be provided. Frontends or other tools that want to (temporarily) keep using typed pointers should disable opaque pointers via LLVMContext.
Differential Revision: https://reviews.llvm.org/D126689
show more ...
|
Revision tags: llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
#
0150645b |
| 30-Nov-2021 |
Ellis Hoag <ellis.sparky.hoag@gmail.com> |
[DebugInfo] Do not replace existing nodes from DICompileUnit
When creating a new DIBuilder with an existing DICompileUnit, load the DINodes from the current DICompileUnit so they don't get overwritt
[DebugInfo] Do not replace existing nodes from DICompileUnit
When creating a new DIBuilder with an existing DICompileUnit, load the DINodes from the current DICompileUnit so they don't get overwritten. This is done in the MachineOutliner pass, but it didn't change the CU so the bug never appeared. We need this if we ever want to add DINodes to the CU after it has been created, e.g., DIGlobalVariables.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D114556
show more ...
|
Revision tags: llvmorg-13.0.1-rc1 |
|
#
ca18fcc2 |
| 12-Nov-2021 |
David Sherwood <david.sherwood@arm.com> |
[IR] Change CreateStepVector to work with element types smaller than i8
Currently the stepvector intrinsic only supports element types that are integers of size 8 bits or more. This patch adds suppo
[IR] Change CreateStepVector to work with element types smaller than i8
Currently the stepvector intrinsic only supports element types that are integers of size 8 bits or more. This patch adds support for the creation of stepvectors with smaller element types by creating the intrinsic with i8 elements that we then truncate to the requested size.
It's not currently possible to write a vectoriser test to exercise this code path so I have added a unit test here:
llvm/unittests/IR/IRBuilderTest.cpp
Differential Revision: https://reviews.llvm.org/D113767
show more ...
|
#
86bf234d |
| 26-Sep-2021 |
hyeongyu kim <gusrb406@snu.ac.kr> |
[IR] Change the default value of InstertElement to poison (1/4)
This patch is for fixing potential insertElement-related bugs like D93818. ``` V = UndefValue::get(VecTy); for(...) V = Builder.Crea
[IR] Change the default value of InstertElement to poison (1/4)
This patch is for fixing potential insertElement-related bugs like D93818. ``` V = UndefValue::get(VecTy); for(...) V = Builder.CreateInsertElementy(V, Elt, Idx); => V = PoisonValue::get(VecTy); for(...) V = Builder.CreateInsertElementy(V, Elt, Idx); ``` Like above, this patch changes the placeholder V to poison. The patch will be separated into several commits.
Reviewed By: aqjune
Differential Revision: https://reviews.llvm.org/D110311
show more ...
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3 |
|
#
a5b72abc |
| 07-Sep-2021 |
Alok Kumar Sharma <AlokKumar.Sharma@amd.com> |
[DebugInfo] Enhance DIImportedEntity to accept children entities
New field `elements` is added to '!DIImportedEntity', representing list of aliased entities. This is needed to dump optimized debuggi
[DebugInfo] Enhance DIImportedEntity to accept children entities
New field `elements` is added to '!DIImportedEntity', representing list of aliased entities. This is needed to dump optimized debugging information where all names in a module are imported, but a few names are imported with overriding aliases.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D109343
show more ...
|
Revision tags: llvmorg-13.0.0-rc2 |
|
#
80ea2bb5 |
| 13-Aug-2021 |
Arthur Eubanks <aeubanks@google.com> |
[NFC] Rename AttributeList::getParam/Ret/FnAttributes() -> get*Attributes()
This is more consistent with similar methods.
|
Revision tags: llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1 |
|
#
5a229a67 |
| 19-Apr-2021 |
David Sherwood <david.sherwood@arm.com> |
[LoopVectorize] Don't create unnecessary vscale intrinsic calls
In quite a few cases in LoopVectorize.cpp we call createStepForVF with a step value of 0, which leads to unnecessary generation of llv
[LoopVectorize] Don't create unnecessary vscale intrinsic calls
In quite a few cases in LoopVectorize.cpp we call createStepForVF with a step value of 0, which leads to unnecessary generation of llvm.vscale intrinsic calls. I've optimised IRBuilder::CreateVScale and createStepForVF to return 0 when attempting to multiply vscale by 0.
Differential Revision: https://reviews.llvm.org/D100763
show more ...
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2 |
|
#
748ae528 |
| 08-Feb-2021 |
David Sherwood <david.sherwood@arm.com> |
[IR][SVE] Add new llvm.experimental.stepvector intrinsic
This patch adds a new llvm.experimental.stepvector intrinsic, which takes no arguments and returns a linear integer sequence of values of the
[IR][SVE] Add new llvm.experimental.stepvector intrinsic
This patch adds a new llvm.experimental.stepvector intrinsic, which takes no arguments and returns a linear integer sequence of values of the form <0, 1, ...>. It is primarily intended for scalable vectors, although it will work for fixed width vectors too. It is intended that later patches will make use of this new intrinsic when vectorising induction variables, currently only supported for fixed width. I've added a new CreateStepVector method to the IRBuilder, which will generate a call to this intrinsic for scalable vectors and fall back on creating a ConstantVector for fixed width.
For scalable vectors this intrinsic is lowered to a new ISD node called STEP_VECTOR, which takes a single constant integer argument as the step. During lowering this argument is set to a value of 1. The reason for this additional argument at the codegen level is because in future patches we will introduce various generic DAG combines such as
mul step_vector(1), 2 -> step_vector(2) add step_vector(1), step_vector(1) -> step_vector(2) shl step_vector(1), 1 -> step_vector(2) etc.
that encourage a canonical format for all targets. This hopefully means all other targets supporting scalable vectors can benefit from this too.
I've added cost model tests for both fixed width and scalable vectors:
llvm/test/Analysis/CostModel/AArch64/neon-stepvector.ll llvm/test/Analysis/CostModel/AArch64/sve-stepvector.ll
as well as codegen lowering tests for fixed width and scalable vectors:
llvm/test/CodeGen/AArch64/neon-stepvector.ll llvm/test/CodeGen/AArch64/sve-stepvector.ll
See this thread for discussion of the intrinsic: https://lists.llvm.org/pipermail/llvm-dev/2021-January/147943.html
show more ...
|
Revision tags: llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3, llvmorg-11.0.0-rc2, llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2, llvmorg-10.0.1-rc1, llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4, llvmorg-10.0.0-rc3, llvmorg-10.0.0-rc2 |
|
#
bf416d16 |
| 03-Feb-2020 |
Serge Pavlov <sepavloff@gmail.com> |
[FPEnv] Intrinsic for setting rounding mode
To set non-default rounding mode user usually calls function 'fesetround' from standard C library. This way has some disadvantages.
* It creates unnecess
[FPEnv] Intrinsic for setting rounding mode
To set non-default rounding mode user usually calls function 'fesetround' from standard C library. This way has some disadvantages.
* It creates unnecessary dependency on libc. On the other hand, setting rounding mode requires few instructions and could be made by compiler. Sometimes standard C library even is not available, like in the case of GPU or AI cores that execute small kernels. * Compiler could generate more effective code if it knows that a particular call just sets rounding mode.
This change introduces new IR intrinsic, namely 'llvm.set.rounding', which sets current rounding mode, similar to 'fesetround'. It however differs from the latter, because it is a lower level facility:
* 'llvm.set.rounding' does not return any value, whereas 'fesetround' returns non-zero value in the case of failure. In glibc 'fesetround' reports failure if its argument is invalid or unsupported or if floating point operations are unavailable on the hardware. Compiler usually knows what core it generates code for and it can validate arguments in many cases. * Rounding mode is specified in 'fesetround' using constants like 'FE_TONEAREST', which are target dependent. It is inconvenient to work with such constants at IR level.
C standard provides a target-independent way to specify rounding mode, it is used in FLT_ROUNDS, however it does not define standard way to set rounding mode using this encoding.
This change implements only IR intrinsic. Lowering it to machine code is target-specific and will be implemented latter. Mapping of 'fesetround' to 'llvm.set.rounding' is also not implemented here.
Differential Revision: https://reviews.llvm.org/D74729
show more ...
|
#
8c4e5576 |
| 15-Dec-2020 |
Fangrui Song <i@maskray.me> |
[docs][unittest][Go][StackProtector] Migrate deprecated DebugInfo::get to DILocation::get
|
#
d535a91d |
| 29-Jul-2020 |
Kevin P. Neal <kevin.neal@sas.com> |
[FPEnv] IRBuilder fails to add strictfp attribute
The strictfp attribute is required on all function calls in a function that is itself marked with the strictfp attribute. The IRBuilder knows this a
[FPEnv] IRBuilder fails to add strictfp attribute
The strictfp attribute is required on all function calls in a function that is itself marked with the strictfp attribute. The IRBuilder knows this and has a method for adding the attribute to function call instructions.
If a function being called has the strictfp attribute itself then the IRBuilder will refuse to add the attribute to the calling instruction despite being asked to add it. Eliminate this error.
Differential Revision: https://reviews.llvm.org/D84878
show more ...
|
#
eb81c85a |
| 16-Jun-2020 |
Christopher Tetreault <ctetreau@quicinc.com> |
[SVE] Deprecate default false variant of VectorType::get
Reviewers: efriedma, fpetrogalli, kmclaughlin, huntergr
Reviewed By: fpetrogalli
Subscribers: cfe-commits, tschuett, rkruppe, psnobl, llvm-
[SVE] Deprecate default false variant of VectorType::get
Reviewers: efriedma, fpetrogalli, kmclaughlin, huntergr
Reviewed By: fpetrogalli
Subscribers: cfe-commits, tschuett, rkruppe, psnobl, llvm-commits
Tags: #llvm, #clang
Differential Revision: https://reviews.llvm.org/D80342
show more ...
|
#
4d20e31f |
| 26-May-2020 |
Serge Pavlov <sepavloff@gmail.com> |
[FPEnv] Intrinsic llvm.roundeven
This intrinsic implements IEEE-754 operation roundToIntegralTiesToEven, and performs rounding to the nearest integer value, rounding halfway cases to even. The intri
[FPEnv] Intrinsic llvm.roundeven
This intrinsic implements IEEE-754 operation roundToIntegralTiesToEven, and performs rounding to the nearest integer value, rounding halfway cases to even. The intrinsic represents the missed case of IEEE-754 rounding operations and now llvm provides full support of the rounding operations defined by the standard.
Differential Revision: https://reviews.llvm.org/D75670
show more ...
|
#
a5e0389b |
| 23-Apr-2020 |
Sander de Smalen <sander.desmalen@arm.com> |
[AArch64] Define ACLE FP conversion intrinsics with more specific predicate.
This patch changes the FP conversion intrinsics to take a predicate that matches the number of lanes for the vector with
[AArch64] Define ACLE FP conversion intrinsics with more specific predicate.
This patch changes the FP conversion intrinsics to take a predicate that matches the number of lanes for the vector with the widest element type as opposed to using <vscale x 16 x i1>.
For example: ```<vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f16(<vscale x 4 x float>, <vscale x 4 x i1>, <vscale x 8 x half>)``` now uses <vscale x 4 x i1> instead of <vscale x 16 x i1>
And similar for: ```<vscale x 4 x float> @llvm.aarch64.sve.fcvt.f32f64(<vscale x 4 x float>, <vscale x 2 x i1>, <vscale x 2 x double>)``` where the predicate now matches the wider type, so <vscale x 2 x i1>.
Reviewers: efriedma, SjoerdMeijer, paulwalker-arm, rengolin
Reviewed By: efriedma
Tags: #clang
Differential Revision: https://reviews.llvm.org/D78402
show more ...
|
#
c7ff5b38 |
| 26-Mar-2020 |
Serge Pavlov <sepavloff@gmail.com> |
[FPEnv] Use single enum to represent rounding mode
Now compiler defines 5 sets of constants to represent rounding mode. These are:
1. `llvm::APFloatBase::roundingMode`. It specifies all 5 rounding
[FPEnv] Use single enum to represent rounding mode
Now compiler defines 5 sets of constants to represent rounding mode. These are:
1. `llvm::APFloatBase::roundingMode`. It specifies all 5 rounding modes defined by IEEE-754 and is used in `APFloat` implementation.
2. `clang::LangOptions::FPRoundingModeKind`. It specifies 4 of 5 IEEE-754 rounding modes and a special value for dynamic rounding mode. It is used in clang frontend.
3. `llvm::fp::RoundingMode`. Defines the same values as `clang::LangOptions::FPRoundingModeKind` but in different order. It is used to specify rounding mode in in IR and functions that operate IR.
4. Rounding mode representation used by `FLT_ROUNDS` (C11, 5.2.4.2.2p7). Besides constants for rounding mode it also uses a special value to indicate error. It is convenient to use in intrinsic functions, as it represents platform-independent representation for rounding mode. In this role it is used in some pending patches.
5. Values like `FE_DOWNWARD` and other, which specify rounding mode in library calls `fesetround` and `fegetround`. Often they represent bits of some control register, so they are target-dependent. The same names (not values) and a special name `FE_DYNAMIC` are used in `#pragma STDC FENV_ROUND`.
The first 4 sets of constants are target independent and could have the same numerical representation. It would simplify conversion between the representations. Also now `clang::LangOptions::FPRoundingModeKind` and `llvm::fp::RoundingMode` do not contain the value for IEEE-754 rounding direction `roundTiesToAway`, although it is supported natively on some targets.
This change defines all the rounding mode type via one `llvm::RoundingMode`, which also contains rounding mode for IEEE rounding direction `roundTiesToAway`.
Differential Revision: https://reviews.llvm.org/D77379
show more ...
|
#
c30d8f7c |
| 18-Feb-2020 |
Brian Gesiak <modocache@gmail.com> |
[IR] Set name when inserting 'llvm::Value*'
Summary: I noticed a small regression in a toy project of mine after applying D73835, in which instruction names weren't being set properly. In the exampl
[IR] Set name when inserting 'llvm::Value*'
Summary: I noticed a small regression in a toy project of mine after applying D73835, in which instruction names weren't being set properly. In the example test case included with this patch, `llvm::IRBuilderBase::CreateAdd` returns an `llvm::Value *` that is then passed as an argument to `llvm::IRBuilderBase::Insert`. The overloaded function that is selected for that call then ignores the `Name` parameter that is given. This patch addresses that issue.
Reviewers: nikic, Meinersbur, nhaehnle, fhahn, thakis, teemperor
Reviewed By: nikic, fhahn
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D74754
show more ...
|
Revision tags: llvmorg-10.0.0-rc1, llvmorg-11-init |
|
#
2f40f568 |
| 17-Dec-2019 |
Kevin P. Neal <kevin.neal@sas.com> |
[FPEnv] IRBuilder support for constrained sitofp/uitofp.
|
Revision tags: llvmorg-9.0.1, llvmorg-9.0.1-rc3 |
|
#
5d986953 |
| 11-Dec-2019 |
Reid Kleckner <rnk@google.com> |
[IR] Split out target specific intrinsic enums into separate headers
This has two main effects: - Optimizes debug info size by saving 221.86 MB of obj file size in a Windows optimized+debug build
[IR] Split out target specific intrinsic enums into separate headers
This has two main effects: - Optimizes debug info size by saving 221.86 MB of obj file size in a Windows optimized+debug build of 'all'. This is 3.03% of 7,332.7MB of object file size. - Incremental step towards decoupling target intrinsics.
The enums are still compact, so adding and removing a single target-specific intrinsic will trigger a rebuild of all of LLVM. Assigning distinct target id spaces is potential future work.
Part of PR34259
Reviewers: efriedma, echristo, MaskRay
Reviewed By: echristo, MaskRay
Differential Revision: https://reviews.llvm.org/D71320
show more ...
|
Revision tags: llvmorg-9.0.1-rc2 |
|
#
7f9b5138 |
| 04-Dec-2019 |
Melanie Blower <melanie.blower@intel.com> |
Reapply af57dbf12e54 "Add support for options -frounding-math, ftrapping-math, -ffp-model=, and -ffp-exception-behavior="
Patch was reverted because https://bugs.llvm.org/show_bug.cgi?id=440
Reapply af57dbf12e54 "Add support for options -frounding-math, ftrapping-math, -ffp-model=, and -ffp-exception-behavior="
Patch was reverted because https://bugs.llvm.org/show_bug.cgi?id=44048 The original patch is modified to set the strictfp IR attribute explicitly in CodeGen instead of as a side effect of IRBuilder. In the 2nd attempt to reapply there was a windows lit test fail, the tests were fixed to use wildcard matching.
Differential Revision: https://reviews.llvm.org/D62731
show more ...
|
#
54129136 |
| 04-Dec-2019 |
Melanie Blower <melanie.blower@intel.com> |
Revert " Reapply af57dbf12e54 "Add support for options -frounding-math, ftrapping-math, -ffp-model=, and -ffp-exception-behavior=""
This reverts commit cdbed2dd856c14687efd741c2d8321686102acb
Revert " Reapply af57dbf12e54 "Add support for options -frounding-math, ftrapping-math, -ffp-model=, and -ffp-exception-behavior=""
This reverts commit cdbed2dd856c14687efd741c2d8321686102acb8. Build break on Windows (lit fail)
show more ...
|
#
cdbed2dd |
| 02-Dec-2019 |
Melanie Blower <melanie.blower@intel.com> |
Reapply af57dbf12e54 "Add support for options -frounding-math, ftrapping-math, -ffp-model=, and -ffp-exception-behavior="
Patch was reverted because https://bugs.llvm.org/show_bug.cgi?id=440
Reapply af57dbf12e54 "Add support for options -frounding-math, ftrapping-math, -ffp-model=, and -ffp-exception-behavior="
Patch was reverted because https://bugs.llvm.org/show_bug.cgi?id=44048 The original patch is modified to set the strictfp IR attribute explicitly in CodeGen instead of as a side effect of IRBuilder
Differential Revision: https://reviews.llvm.org/D62731
show more ...
|
Revision tags: llvmorg-9.0.1-rc1, llvmorg-9.0.0, llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4, llvmorg-9.0.0-rc3 |
|
#
ea8678d1 |
| 29-Aug-2019 |
Serge Pavlov <sepavloff@gmail.com> |
Move floating point related entities to namespace level
This is recommit of commit e6584b2b7b2d, which was reverted in 30e7ee3c4bac together with af57dbf12e54. Original message is below.
Enumeratio
Move floating point related entities to namespace level
This is recommit of commit e6584b2b7b2d, which was reverted in 30e7ee3c4bac together with af57dbf12e54. Original message is below.
Enumerations that describe rounding mode and exception behavior were defined inside ConstrainedFPIntrinsic. It makes sense to use the same definitions to represent the same properties in other cases, not only in constrained intrinsics. It was however inconvenient as required to include constrained intrinsics definitions even if they were not needed. Also using long scope prefix reduced readability.
This change moves these definitioins to the namespace llvm::fp. No functional changes.
Differential Revision: https://reviews.llvm.org/D69552
show more ...
|
#
30e7ee3c |
| 18-Nov-2019 |
Eric Christopher <echristo@gmail.com> |
Temporarily Revert "Add support for options -frounding-math, ftrapping-math, -ffp-model=, and -ffp-exception-behavior=" and a follow-up NFC rearrangement as it's causing a crash on valid. Testcase is
Temporarily Revert "Add support for options -frounding-math, ftrapping-math, -ffp-model=, and -ffp-exception-behavior=" and a follow-up NFC rearrangement as it's causing a crash on valid. Testcase is on the original review thread.
This reverts commits af57dbf12e54f3a8ff48534bf1078f4de104c1cd and e6584b2b7b2de06f1e59aac41971760cac1e1b79
show more ...
|