- Jul 12, 2023
-
-
Nikita Popov authored
-
Ingo Müller authored
The `static_(num_threads|tile_sizes)` attributes of this op are `DefaultValuedOptionalAttr`s, so they can be constructed *without* such an attribute. In other words, the following is a valid op (note the absense of the `static_num_threads` attribute): "builtin.module"() ({ "transform.sequence"() <{failure_propagation_mode = 1 : i32, operand_segment_sizes = array<i32: 0, 0>}> ({ ^bb0(%arg0: !pdl.operation, %arg1: !transform.op<"linalg.matmul">, %arg2: !transform.op<"linalg.elemwise_binary">): %0 = "transform.structured.match"(%arg0) <{ops = ["test.dummy"]}> : (!pdl.operation) -> !pdl.operation %1:2 = "transform.structured.tile_to_forall_op"(%arg1, %0) <{operand_segment_sizes = array<i32: 1, 0, 0, 0, 1>}> : (!transform.op<"linalg.matmul">, !pdl.operation) -> (!transform.op<"scf.forall">, !transform.op<"linalg.matmul">) "transform.yield"() : () -> () }) : () -> () }) : () -> () However, the custom printing directive converted those to an `ArrayRef`, which crashes if done on an empty `ArrayAttr`. This patch changes the signature such that no automatic conversion takes place and extends the test to test for existinnce of the attribute. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D155062 -
Jay Foad authored
Record the SP adjustment on entry to each basic block. This is almost always zero except on targets like ARM which can split a basic block in the middle of a call sequence. This simplifies PEI::replaceFrameIndices which previously had to visit basic blocks in a specific order and had special handling for unreachable blocks. More importantly it paves the way for an equally simple implementation of a backwards version of replaceFrameIndices, which is required to fully convert PrologEpilogInserter to backwards register scavenging, which is preferred because it does not rely on accurate kill flags. Differential Revision: https://reviews.llvm.org/D154281
-
Alex Gatea authored
Avoid duplicate calls to setTargetAttributes on global variable definitions. Differential: https://reviews.llvm.org/D153903
-
pvanhout authored
`KnownBits` is also a type name. Having a field with this name prevents derived classes from using the `KnownBits` type unless they use `struct KnownBits`. Reviewed By: foad Differential Revision: https://reviews.llvm.org/D155082
-
Nikita Popov authored
-
Nikita Popov authored
-
Marco Elver authored
https://reviews.llvm.org/D130883 introduced MIMetadata to simplify metadata propagation (DebugLoc and PCSections). However, we're currently still permitting implicit conversion of DebugLoc to MIMetadata, to allow for a gradual transition and let the old code work as-is. This manifests in lost !pcsections metadata for X86-specific lowerings. For example, 128-bit atomics. Fix the situation for X86ISelLowering by converting all BuildMI() calls to use an explicitly constructed MIMetadata. Reviewed By: dvyukov Differential Revision: https://reviews.llvm.org/D154986
-
Matt Devereau authored
Add the scalar addressing mode for multi vector LD1 instructions. Differential Revision: https://reviews.llvm.org/D154829
-
Guray Ozen authored
getPtx used to return `const char*`. It is not flexible when one needs to build string in the function. This work changes return type. Reviewed By: springerm Differential Revision: https://reviews.llvm.org/D155056
-
Maciej Gabka authored
Arm Performance Libraries contain math library which provides vectorized versions of common math functions. This patch allows to use it with clang and llvm via -fveclib=ArmPL or -vector-library=ArmPL, so loops with such calls can be vectorized. The executable needs to be linked with the amath library. Arm Performance Libraries are available at: https://developer.arm.com/Tools%20and%20Software/Arm%20Performance%20Libraries Reviewed by: paulwalker-arm Differential Revision: https://reviews.llvm.org/D154508
-
Guray Ozen authored
`ptxas` complains with . in the function name, so we delete. Also, it expects return i64. Differential Revision: https://reviews.llvm.org/D155054
-
Nikita Popov authored
Opaque pointers mode is enabled by default, no need to explicitly enable it.
-
Nikolas Klauser authored
This moves the formatting job to a shell script, which should also fix the clang pre-commit CI. Differential Revision: https://reviews.llvm.org/D153920
-
Krasimir Georgiev authored
This reverts commit 593797ab. I didn't realize that there was already a fix for the broken tests fd2254b7.
-
David Green authored
As in D140287, we can now generate umull from mul(zext(x), y) in cases where we know that the top bits of y are zero. This teaches that to the cost model, adjusting how isWideningInstruction detects mul operations that can extend both operands. This helps for constants and other cases where the operands of the mul are known to be extended, but not directly extends. Differential Revision: https://reviews.llvm.org/D154936
-
Nikita Popov authored
This regresses with opaque pointers. I'll submit a patch to recover the regression.
-
David Stenberg authored
This extends DWARFDebugLine to properly parse line number programs with maximum_operations_per_instruction > 1 for VLIW targets. No functions that use that parsed output to retrieve line information have been extended to support multiple op-indexes. This means that when retrieving information for an address with multiple op-indexes, e.g. when using llvm-addr2line, the penultimate row for that address will be used, which in most cases is the row for the second largest op-index. This will be addressed in further changes, but this patch at least allows us to correctly parse such line number programs, with a warning saying that the line number information may be incorrect (incomplete). Reviewed By: StephenTozer Differential Revision: https://reviews.llvm.org/D152536
-
Krasimir Georgiev authored
This reverts commit 14c3ab94. Causes build bot failures.
-
pvanhout authored
It's the only combine (AFAIK) that didn't use an apply function. There is no reason for it to mutate instructions in the matcher, so split it up. Reviewed By: aemerson, arsenm Differential Revision: https://reviews.llvm.org/D154947
-
Akash Banerjee authored
This patch migrates the UseDevicePtr and UseDeviceAddr clause related code for handling privatisation from Clang codegen to the OMPIRBuilder Depends on D150860 Reviewed By: jdoerfert Differential Revision: https://reviews.llvm.org/D152554
-
Ivan Kosarev authored
Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D154528
-
John Brawn authored
Currently when compiling for an execute-only target without movt then EmitStructByval will generate a constant pool load which isn't compatible with execute-only. Handle this by emitting tMOVi32imm, and also simplify the existing movt handling by emitting t2MOVi32imm or MOVi32imm. Differential Revision: https://reviews.llvm.org/D154944
-
John Brawn authored
The expansion of the various MOVi32imm pseudo-instructions works by splitting the operand into components (either halfwords or bytes) and emitting instructions to combine those components into the final result. When the operand is an immediate with some components being zero this can result in pointless instructions that just add zero. Avoid this by restructuring things so that a separate function handles splitting the operand into components, then don't emit the component if it is a zero immediate. This is straightforward for movw/movt, where we just don't emit the movt if it's zero, but the thumb1 expansion using mov/add/lsl is more complex, as even when we don't emit a given byte we still need to get the shift correct. Differential Revision: https://reviews.llvm.org/D154943
-
Peixin Qiao authored
This patch precommits a test for: https://reviews.llvm.org/D148420 Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D150069
-
Björn Schäpers authored
Remove the double check, move the comment. This changes behavior, but I think for the better. Despite the comment my personal opinion would be to not even gracefully handle the one semicolon, it shouldn't be there. Differential Revision: https://reviews.llvm.org/D138373
-
Björn Schäpers authored
It worked only correct for a tab as the first char. Fixes https://github.com/llvm/llvm-project/issues/56769 Differential Revision: https://reviews.llvm.org/D138402
-
David Stenberg authored
This is a preparatory patch for extending DWARFDebugLine to properly parse line number programs with maximum_operations_per_instruction > 1 for VLIW targets. Add some scaffolding for handling op-index in line number programs, and add printouts for that in the table. As this affects a lot of tests, this is done in a separate commit to get a cleaner review for the actual op-index implementation. Verbose printouts are not present in many tests, and adding op-index to those will require a bit more code changes, so that is done in the actual implementation patch. Reviewed By: StephenTozer Differential Revision: https://reviews.llvm.org/D152535
-
Nikita Popov authored
These no longer show codegen regressions.
-
Nikita Popov authored
Uses an x86 triple.
-
Nikita Popov authored
Instead of checking the pointer type, check the element type of the GEP. Previously we ended up reusing GEP increments that were not in expanded form, thus not respecting LSRs choice of representation. The change in 2011-10-06-ReusePhi.ll recovers a regression that appeared when converting that test to opaque pointers. Changes in various Thumb tests now compute the step outside the loop instead of using add.w inside the loop, which is LSR's preferred representation for this target.
-
Adrian Kuegel authored
The get() call is redundant.
-
Aleksandr Popov authored
Here is activated check elimination which was parsed previously in https://reviews.llvm.org/D154069 * Added runtime check that computed range's boundary doesn't overflow in terms of range type. * From the statement INT_MIN <= END <= INT_MAX is inferred check: isNonNegative(INT_MAX - END) * isNonNegative(END - INT_MIN). * If overflow happens, check will return 0 and the safe interval will be empty. Reviewed By: skatkov Differential Revision: https://reviews.llvm.org/D154188
-
Juan Manuel MARTINEZ CAAMAÑO authored
It seems that the sanitizer-x86_64-linux-android wasn't able to deduce the template argument: AMDGPULowerModuleLDSPass.cpp:1192:53: error: no viable constructor or deduction guide for deduction of template arguments of 'vector' auto TableLookupVariablesOrdered = sortByName(std::vector( This patch makes the template argument explicit. -
Alexander Shaposhnikov authored
This diff switches OperationVerifier to using a worklist rather than recursion. The exception is our handling of isolated regions, it can still contain recursive calls, however, the parallel processing of these regions is preserved. This fixes the crash of the "verifier" on the input from https://github.com/llvm/circt/issues/5316 (but the IR printer would still crash with stack overflow). Test plan: ninja check-mlir check-all Differential revision: https://reviews.llvm.org/D154925
-
Martin Storsjö authored
This was broken by 56ac9d46.
-
David Green authored
The isDef asserts that the operand isReg, so the checks need to happen in the other order.
-
Piotr Sobczak authored
The existing check run label "DEFAULT" may clash with the label from switch "DEFAULT", so renaming it for clarity. Differential Revision: https://reviews.llvm.org/D154825
-
Adrian Kuegel authored
-
Adrian Kuegel authored
-