- Feb 07, 2022
-
-
Florian Hahn authored
In scalarizeInstruction(), isUniformAfterVectorization is used to detect cases where it is sufficient to always access the first lane. This should map directly checking whether the operand is a uniform replicate recipe. Differential Revision: https://reviews.llvm.org/D116654
-
Simon Pilgrim authored
Remove default case from switch and return None after the switch()
-
Simon Pilgrim authored
Remove default case from switch and move llvm_unreachable to after the switch()
-
Simon Pilgrim authored
-
David Green authored
This way they get lowered through the ARMISD::BUILD_VECTOR, which can produce more efficient D register moves. Also helps D115653 not get stuck in a loop.
-
- Feb 06, 2022
-
-
David Green authored
This is some extra testing for vabd, vhadd and vmulh. Some of the tests have also be reordered.
-
Simon Pilgrim authored
Helps avoid some unnecessary shift by splat amount extensions before shuffle combining gets limited by with one use checks
-
Fangrui Song authored
The diagnostic is concise. It is ok because the case is rare.
-
Stella Laurenzo authored
See discussion: https://discourse.llvm.org/t/check-mlir-times-examples-standalone-testing-time/6073/7 It turns out that it has been legal since CMake 3.11 to omit sources at library creation time if they are added later via target_sources, as is done here. This side-steps the issue of having a file that changes and invalidates the build of leaves. Differential Revision: https://reviews.llvm.org/D119069
-
Rong Xu authored
FSAFDO profile loader is currently disabled even --enable-fs-discriminator is enabled. They need to be turned on by options which makes it cumbersome for experiments. This patch changes the FSAFDO profile loader enabled by default. Since they are guarded by EnableFSDiscriminator, they will only be turned on if --enable-fs-discriminator is enabled. Note that --enable-fs-discriminator is still disabled by default. Differential Revision: https://reviews.llvm.org/D119033
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Craig Topper authored
This shows that we don't preserve sign bits across the abs expansion, but I think we could if we used negw+max.
-
Fangrui Song authored
SharedSymbol::SharedSymbol initializes verdefIndex and Symbol::replace copies verdefIndex. By move verdefIndex assignment outside of ctor, Symbol::replace can be changed to not copy verdefIndex. This can be used to decrease work for for ObjKind/BitcodeKind.
-
Ruiling Song authored
The WWM register has unmodeled register liveness, For v_set_inactive_*, clobberring source register is dangerous because it will overwrite the inactive lanes. When the source vgpr is dead at v_set_inactive_lane, the inactive lanes may be not really dead. This may make common optimizations doing wrong. For example in a simple if-then cfg in Machine IR: bb.if: %src = bb.then: %src1 = COPY %src %dst = V_SET_INACTIVE %src1(tied-def 0), %inactive bb.end ... = PHI [0, %bb.then] [%src, %bb.if] The register coalescer will think it is safe to optimize "%src1 = COPY %src" in bb.then. And at the same time, there is no interference for the PHI in bb.end. The source and destination values of the PHI will be assigned the same register. The single PHI register will be overwritten by the v_set_inactive, then we would get wrong value in bb.end. With this change, we will copy the content of the source register before setting inactive lanes after register allocation. Yes, this will sacrifice the WWM code generation a little, but I don't have any better idea to do things correctly. Differential Revision: https://reviews.llvm.org/D117482
-
Ruiling Song authored
Pre-commit the test to make the diff easy to read later. Differential Revision: https://reviews.llvm.org/D117527
-
Krystian Kuzniarek authored
Introduced by 23a5090c, some style option markers indicated 'clang-format 14', though their respective options were available in earlier releases. Note: Even though the value type of 'SpacesInAngles' option changed, this option has been already present since version 3.4. Differential Revision: https://reviews.llvm.org/D118991
-
Fangrui Song authored
Currently `this->getName() == newSym.getName()`. By keeping the old nameData/nameSize, newSym's nameData/nameSize will be ignored. The call sites can avoid calling getName(). printTraceSymbol needs to take the symbol name since `other`'s name is empty.
-
Adrian Prantl authored
-
Adrian Prantl authored
-
Adrian Prantl authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Kazu Hirata authored
-
Benjamin Kramer authored
-
Fangrui Song authored
-
Fangrui Song authored
My x86-64 lld executable is 16KiB smaller.
-
Adrian Prantl authored
This reverts commit 867fdec1.
-
Adrian Prantl authored
This reverts commit cf93a085.
-
Fangrui Song authored
to decrease sizeof(SymbolUnion) from 72 to 64 on ELF64 platforms.
-
Benjamin Kramer authored
-
Yaxun (Sam) Liu authored
This issue is an oversight in D108621. Literals in HIP are emitted as global constant variables with default address space which maps to Generic address space for HIPSPV. In SPIR-V such variables translate to OpVariable instructions with Generic storage class which are not legal. Fix by mapping literals to CrossWorkGroup address space. The literals are not mapped to UniformConstant because the “flat” pointers in HIP may reference them and “flat” pointers are modeled as Generic pointers in SPIR-V. In SPIR-V/OpenCL UniformConstant pointers may not be casted to Generic. Patch by: Henry Linjamäki Reviewed by: Yaxun Liu Differential Revision: https://reviews.llvm.org/D118876
-
Fangrui Song authored
* partition and isPreemptible are frequently used. Move it to the front * move used beside isUsedInRegularObj. They are similar and accessed together in .symtab finalizing * move auxIdx/dynsymIndex/verdefIndex to the end. This decreases code size.
-