User Details
- User Since
- Feb 24 2015, 1:18 AM (421 w, 5 d)
Fri, Mar 24
It would be ok for me if you reverted it while investigating regressions. I would hope then that you would try the "partial revert" meaning removing just the change in NotProfitableForVectorization().
Thanks for trying the idea of a single map!
Patch updated per review.
Thu, Mar 23
Wed, Mar 22
Patch updated per review - see inline comments.
Tue, Mar 21
Updated patch per review.
New tests:
Mon, Mar 20
I have experimented with this here: https://reviews.llvm.org/D146425
Fri, Mar 17
Wed, Mar 15
Tue, Mar 14
Ping - does it look ok to emit a warning like this from CodeGen?
Mon, Mar 13
ok, I think I got it now: we can drop the NW flags because the backend will then later properly handle OF as well during comparison elimination (and the program prints the right result).
Sat, Mar 11
Fri, Mar 10
Thu, Mar 9
ping!
Mon, Feb 27
Usually for this sort of warning, we provide diagnostic notes: how should the user fix their code if it's wrong? How should the user suppress the warning if it's wrong?
I added a hint in the warning message to the user that __atomic is the way to go. The warning is enabled with -Wsync-alignment, which is also part of the warning message.
Feb 23 2023
Better to calculate scalarization overhead for the loadinst elements and subtract from the gather cost.
Or better to include this check to the getGatherCost function
ping - everybody happy with this now?
Feb 21 2023
Patch rebased with updated X86 tests. minimum-sizes.ll did no longer update automatically with "CHECK" prefix, so I added different prefixes to make the update succeed.
Feb 20 2023
Feb 17 2023
Patch updated to only give a warning.
Feb 16 2023
Can you try to move this check to buildTree_rec function, NotProfitableForVectorization lambda and make it return true if S.getOpcode() == Instruction::GetElementPtr && !TTI->prefersVectorizedAddressing()?
Feb 15 2023
Thanks for review!
Feb 11 2023
Feb 1 2023
Pushed on release/16.x branch as ca7d6a6.
Added i128 alignment change.
Thanks for explanation!
Jan 31 2023
Jan 27 2023
In this case I think it would be preferable to omit the attribute - it is completely safe to do so, even if it doesn't match GCC's behavior; in fact, we'd rather change GCC to match as well.
Yes, it's probably best to match GCC behavior here.
Jan 26 2023
The old behavior is not explicitly specified by any ABI doc, so we can really only go after what GCC actually used to do. And in fact GCC used to (and still does!) simply place such arguments on the stack and passes a hidden pointer to the stack slot - without any dynamic stack realignment, so it in fact only guarantees 8 byte alignment. So I think it is *safe* to assume that using 8 bytes always is OK - and in that sense it is safe to omit the GNU attribute.
I see this with latest clang:
Review addressed - hopefully this time with a better result.
Jan 19 2023
Jan 18 2023
Ping!
Jan 17 2023
Patch updated to also handle
Jan 14 2023
LegalizeTypes expands the i128 result of e.g. an AtomicLoadAdd node, which is done by DAGTypeLegalizer::ExpandAtomic(), which results in a library call. There are no tests for the atomic operations with i128, but it should work due to the TypeLegalizer. i128 is not a legal type so I guess therefore they are all expanded this way.
Jan 12 2023
Now a different question is the alignment of a simple v8i32 passed via implicit reference. Here, we should be passing a pointer to v8i32, so arguably GCC does indeed have a bug if that pointer doesn't have the natural alignment for its type. This probably doesn't matter however, as that implicit pointer is hidden and cannot be inspected by user code, so it would be impossible to actually detect any misalignment ...
Jan 11 2023
I think this isn't quite correct - if Bytes >= 16, the alignment of the vector type is different, which may always be ABI-relevant, even when passed as argument. (E.g. when passing a (pointer to a) struct containing a vector member, the layout of the struct becomes ABI relevant, and that layout depends on member alignment.)
Jan 10 2023
Jan 9 2023
ping - any opinion on how to best determine the right extension actions for each target? Currently TLI holds variables (ShouldExt.../ShouldSignExt...), but TLI is not available in OMPIRBuilder. As discussed earlier, one option would of course be to provide TLI in OMPIRBuilder, but the alternative that I have found is to have a static function instead that just takes the Triple for each query. I think that would simplify things a bit (if always used) and I imagine it shouldn't be any compile time concern. What do you think?
Dec 30 2022
We haven't enabled subreg liveness. What we do have though is a downstream hack in VirtRegMap.cpp that throws away implicit uses of superregisters since we haven't understood what they are good for and they just limit scheduling later.
Ah - yeah have some vague notion of that :-)
Dec 28 2022
- Incorporated the recent change of sign extending i32 returns for RISCV.
Dec 20 2022
Thanks for review. Extension of __tgt_target_data_begin_mapper_issue arg changed to SExt. I will wait for you on the other points...
Dec 19 2022
Spent some time now on adding all the extension attributes in these passes per previous discussions.
Dec 15 2022
Sorry - I disabled this already for NVPTX and WebAssembly for the same reason but must have missed that SPIRV does not do regalloc when no SPIRV tests at all changed.
Dec 14 2022
Hi @uabelho , I'm glad you may find some use for this pass as well :)
Dec 11 2022
Getting back to this now finally, sorry for the delay.
Dec 6 2022
Thanks for review - patch updated. Tests vec-abi-gnuattr-14.c and vec-abi-gnuattr-20.cpp strengthened accordingly.
Dec 5 2022
Latest patch as committed (did not update correctly automatically).
Dec 4 2022
Reverted again with 122efef.
Dec 3 2022
Recommitted as 17db0de, with RISCV disabling it for now.
Dec 1 2022
OK - I will recommit this then as it does seem like a problem in the RISCV backend. I'll wait a day or so to let other targets check that they don't have this potential problem...
LGTM - I think now we are on the safe side regarding the chains.
Patch reverted because of build failure, relating to capturing structured bindings, which builds fine with gcc but not yet with clang.