- Feb 06, 2024
-
-
Valentin Clement authored
This patch adds a simple pass to replace the uses inside compute operation. It replaces the `varPtr` values with their corresponding `accPtr` values gathered through the dataClauseOperands. private and reductions variables are not included in this pass since they will normally be replace when they are materialized.
-
Zequan Wu authored
-
Craig Topper authored
-
Alex Bradbury authored
The implemented logic matches the logic used for Clang in emitting these attributes. Although it's hoped that function attributes won't be needed in the future (vs using fast math flags in individual IR instructions), there are codegen differences currently with/without these attributes, as can be seen in issues like #79257 or by hacking Clang to avoid producing these attributes and observing codegen changes.
-
Louis Dionne authored
-
Andrew Gozillon authored
This test was updated by me recently, however, the newly added CHECK-LABEL checks are breaking one of the RHEL PowerPC buildbots as the functions appear to be generated slightly different (in this case added attributes I think).
-
AtariDreams authored
Add cos(fabs(x)) -> cos(x) and cos(copysign(x, y)) -> cos(x).
-
Tom Stellard authored
This will allow us to track the state of the backport request in the PR, rather than in the issue. The state updates for PRs can be automated, so this will save us some triage work.
-
Michael Maitland authored
This patch implements the v0.8.1 specification. This patch reports version 0.8 in llvm since `RISCVISAInfo::ExtensionVersion` only has a `Major` and `Minor` version number. This patch includes includes support of the `Ssnpm`, `Smnpm`, `Smmpm`, `Sspm` and `Supm` extensions that make up RISC-V pointer masking. All of these extensions require emitting attribute containing correct `march` string. `Ssnpm`, `Smnpm`, `Smmpm` extensions introduce a 2-bit WARL field (PMM). The extension does not specify how PMM is set, and therefore this patch does not need to address this. One example of how it *could* be set is using the Zicsr instructions to update the PMM bits of the described registers. The full specification can be found at https://github.com/riscv/riscv-j-extension/blob/master/zjpm-spec.pdf
-
Dave Lee authored
I noticed a number of regex for libcxx formatters use an unnecessary regex grouping. This change removes those parentheses.
-
Dave Lee authored
-
Aart Bik authored
Rewrite *all* public methods, making original internal, private methods, and exposing wrappers under the original name. This works a bit better in practice (when combined with c-interface mechanism of torch-mlir for example).
-
stephenpeckham authored
-
Mats Petersson authored
This should fix failed build bots, so pushing before Windows build is done.
-
Yingwei Zheng authored
This patch refactors the interface of the `computeKnownFPClass` family to pass `SimplifyQuery` directly. The motivation of this patch is to compute known fpclass with `DomConditionCache`, which was introduced by https://github.com/llvm/llvm-project/pull/73662. With `DomConditionCache`, we can do more optimization with context-sensitive information. Example (extracted from [fmt/format.h](https://github.com/fmtlib/fmt/blob/e17bc67547a66cdd378ca6a90c56b865d30d6168/include/fmt/format.h#L3555-L3566)): ``` define float @test(float %x, i1 %cond) { %i32 = bitcast float %x to i32 %cmp = icmp slt i32 %i32, 0 br i1 %cmp, label %if.then1, label %if.else if.then1: %fneg = fneg float %x br label %if.end if.else: br i1 %cond, label %if.then2, label %if.end if.then2: br label %if.end if.end: %value = phi float [ %fneg, %if.then1 ], [ %x, %if.then2 ], [ %x, %if.else ] %ret = call float @llvm.fabs.f32(float %value) ret float %ret } ``` We can prove the signbit of `%value` is always zero. Then the fabs can be eliminated.
-
Alex Lorenz authored
…ndows x86_64 targets that use windows 64 prologue Windows x86_64 stack frame layout is currently not compatible with Swift's async extended frame, which reserves the slot right below RBP (RBP-8) for the async context pointer, as it doesn't account for the fact that a stack object in a win64 frame can be allocated at the same location. This can cause issues at runtime, for instance, Swift's TCA test code has functions that fail because of this issue, as they spill a value to that slack slot, which then gets overwritten by a store into address returned by the @llvm.swift.async.context.addr() intrinsic (that ends up being RBP - 8), leading to an incorrect value being used at a later point when that stack slot is being read from again. This change drops the use of async extended frame for windows x86_64 subtargets and instead uses the x32 based approach of allocating a separate stack slot for the stored async context pointer. Additionally, LLDB which is the primary consumer of the extended frame makes assumptions like checking for a saved previous frame pointer at the current frame pointer address, which is also incompatible with the windows x86_64 frame layout, as the previous frame pointer is not guaranteed to be stored at the current frame pointer address. Therefore the extended frame layout can be turned off to fix the current miscompile without introducing regression into LLDB for windows x86_64 as it already doesn't work correctly. I am still investigating what should be made for LLDB to support using an allocated stack slot to store the async frame context instead of being located at RBP - 8 for windows.
-
Simon Pilgrim authored
-
Simon Pilgrim authored
[X86] Regenerate some vector constant comments missed in recent patches to improve mask predicate handling in addConstantComments These were missed as filecheck just ignores what's after the end of the check pattern for each line
-
Mészáros Gergely authored
Previously `__builtin_printf` would result to emitting call to `printf`, even though directly calling `printf` was translated. Ref: #68478
-
Anton Korobeynikov authored
-
David Spickett authored
Seems the easiest way to quiet this workflow while we figure out the final form of it.
-
Tom Stellard authored
There is more space available on /mnt (~56G) than on / (~30G), and we are starting to see some of the CI jobs run out of disk space on Linux.
-
agozillon authored
This patch seeks to add an initial lowering for pointers and allocatable variables captured by implicit and explicit map in Flang OpenMP for Target operations that take map clauses e.g. Target, Target Update. Target Exit/Enter etc. Currently this is done by treating the type that lowers to a descriptor (allocatable/pointer/assumed shape) as a map of a record type (e.g. a structure) as that's effectively what descriptor types lower to in LLVM-IR and what they're represented as in the Fortran runtime (written in C/C++). The descriptor effectively lowers to a structure containing scalar and array elements that represent various aspects of the underlying data being mapped (lower bound, upper bound, extent being the main ones of interest in most cases) and a pointer to the allocated data. In this current iteration of the mapping we map the structure in it's entirety and then attach the underlying dat...
-
Stanislav Mekhanoshin authored
-
Stanislav Mekhanoshin authored
Opsel bits are swapped. Actual byte select table: Byte OPSEL 0 0 1 2 2 1 3 3
-
Han-Chung Wang authored
Reverts llvm/llvm-project#79752 because it is causing regressions in downstream projects.
-
Yingwei Zheng authored
The assertion in #80597 failed when we were trying to compute known bits of a value in an unreachable BB. https://github.com/llvm/llvm-project/blob/859b09da08c2a47026ba0a7d2f21b7dca705864d/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp#L749-L810 In this case, `SignBits` is 30 (deduced from instr info), but `Known` is `10000101010111010011110101000?0?00000000000000000000000000000000` (deduced from dom cond). Setting high bits of `lshr Known, 1` will lead to conflict. This patch masks out high bits of `Known.Zero` to address this problem. Fixes #80597.
-
Benjamin Kramer authored
-
Billy Laws authored
ISel handles filling in x4/x5 when calling variadic functions as they don't correspond to the 5th/6th X64 arguments but rather to the end of the shadow space on the stack and the size in bytes of all stack parameters (ignored and written as 0 for calls from entry thunks). Will PR a follow up with ISel handling after this is merged.
-
Timm Bäder authored
Emit them just like the others, but these are integer typed.
-
Louis Dionne authored
This reverts commit 372f7dd4, which is not needed by Chrome anymore.
-
Mark de Wever authored
The issue addresses an obvious wording issue. Implementing the constructors as specified in the synposis, as libc++ did, already implements the fixed behaviour. Updates: - LWG3346 pair and tuple copy and move constructor have backwards specification
-
Tom Eccles authored
The website renders this `<h1>` as the page title in the index. This patch updates the title to better fit with the names of the other pages. See the index here https://flang.llvm.org/docs/
-
Louis Dionne authored
-
Valentin Clement (バレンタイン クレメン) authored
Reverts llvm/llvm-project#80351 Breaks some buildbot
-
Rajveer Singh Bharadwaj authored
Fixes #78754
-
Dimitry Andric authored
As of 4d20cfcf, `__bit_reference` contains a template `__fill_n` with a bool `_FillValue` parameter. Unfortunately there is a relatively widely used piece of scientific software called NetCDF, which exposes a (C) macro `_FillValue` in its public headers. When building the NetCDF C++ bindings, this quickly leads to compilation errors when the macro interferes with the template in `__bit_reference`. Rename the parameter to `_FillVal` to avoid the conflict.
-
Valentin Clement (バレンタイン クレメン) authored
This patch adds a simple pass to replace the uses inside compute operation. It replaces the `varPtr` values with their corresponding `accPtr` values gathered through the dataClauseOperands. private and reductions variables are not included in this pass since they will normally be replace when they are materialized. --------- Co-authored-by:Slava Zakharin <szakharin@nvidia.com>
-
Timm Bäder authored
-
Simon Pilgrim authored
Handle masked predicated movss/movsd in addConstantComments now that we can generically handle the destination + mask register This will more significantly help improve 'fixup constant' comments from #73509
-