- Jun 27, 2023
-
-
Philip Reames authored
-
Fangrui Song authored
-
Anthony Cabrera authored
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
-
Fangrui Song authored
Previously, Clang Driver reported a warning when assembler input was assembled with the -mabi= option. D152856 added TargetSpecific to -mabi= option and reported an error for such a case. This change restores the previous behavior by reporting a warning. GCC translates -mabi={apcs-gnu,atpcs} to gas -meabi=gnu and other -mabi= values to -meabi=5. We don't support setting e_flags to any value other than EF_ARM_EABI_VER5. Close https://github.com/ClangBuiltLinux/linux/issues/1878 Reviewed By: michaelplatings Differential Revision: https://reviews.llvm.org/D153691 -
Aiden Grossman authored
This patch adds in several functions to ExegesisTarget that will assist in setting up memory for the planned memory annotations. Reviewed By: courbet Differential Revision: https://reviews.llvm.org/D151023
-
Sam McCall authored
The SAT solver imported its constraints by iterating over an unordered DenseSet. The path taken, and ultimately the runtime, the specific solution found, and whether it would time out or complete could depend on the iteration order. Instead, have the caller specify an ordered collection of constraints. If this is built in a deterministic way, the system can have deterministic behavior. (The main alternative is to sort the constraints by value, but this option is simpler today). A lot of nondeterminism still appears to be remain in the framework, so today the solver's inputs themselves are not deterministic yet. Differential Revision: https://reviews.llvm.org/D153584
-
Craig Topper authored
I'm investigating if it is feasible to have i32 as a legal type for RV64. The first thing we need to do is make i32 a valid type for the GPR register class. We already added f32/f64 as valid types which required adding explicit types to tablegen patterns. Adding additional types to GPR is free now. Reviewed By: sunshaoce Differential Revision: https://reviews.llvm.org/D151177
-
Aiden Grossman authored
This patch changes to disabling tests in SubprocessMemoryTest.cpp using preprocessor directives rather than pulling the file out of the build using CMake. This is the de facto canonical way to do it in the rest of the tree as seen in other unittest files such as DwarfDebugInfoTest.cpp.
-
Mike Crowe authored
Add FormatStringConverter utility class that is capable of converting printf-style format strings into std::print-style format strings along with recording a set of casts to wrap the arguments as required and removing now-unnecessary calls to std::string::c_str() and std::string::data() Use FormatStringConverter to implement a new clang-tidy check that is capable of converting calls to printf, fprintf, absl::PrintF, absl::FPrintF, or any functions configured by an option to calls to std::print and std::println, or other functions configured by options. In other words, the check turns: fprintf(stderr, "The %s is %3d\n", description.c_str(), value); into: std::println(stderr, "The {} is {:3}", description, value); if it can. std::print and std::println can do almost anything that standard printf can, but the conversion has some some limitations that are described in the documentation. If conversion is not possible then the call remains unchanged.... -
Valentin Clement authored
Add loweirng support for array reduction with the max operator. Simplify generation of init value. Depends on D153661 Reviewed By: jeanPerier Differential Revision: https://reviews.llvm.org/D153663
-
Craig Topper authored
[RISCV][SelectionDAGBuilder] Fix an implicit scalable TypeSize to fixed size conversion in getUniformBase. If the index needs to be scaled by a scalable size, just give up. Fixes #63459 Reviewed By: frasercrmck, RKSimon Differential Revision: https://reviews.llvm.org/D153601
-
Shubham Sandeep Rastogi authored
This reverts commit d6576add. Reverted because BUILD FAILED: failed 41960 expected passes 86 expected failures 28788 unsupported tests 1 unexpected failures (failure)
-
Jeff Niu authored
Depends on D153736 Reviewed By: rriddle, jpienaar Differential Revision: https://reviews.llvm.org/D153780
-
Jeff Niu authored
Fold `mul(x, 1)` and `mul(x, 0)`. Depends on D153736 Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D153736
-
Jeff Niu authored
This is a case that is not picked up by integer range inference and suggests a weakness with integer range inference on the index dialect. The problem is that when `[1, SMAX_64]` is truncated to 32 bits, the resulting range could be `[SMIN_32, SMAX_32]`, making the subsequent comparison worthless. This is because integer range inference doesn't know that the result of the max/min inference also changes based on the bitwidth, and doing the truncation locally at the input of the comparison op loses that information. This also was a pattern that frequently showed up in our code, so adding it as a folder allows dead code to be pruned more frequently. Depends on D153731 Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D153732
-
Jeff Niu authored
Mark the relevant index dialect operations as Commutative. Specifically, this allows the folder to move constant operands to the RHS. Reviewed By: rriddle Differential Revision: https://reviews.llvm.org/D153731
-
Matt Arsenault authored
-
Philip Reames authored
This converts a crash (due an assertion inside getImm) into a verifier failure. Much easier to debug when you have malformed instructions.
-
Matt Arsenault authored
Pre-C99 didn't include bool, and C99 allows you to redefine true/false apparently.
-
Matt Arsenault authored
-
David Goldman authored
Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D152720
-
Shubham Sandeep Rastogi authored
When emitting a debug_frame section, it contains a named symbol. > echo "void foo(void) {}" | clang -arch arm64 -ffreestanding -g -c -o \ /tmp/test.o -x c - > nm /tmp/test.o -s __DWARF __debug_frame 0000000000000200 s ltmp1 There are no such symbols emitted in any of the other DWARF sections, this is because when the __debug_frame section is created, it doesn't get a `BeginSymName` and so it creates a named symbol, such as `ltmp1` and emits it when we switch to the section in MCDwarf.cpp. This patch fixes the above issue. Differential Revision: https://reviews.llvm.org/D153484 -
Garvit Gupta authored
Support for below instruction is added 1. CFLUSH.D.L1 2. CDISCARD.D.L1 3. CEASE Additionally, Zihintpause extension is added to sifive s76 for pause instruction. Spec - https://sifive.cdn.prismic.io/sifive/767804da-53b2-4893-97d5-b7c030ae0a94_s76mc_core_complex_manual_21G3.pdf Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D153370
-
LLVM GN Syncbot authored
-
Aiden Grossman authored
This patch introduces the SubprocessMemory class to llvm-exegesis. This class contains several utilities that are needed for managing memory to set up an execution environment for memory annotations. Reviewed By: courbet Differential Revision: https://reviews.llvm.org/D151022
-
Piotr Zegar authored
Change documentation, to avoid some duplication, and make it sound beter.
-
walter erquinigo authored
This issue has been seen in - https://lab.llvm.org/buildbot/#/builders/17/builds/39525 - https://lab.llvm.org/buildbot/#/builders/68/builds/55140 The reason is that a new language tag has been added for Mojo, but other recent languages need to be added to the language array so that a name lookup array doesn't have gaps. `ninja check-lldb-shell-process` now passes.
-
Alex Langford authored
This is a follow-up to b4827a3c. Differential Revision: https://reviews.llvm.org/D153675
-
Alex Langford authored
I removed ConstString from OptionValueProperties in 643ba926, but there are a few call sites that still create a ConstString as an argument. I did not catch these initially because ConstString has an implicit conversion method to StringRef. Differential Revision: https://reviews.llvm.org/D153673
-
Matt Arsenault authored
This was only using the SCEV expressions as a map key, which we can do just as well with the value pointers. This also allows it to handle vectors.
-
Matt Arsenault authored
-
Matt Arsenault authored
Try to test several untested paths. - Test the extension source type check - Test the programUndefinedIfPoison check - Test the add/sub with commuted operands - Test with vectors - Test multiple uses - Try to break operand map mismatches - Add some preparatory tests for zext+nuw support.
-
Matt Arsenault authored
-
Matt Arsenault authored
Testing codegen in test/Transforms is questionable to begin with, but it's more reasonable to see failures on the IR half before ISA checks.
-
Maurice Heumann authored
Volatile loads/stores of i64 are lowered to LDRD/STRD on ARMv5TE. However, these instructions require the addresses to be aligned. Unaligned loads/stores therefore should be ignored by this handling. Differential Revision: https://reviews.llvm.org/D152790
-
Eli Friedman authored
The current implementation tries to handle the high and low halves separately, but that's less efficient in most cases; use a wide SETCC instead. Differential Revision: https://reviews.llvm.org/D151358
-
Eli Friedman authored
MSVC normally has a bunch of restrictions on returning values directly which don't apply to passing values directly. (This roughly corresponds to the definition of a C++14 aggregate.) However, these restrictions don't apply to HVAs; make sure we check for that. Fixes https://github.com/llvm/llvm-project/issues/62223 Differential Revision: https://reviews.llvm.org/D153179
-
Krzysztof Drewniak authored
Whereas LLVM currently doesn't have any types for 8-bit floats, and whereas existing 8-bit float APIs (for instance, the AMDGCN intrinsics) take such floats as (packed) bytes, translate the MLIR 8-bit float types to i8 during LLVM lowering. In order to not special-case arith.constant for bitcasting constants to their integer form, amend the MLIR to LLVM translator to turn 8-bit float constants into i8 constants with the same value (by use of APFloat's bitcast method). This change can be reverted once LLVM has 8-bit float types. Reviewed By: gysit Differential Revision: https://reviews.llvm.org/D153160
-
Jonas Devlieghere authored
Add two new source subcommands: source cache dump and source cache clear. As the name implies the first one dumps the source cache while the later clears the cache. This patch was motivated by a handful of (internal) bug reports related to sources not being available. Right now those issues can be hard to diagnose. The new commands give users, as well as us as developers, more insight into and control over the source cache. Differential revision: https://reviews.llvm.org/D153685
-
Alex Langford authored
We are assuming that the pointer is always valid, might as well take a reference instead. Differential Revision: https://reviews.llvm.org/D153711
-