- Feb 19, 2021
-
-
Petr Hosek authored
We currently always store absolute filenames in coverage mapping. This is problematic for several reasons. It poses a problem for distributed compilation as source location might vary across machines. We are also duplicating the path prefix potentially wasting space. This change modifies how we store filenames in coverage mapping. Rather than absolute paths, it stores the compilation directory and file paths as given to the compiler, either relative or absolute. Later when reading the coverage mapping information, we recombine relative paths with the working directory. This approach is similar to handling ofDW_AT_comp_dir in DWARF. Finally, we also provide a new option, -fprofile-compilation-dir akin to -fdebug-compilation-dir which can be used to manually override the compilation directory which is useful in distributed compilation cases. Differential Revision: https://reviews.llvm.org/D95753
-
Nico Weber authored
Somewhat speculative, see https://reviews.llvm.org/D96816#2572431
-
natashaknk authored
This patch adds lowering to Linalg for the following TOSA ops: negate, rsqrt, mul, select, clamp and reluN and includes support for signless integer and floating point types Reviewed By: rsuderman Differential Revision: https://reviews.llvm.org/D96924
-
Sam Powell authored
This patch adds functionality to compare for the equality between `InterfaceFile`s based on attributes specific to linking. Reviewed By: cishida, steven_wu Differential Revision: https://reviews.llvm.org/D96629
-
Wouter van Oortmerssen authored
Fixes assert in: https://bugs.llvm.org/show_bug.cgi?id=49036 getWasmSection creates sections if they don't exist, but doesn't add them to the Symbols table. This may cause problems in subsequent calls to getOrCreateSymbol which checks this table, the calls createSymbol assuming it doesn't exist, which then checks UsedNames and finds out it does exist, causing an assert on trying to rename a non-temp symbol. I tried also fixing the somewhat unintuitive forced suffixing (adding `0`), but it turns out that WasmObjectWriter currently assumes these section symbols are unique, so that may have to be a separate fix: https://bugs.llvm.org/show_bug.cgi?id=49252 Also worth noting is that getWasmSection calling createSymbol may not be correct to start with, given that createSymbol seems to assume it is creating non-section symbols. But again, for a future fix. Related: where some of this was introduced: https://github.com/llvm/llvm-project/commit/8d396acac3bc21f688ac707bb42e4698dbdcab7e Differential Revision: https://reviews.llvm.org/D96473
-
Craig Topper authored
The expansions of the saturating intrinsics can make use of the min(u)/max(u) instructions in Zbb.
-
Zequan Wu authored
-
Nico Weber authored
-
Jessica Clarke authored
This avoids tedious repetition and matches what we do for the ValueTypeByHwMode uses. Reviewed By: craig.topper, luismarques Differential Revision: https://reviews.llvm.org/D96649
-
Pengxuan Zheng authored
This patch adds the following intrinsics: vadd_p8 vadd_p16 vadd_p64 vaddq_p8 vaddq_p16 vaddq_p64 vaddq_p128 Reviewed By: t.p.northover, DavidSpickett Differential Revision: https://reviews.llvm.org/D96825 -
Nico Weber authored
-
Guozhi Wei authored
Pre-commit test case for https://reviews.llvm.org/D95086, so that patch can show the actual diff.
-
Ta-Wei Tu authored
This fixes https://bugs.llvm.org/show_bug.cgi?id=49185 When `NDEBUG` is not set, `LPMUpdater` checks if the added loops have the same parent loop as the current one in `addSiblingLoops`. If multiple loop passes are executed through `LoopPassManager`, `U.ParentL` will be the same across all passes. However, the parent loop might change after running a loop pass, resulting in assertion failures in subsequent passes. This patch resets `U.ParentL` after running individual loop passes in `LoopPassManager`. Reviewed By: asbirlea, ychen Differential Revision: https://reviews.llvm.org/D96727
-
Joerg Sonnenberger authored
Differential Revision: https://reviews.llvm.org/D96955
-
Jonas Devlieghere authored
Remove the unused code I noticed when working on d6e80578 and do some other minor cleanups in the vicinity.
-
Jonas Paulsson authored
The recent commit 00a62547 "Stop traping on sNaN in builtin_isnan" changed the lowering in constrained FP mode of builtin_isnan from an FP comparison to integer operations to avoid trapping. SystemZ has a special instruction "Test Data Class" which is the preferred way to do this check. This patch adds a new target hook "testFPKind()" that lets SystemZ emit the s390_tdc intrinsic instead. testFPKind() takes the BuiltinID as an argument and is expected to soon handle more opcodes than just 'builtin_isnan'. Review: Thomas Preud'homme, Ulrich Weigand Differential Revision: https://reviews.llvm.org/D96568
-
Sean Fertile authored
Enable passing more vector arguments then available vector argument passing registers. Differential Revision: https://reviews.llvm.org/D96415
-
Heejin Ahn authored
Usually `EH_LABEL`s are placed in - Before an `invoke` (which becomes calls in the backend) - After an `invoke` - At the start of an EH pad I don't know exactly why, but I noticed there are cases of multiple, not a single, `EH_LABEL` instructions in the beginning of an EH pad. In that case `global.set` instruction placed to restore `__stack_pointer` ended up between two `EH_LABEL` instructions before `CATCH`. It should follow after the `EH_LABEL`s and `CATCH`. This CL fixes that case. Reviewed By: dschuff Differential Revision: https://reviews.llvm.org/D96970
-
Jianzhou Zhao authored
This is a part of https://reviews.llvm.org/D95835. Reviewed-by: morehouse Differential Revision: https://reviews.llvm.org/D96941
-
Jianzhou Zhao authored
This is a part of https://reviews.llvm.org/D95835. Reviewed-by: morehouse Differential Revision: https://reviews.llvm.org/D96940
-
Jianzhou Zhao authored
This is a part of https://reviews.llvm.org/D95835. Added 1) TLS storage 2) a weak global used to set by instrumented code 3) move origins These APIs are similar to MSan's APIs https://github.com/llvm/llvm-project/blob/main/compiler-rt/lib/msan/msan_poisoning.cpp We first improved MSan's by https://reviews.llvm.org/D94572 and https://reviews.llvm.org/D94552. So the correctness has been verified by MSan. After the DFSan instrument code is ready, we wil be adding more test cases 4) read To reduce origin tracking cost, some of the read APIs return only the origin from the first taint data. Note that we did not add origin set APIs here because they are related to code instrumentation, will be added later with IR transformation code. Reviewed-by: morehouse Differential Revision: https://reviews.llvm.org/D96564
-
Pavel Labath authored
The test passes after D96779.
-
Akira Hatanaka authored
would otherwise include template specialization types This helps reduce the size of the encoded C++ type strings in the binary. This is enabled by default only on Darwin, but can be enabled/disabled via command line options. rdar://63288571 Differential Revision: https://reviews.llvm.org/D96816
-
Philip Reames authored
-
Craig Topper authored
This includes i32 SHFLI tests for RV64 which we currently don't optimize. And tests for associativity of OR.
-
Andrzej Warzynski authored
These dependencies were introduced via the `ParseTreeDumper` API in: * https://reviews.llvm.org/D96716 They manifested themselves in buildbot builders that set `BUILD_SHARED_LIBS` to `On`.
-
Craig Topper authored
This uses to division by constant optimization to use MULHU/MULHS. Reviewed By: frasercrmck, arcbbb Differential Revision: https://reviews.llvm.org/D96934
-
Philip Reames authored
I've now hit several cases where a mistake in the regalloc main loop caused corrupt live intervals that didn't get caught until either the next verify or during post-optimization. The later case is rather confusing and tends to lead one down false trails, so let's catch corruption before that.
-
Joe Ellis authored
The inline keyword is not defined in the C89 standard, so source files that include arm_sve.h will fail compilation if -std=c89 is specified. For consistency with arm_neon.h, we should use __inline__ instead. Reviewed By: paulwalker-arm Differential Revision: https://reviews.llvm.org/D96852
-
Craig Topper authored
Due to vXi64 on RV32, I've directly emitted this using _VL ISD opcodes. If it wasn't for that we could just use fixed vector BUILD_VECTOR and VSELECT and let those each be legalized. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D96910
-
Craig Topper authored
These should be NOPs so we can just replace with the input. This matches what SVE does with isel patterns for all permutations. Custom isel saves us from having to list all permurations for all LMULs. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D96921
-
Philip Reames authored
-
Nico Weber authored
See `grep 'option.LIBCXX_INCLUDE_TESTS' libcxx/CMakeLists.txt`.
-
Nico Weber authored
-
Konstantin Zhuravlyov authored
Differential Revision: https://reviews.llvm.org/D96967
-
Bradley Smith authored
Adjust generateFMAsInMachineCombiner to return false if SVE is present in order to combine fmul+fadd into fma. Also add new pseudo instructions so as to select the most appropriate of FMLA/FMAD depending on register allocation. Depends on D96599 Differential Revision: https://reviews.llvm.org/D96424
-
Craig Topper authored
[TableGen][SelectionDAG] Improve efficiency of encoding negative immediates for isel's CheckInteger opcode. CheckInteger uses an int64_t encoded using a variable width encoding that is optimized for encoding a number with a lot of leading zeros. Negative numbers have no leading zeros so use the largest encoding requiring 9 bytes. I believe its most like we want to check for positive and negative numbers near 0. -1 is quite common due to its use in the 'not' idiom. To optimize for this, we can borrow an idea from the bitcode format and move the sign bit to bit 0 with the magnitude stored in the upper bits. This will drastically increase the number of leading zeros for small magnitudes. Then we can run this value through VBR encoding. This gives a small reduction in the table size on all in tree targets except VE where size increased by about 300 bytes due to intrinsic ids now requiring 3 bytes instead of 2. Since the intrinsic enum space is shared by all targets this an unfortunate consquence of where VE is currently located in the range. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D96317
-
Bradley Smith authored
isFMAFasterThanFMulAndFAdd should return true for FP16 types when HasFullFP16 is present, since we have the instructions to handle it for both SVE and NEON. (SVE patterns and tests will follow). Differential Revision: https://reviews.llvm.org/D96599
-
Philip Reames authored
-
Philip Reames authored
This patch simply implements the documented UB of the current nofree attributes as specified. It doesn't try to be fancy about inference (yet), it just implements the cases already specified and inferred. Note: When this lands, it may expose miscompiles. If so, please revert and provide a test case. It's likely the bug is in the existing inference code and without a relatively complete test case, it will be hard to debug. Differential Revision: https://reviews.llvm.org/D96349
-