- May 03, 2024
-
-
Matt Arsenault authored
We don't need to figure out the weird extended rounding modes or handle offsets to keep the lookup table in 64-bits. https://reviews.llvm.org/D153258 Depends #88587 -
LLVM GN Syncbot authored
-
Simon Pilgrim authored
-
Pierre van Houtryve authored
- Remove some cases where ULEB128 isn't needed - Add a fastDecodeULEB128 tailored for GlobalISel which does unchecked decoding optimized for the common case, which is 1 byte values. We rarely have >1 byte Inst IDs, OpIdx, etc. and those are the most common ULEB users by far. This specific LEB128 decode function generates almost 2x less instructions than the generic one.
-
YanzuoLiu authored
[clang] pointer to member with qualified-id enclosed in parentheses in unevaluated context should be invalid (#89713) clang don't check whether the operand of the & operator is enclosed in parantheses when pointer to member is formed in unevaluated context, for example: ```cpp struct foo { int val; }; int main() { decltype(&(foo::val)) ptr; } ``` `decltype(&(foo::val))` should be invalid, but clang accepts it. This PR fixes this issue. Fixes #40906. --------- Co-authored-by:cor3ntin <corentinjabot@gmail.com>
-
Oleksandr "Alex" Zinenko authored
It may be useful to have access to additional handles or parameters when performing matches and actions in `foreach_match`, for example, to parameterize the matcher by rank or restrict it in a non-trivial way. Enable `foreach_match` to forward additional handles from operands to matcher symbols and from action symbols to results.
-
Matt Arsenault authored
This is the mirror to the recent atomic load change. The same bitcast-back-to-integer case is a small code quality regression for the same reason. This would disappear with a bitcastable legal 128-bit type.
-
Matt Arsenault authored
-
Carl Ritson authored
Emit lds_size for all shader types in PAL metadata.
-
Matt Arsenault authored
Use a shift of a magic constant and some offseting to convert from flt_rounds values. I don't know why the enum defines Dynamic = 7. The standard suggests -1 is the cannot determine value. If we could start the extended values at 4 we wouldn't need the extra compare sub and select. https://reviews.llvm.org/D153257
-
Vitaly Buka authored
getAllocaSizeInBytes will crash casting size to constant.
-
Pavel Labath authored
It was aligning the byte size down. Now it aligns up. This manifested itself as SBTypeStaticField::GetConstantValue returning a zero-sized value for `bool` fields (because clang represents bool as a 1-bit value). I've changed the code for float Scalars as well, although I'm not aware of floating point values that are not multiples of 8 bits.
-
Vitaly Buka authored
-
Kareem Ergawy authored
Extends current support for delayed privatization during translation to LLVM IR. This adds support for materlizaing the `dealloc` region in `omp.private` ops when this region contains clean-up/deallocation logic that needs to be executed at the end of the parallel region. This changes the `OMPIRBuilder` slightly to execute the finalization callback **after** the privatization callback. This allows us to collect information about privatized variables on the MLIR and LLVM sides so that we can properly emit deallocation logic.
-
Pavel Labath authored
`ifeq` needs to be at the beginning of a line, otherwise it's interpreted as part of the recipe.
-
Christian Sigg authored
-
Christian Sigg authored
-
NimishMishra authored
Current implementation of default clause privatization incorrectly fails to privatize in presence of non-OpenMP constructs (i.e. nested constructs with regions whose symbols need to be privatized in the scope of the parent OpenMP construct). This patch fixes the same by considering non-OpenMP constructs separately by collecting symbols of a nested region if it is a non-OpenMP construct with a region, and privatizing it in the scope of the parent OpenMP construct. Fixes https://github.com/llvm/llvm-project/issues/71914 and https://github.com/llvm/llvm-project/issues/71915
-
Franklin Zhang authored
Inline calls to strcmp(s1, s2) and strncmp(s1, s2, N), where N and exactly one of s1 and s2 are constant. For example: ```c int res = strcmp(s, "ab"); ``` is converted to ```c int res = (int)s[0] - (int)'a'; if (res != 0) goto END; res = (int)s[1] - (int)'b'; if (res != 0) goto END; res = (int)s[2] - (int)'\0'; END: ``` Ported from a similar gcc feature [Inline strcmp with small constant strings](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78809).
-
jyu2-git authored
Currently isMapType could return OpenMPMapModifierKind. The change is to return OpenMPMapTypeKind only, if it is not MapType Kind OMPC_MAP_unknown is returned.
-
Owen Pan authored
-
Vitaly Buka authored
-
Nikita Popov authored
Convert the existing foldICmpTruncWithTruncOrExt() fold to work with trunc nowrap flags instead of computeKnownBits(). This also allows us to generalize the fold to work with signed comparisons. Interestingly, apart from the obvious combinations like signed predicates with trunc nsw, some non-obvious ones are also legal. For example for unsigned predicates we can do the transform for two trunc nsw as well (rather than only trunc nuw). Proofs: https://alive2.llvm.org/ce/z/ndewwK
-
Peiming Liu authored
-
Phoebe Wang authored
- [V]CVTP[D,S]2DQ supports `f64/f32` -> `i32` conversions that can be mapped to `llvm.lrint.vNi32.vNf64/32` since SSE2. AVX and AVX512 added 256-bit and 512-bit support; - VCVTP[D,S]2QQ supports `f64/f32` -> `i64` conversions that can be mapped to `llvm.l[l]rint.vNi64.vNf64/32` since AVX512DQ. All 128-bit, 256-bit (require AVX512VL) and 512-bit are supported.
-
Aart Bik authored
yields better IR in general, and all end-to-end tests pass!
-
Volodymyr Sapsai authored
There is no reason for C and Objective-C to differ from C++ in this matter. rdar://85531830
-
alx32 authored
When generating symbols for various category constructs, make sure the symbol names match the format of those generated by ld64 when it does category merging.
-
alx32 authored
We modify category merging code to simplify it, as follows: - We can simplify InfoWriteSection to not be templated - this is not really necessary. - We remove PointerListInfo::categoryOffset as it is not used.
-
Vitaly Buka authored
-
Michael Buch authored
Caused build-bot failures on various platforms.
-
Pavel Iliin authored
-
Vitaly Buka authored
-
Vitaly Buka authored
-
Jonas Devlieghere authored
Add the ability to specify a log level to Host::SystemLog.
-
Jason Molenda authored
In DNBArchImplARM64.cpp I'm doing ``` #if __has_feature(ptrauth_calls) && defined(__LP64__) ``` And the preprocessor warns that this is not defined behavior. This checks if ptrauth_calls is available and if this is being compiled 64-bit (i.e. arm64e), and defines a single DEBUGSERVER_IS_ARM64E when those are both true. I did have to duplicate one DNBLogThreaded() call which itself is a macro, and using an ifdef in the middle of macro arguments also got me a warning from the preprocessor. While testing this for all the different targets, I found a DNBError initialization that accepts a c-string but I'm passing in a printf-style formatter c-string and an argument. Create the string before the call and pass in the constructed string. rdar://127129242
-
Anlun Xu authored
-
Jason Molenda authored
-
Michael Buch authored
Prior to this change the debug-location for the `llvm.instrprof.increment` intrinsic was set to whatever the current DIBuilder's current debug location was set to. This meant that for switch-statements, a counter's location was set to the previous case's debug-location, causing confusing stepping behaviour in debuggers. This patch makes sure we attach a dummy debug-location for the increment instructions. rdar://123050737
-
Chris B authored
We had some odd places where we set target behaviors. We were setting the long size in target-specific code, but it should be language-based. We were not setting the Half float type semantics correctly, and instead were overriding the query in the AST context. This change it moves existing code to the right places in the Target so that as we continue working on target and language feature they are controlled in the right places. It also fixes a bug where the size of `half` was computed incorrectly when native half types are not supported.
-