- Mar 27, 2024
-
-
Craig Topper authored
From the spec | Instruction | Register | Cannot Overlap | | ----------- | -------- | -------------- | | vaes*.vs | vs2 | vd | | vsm4r.vs | vs2 | vd | | vsha2c[hl] | vs1, vs2 | vd | | vsha2ms | vs1, vs2 | vd | | sm3me | vs2 | vd | | vsm3c | vs2 | vd |
-
Shilei Tian authored
-
Shilei Tian authored
-
Jeremy Day authored
Fixes https://github.com/llvm/llvm-project/issues/83046 There is a race condition when calling `GetFileAttributesW` that can cause it to return `ERROR_ACCESS_DENIED` on a path which exists, which is unexpected for callers using this function to check for file existence by passing `AccessMode::Exist`. This was manifesting as a compiler crash on Windows downstream in the Swift compiler when using the `-index-store-path` flag (more information in https://github.com/apple/llvm-project/issues/8224). I looked for alternate APIs to avoid bringing in `shlwapi.h`, but didn't see any good candidates. I'm not tied at all to this solution, any feedback and alternative approaches are more than welcome.
-
Craig Topper authored
This allows the asm printer to print the stack spill/reload messages.
-
Teresa Johnson authored
Restructure the handling of edges that become empty during the cloning process. Instead of removing them as they become empty (no context ids and alloc type), do this once after all cloning is complete. This has no effect on the cloning result, but prepares for a follow on change that does improve the cloning. The structural change here reduces the diffs for the follow on change, which would be much more difficult with the previous handling.
-
Shih-Po Hung authored
Use the destination data type to measure the LMUL size for latency/throughput cost
-
Oleksandr "Alex" Zinenko authored
Transform op trait verification calls `getEffects`, and since trait verification runs before op verification, this call cannot assume the op to be valid. However, the operand getters now return a `TypedValue` that unconditionally casts the value to the expected type, leading to an assertion failure. Use the untyped mechanism instead. Fixes #84701.
-
Matthias Springer authored
This commit adds a helper function that dumps the constraint set and the mapping of columns to values/dims. For debugging only. Example output: ``` ========== Columns: (column dim value) 0 1 linalg.fill (result 0) 1 1 tensor.extract_slice (result 0) 2 n/a affine.min (result 0) 3 n/a scf.for (bbarg 0) 4 n/a func.func (bbarg 2) Constraint set: Domain: 0, Range: 1, Symbols: 4, Locals: 0 6 constraints (None None None None None const) 1 -1 0 0 0 0 = 0 0 1 -1 0 0 0 = 0 0 0 -1 -1 1 0 >= 0 0 0 -1 0 0 4 >= 0 0 0 0 1 0 0 >= 0 0 0 0 -1 1 -1 >= 0 ========== ```
-
Enna1 authored
This patch replaces the `SANITIZER_WORDSIZE / 2` with `sizeof(CompactPtrT) * 8`, replaces hardcoded `4` with `kCompactPtrScale` in assertion.
-
Changpeng Fang authored
We should not manually get the types of the loading data. Instead, we can get the types from the intrinsics directly.
-
Michael Maitland authored
These cases in particular are done as a precommit to support legalization, regbank selection, and instruction selection for extends, splat vectors, and integer compares in #85938.
-
Pavel Kosov authored
…i_check This causes __cfi_check, just as __cfi_check_fail, to get the proper target-specific attributes, in particular uwtable for unwind table generation. Previously, nounwind attribute could be inferred for __cfi_check, which caused it to lose its unwind table even with -funwind-table option. ~~ Huawei RRI, OS Lab Co-authored-by:Nikolai Kholiavin <kholiavin.nikolai@huawei-partners.com>
-
Michael Maitland authored
G_VSCALE should be lowered using VLENB. If the type is not sXLen it should be lowered using a G_VSCALE on the narrow type and a G_MUL. regbank select and instruction select are straightforward so we really only need to add tests to show it works.
-
Aart Bik authored
This fixes an "infinite" loop bug, where the incoming IR was repeatedly rewritten while adding identical cast operations. The test for compatible types should include the notion of an encoding. If it differs, then a naive fusion into the consumer is invalid.
-
SevenIsSeven authored
This commit(https://github.com/llvm/llvm-project/pull/84738 ) introduced following compile warning then treated-as-error in MSVC build. >>>"'^': unsafe mix of type 'unsigned int' and type 'bool' in operation" --------- Co-authored-by:
Seven <Seven.Li@amd.com>
-
Vadim Paretsky authored
This PR adds loop collapse tests ported from MSVC. --------- Co-authored-by:Vadim Paretsky <b-vadipa@microsoft.com>
-
Alex MacLean authored
While a stack size large enough to cause this truncation to be a problem would certainly cause other issues and not produce a valid program anyway, this cast is triggering our Coverity static analysis. Removing it seems cleaner.
-
Craig Topper authored
There were 3 temporaries that just renamed the 3 well name arguments to the function to Tmp1-3. Looks like this was done when the code was extracted from elsewhere into a separate function 15 years ago.
-
Xiangyang (Mark) Guo authored
getCost() expects that isVariable() is true. https://github.com/llvm/llvm-project/blob/main/llvm/include/llvm/Analysis/InlineCost.h#L146 Co-authored-by:
helloguo <helloguo@meta.com>
-
Jon Chesterfield authored
compiler-rt may depend on libc (memset etc). Likewise a libc built by clang may depend on compiler-rt builtins. This circular dependency doesn't matter much once they're both compiled. The easy compilation order to build both from source is: 1. install libc headers somewhere 2. build compiler-rt builtins against those headers 3. build libc against compiler-rt builtins This patch relaxes the cmake sanity check to pass without requiring a libc library. That allows the above sequence to work. Otherwise one needs to build a static libc, then use that to pass the compiler-rt cmake check, then build a normal libc.
-
Nick Desaulniers authored
The arm32 buildbot reports an error because UInt::operator bool() is explicit, thus an explicit cast is necessary. Link: #85940
-
Christopher Ferris authored
Do not abort if a vector cannot increase its own capacity. In that case, push_back calls silently fail. Modify the ScopedString implementation so that it no longer requires two passes to do the format. Move the helper functions to be private member functions so that they can use push_back directly. This allows the capacity to be increased under the hood and/or silently discards data if the capacity is exceeded and cannot be increased. Add new tests for the Vector and ScopedString for capacity increase failures. Doing this so that if a map call fails, and we are attempting to write an error string, we can still get some of the message dumped. This also avoids crashing in Scudo code, and makes the caller handle any failures.
-
Joseph Huber authored
Summary: This needs to go after `extern "C"`.
-
Matthias Gehre authored
As discussed in one of the previous TOSA community meetings, we would like to allow for more integer types in the TOSA dialect to enable more use cases. For strict standards conformance, the TosaValidation pass can be used. Follow up PRs will extend conversions from TOSA where needed.
-
Alina Sbirlea authored
-
Piotr Zegar authored
Sort entrys in release notes.
-
Fangrui Song authored
In glibc versions before 2.33. `libc_nonshared.a` defines `__fxstat/__fxstat64` but there is no `fstat/fstat64`. glibc 2.33 added `fstat/fstat64` and obsoleted `__fxstat/__fxstat64`. Ports added after 2.33 do not provide `__fxstat/__fxstat64`, so our `fstat/fstat64` interceptors using `__fxstat/__fxstat64` interceptors would lead to runtime failures on such ports (LoongArch and certain RISC-V ports). Similar to https://reviews.llvm.org/D118423, refine the conditions that we define fstat{,64} interceptors. `fstat` is supported by musl/*BSD while `fstat64` is glibc only.
-
Florian Mayer authored
This is so we can use a different slot for stack MTE.
-
Florian Mayer authored
-
Craig Topper authored
[RISCV] Check that the stack adjust immediate for cm.push/pop* has the correct sign and is divisible by 16. (#85295) To do this I've added a new AsmOperand for cm.push to expect a negative value. We also use that to customize the print function so that we don't need to detect cm.push opcode to add the negative sign. I've renamed some places that used Spimm to be StackAdj since that's what is being parsed. I'm still not about where we should use Spimm or StackAdj. I've removed the printSpimm helper function which in one usage printed the sp[5:4]<<4 value and the other usage printed the full stack adjustment. There wasn't anything interesting about how it was printed it just passed the value to the raw_stream. If there was something special needed, it's unclear whether it would be the same for the two different usages so I inlined it. One open question is whether we need to support stack adjustments expressed as an expression rather than a literal integer.
-
OverMighty authored
Fixes #86549.
-
Vinayak Dev authored
Resolves #86547 Replace occurrences of the macro `LIBC_HAS_ATTRIBUTE` with `__has_attribute`.
-
Vinayak Dev authored
Removes unused header includes from `strfrom*()` implementation files.
-
Björn Pettersson authored
When folding (ashr (shl, x, c1), c2) we need to treat c1 and c2 as unsigned to find out if the combined shift should be a left or right shift. Also do an early out during pre-legalization in case c1 and c2 has differet types, as that otherwise complicated the comparison of c1 and c2 a bit.
-
Razvan Lupusoru authored
PR#80319 added support to record combined construct semantics via an attribute. Add lowering support for this.
-
Michael Jones authored
The canonicalize test added in #85940 defined the LIBC_NAMESPACE macro. this macro is intended to be set only by the build system and never in the code.
-
Bjorn Pettersson authored
It has been noticed that combineShiftRightArithmetic isn't dealing properly with large shift amounts, as demonstrated by the test case added in this commit. I think the problem partly is related to X86 using i8 as shift amount type during ISel. So shift amount larger then 127 may be treated as negative shift amounts if not being careful.
-
Peter Klausler authored
Rearrange some new code a little bit to avoid a bogus error message coming out from GCC 13.2.0 about an uninitialized data member in a parser.
-
Félix-Antoine Constantin authored
The check needs a parent decl to match but if the typedef is in a function, the parent is a declStmt which is not a decl by itself. Improved the matcher to match on either a decl or a declstmt and extract the decl from the stmt in the latter case. Fixes #72179
-