[HLSL][NFC] Add assert ensuring divide by zero can't happen (#173072)
Add assert ensuring divide by zero can't happen in the case we are
initializing an incomplete array type object.
[bazel] Add another libpfm url (#173083)
This is pointing to the same thing but without this subdomain which is
currently down. I'm not sure that is temporary or not but I think this
is the more canonical URL
[GlobalISel] Fix FCMP constant folding in presence trunc/zext/sext chain (#171878)
The instruction combine ``canonicalize_fcmp`` tries to fold constant
values in fcmp, however, it fails when the source defs have different FP
types. This occurs because it uses
``getFConstantVRegValWithLookThrough`` to get the constants value def,
even through trunc, zext, or sext.
Related to #171856
[clang] Disable avx512vlcd test on Arm 32-bit
When clang is compiled with a more recent clang
(that includes 5d7f324614d7a5c0de89cfe8295a9b2b7ef5d073),
the code produced enforces 64-bit alignment on a type
that is used during this test.
For reasons not known yet, that type is not 64-bit aligned
though you would normally expect it to be.
See https://github.com/llvm/llvm-project/issues/172994.
I would xfail this but I'm not 100% sure that it always fails.
Memory layout may make it pass sometimes.
[AMDGPU] In promote-alloca, if index is dynamic, sandwich load with bitcasts to reduce excessive codegen (#171253)
Investigation revealed that scalarized copy results in a long chain of
extract/insert elements which can explode in generated temps in the
AMDGPU backend as there is no efficient representation for extracting
subvector with dynamic index. Using identity bitcasts can reduce the
number of extract/insert elements down to 1 and produce much smaller,
efficient generated code.
Credit: ruiling
[SROA] Refactor rewritePartition alloca type selection process (#167771)
This PR does two things:
1. Refactor the rewritePartition type selection process to move the
logic inside of a lambda. Previously the selection process would make
use of a mutable `SliceTy`. Each phase of the type selection would do
something like `if (!SliceTy) { // try to set sliceTy` }. But you also
have `if (!SliceTy && <condition>)` and `if (!SliceTy || <condition>)`.
I think this style makes the priority mechanism confusing. The new way I
wrote the selection process is equivalent (except for the second
contribution of this PR), and works by checking a condition, followed by
returning the selected type right away. I think it makes the priority
clearer.
2. What motivated the rewrite is that there are some cases with small
aggregate allocas that have mixed type loads and stores that SROA fails
to promote.
For example, given:
[33 lines not shown]
[X86] combineConcatVectorOps - fix typo where we were comparing the same subvector types (#173075)
Make it clearer that the subvector sources of a concat(extend_vector_inreg(x),extend_vector_inreg(y)) pair must have the same type.
Fixes #173030
Revert "[llvm][clang] Enable IO sandbox for assert builds" (#173074)
Reverts llvm/llvm-project#171935.
The sandbox infrastructure was (incorrectly) only implemented for `clang
-cc1` jobs created by the driver in llvm/llvm-project#165350. Direct
`clang -cc1` invocations had the sandbox disabled. This reduced the
coverage of our test suite and lead to sandbox violations for people
using asserts-enabled Clang.
This PR temporarily disables the sandbox for asserts builds, so that we
have time to investigate and fix sandbox violations for direct `clang
-cc1` commands and re-enable for asserts builds at a later time.
[RISCV] Handle codegen for Big Endian (#172668)
- Handle BE in RISCVSubtarget
- Handle riscv big-endian f64
- Handle loads/stores
- Add tests for LE vs BE
[lldb][test] Avoid out-of-bounds reads in TestConflictingSymbol.py (#172792)
Generic data variables are considered to be of the type `void *&`, see
`ClangExpressionDeclMap::AddOneGenericVariable()`. On 64-bit platforms
(e.g. AArch64), this type is 8 bytes long, while the
`conflicting_symbol` variables are defined as `int`, which is typically
4 bytes. `test_conflicting_symbols` could fail if the next 4 bytes in the
memory after any of the variables are not zero. This can be reproduced
by adding a variable with a non-zero value after `conflicting_symbol`:
```
--- a/lldb/test/API/lang/c/conflicting-symbol/One/OneConstant.c
+++ b/lldb/test/API/lang/c/conflicting-symbol/One/OneConstant.c
@@ -1 +1,2 @@
int __attribute__ ((visibility("hidden"))) conflicting_symbol = 11111;
+int guard = 1;
```
In this case, the test fails with:
```
[10 lines not shown]
[DirectX] Resources and simple GEP traversal in DXILMemIntrinsics
Walk through GEPs and recognize resource target extension types when
trying to infer the underlying types of memory intrinsics.
[mlir] Add dialect hooks for registering custom type and attribute alias printers
This patch introduces a mechanism for dialects to register custom alias printers
for types and attributes via the `OpAsmDialectInterface`. This allows dialects
to provide alternative printed representations for types and attributes based
on their TypeID, including types/attributes from other dialects.
The new `registerAttrAliasPrinter` and `registerTypeAliasPrinter` virtual
methods accept callbacks that register printers for specific TypeIDs. When
printing, these custom printers are invoked in registration order, and the
first one to produce output is used.
The precedence for alias resolution is:
1. Explicit type/attribute aliases returned by `getAlias`
2. Dialect-specific alias printers registered via the new hooks
3. Default type/attribute printers
Signed-off-by: Fabian Mora <fabian.mora-cordero at amd.com>