User Details
- User Since
- Sep 8 2014, 1:26 PM (472 w, 20 h)
Aug 23 2023
Superseded by D151711 .
Jul 18 2023
Thanks for dropping the lambda, it's now cleaner than my original patch as well. I know @sfertile asked me for a simpler test case, but I don't think it's really feasible.
Jun 19 2023
Looks good to me, thanks!
Jun 14 2023
Adding a couple explicit reviewers.
Jun 8 2023
I love the goal of this, but it looks incomplete. I only noted on one, but it's probably the same for the other tests, that the change will end up clobbering the top half of registers without saving and restoring them.
May 31 2023
May 30 2023
This looks just like D78669, which I've admittedly been very lazy on.
Aug 10 2022
Aug 9 2022
@nemanjai Any further comment on this, or is it good to go?
Jul 6 2022
Add test case into fma-assoc test. This appears to be the simplest test to validate the change.
Mar 29 2022
Jul 29 2021
The spe.ll respin looks fine to me.
Jul 16 2021
Looks fine to me. @nemanjai this one is more Musl, less SPE :)
May 27 2021
May 26 2021
We use compiler-rt in FreeBSD for all platforms, including powerpcspe.
Apr 26 2021
To be honest, I don't know the correct intrinsic. SPE is a strange beast, and effectively requires support from the operating system in order to behave comparable to a traditional FPU. What you have looks good to me.
Dec 12 2020
Turns out GCC generates 1200-range register values. This still needs work to avoid the error, but it means giving libunwind special knowledge of the SPE register set.
Jul 31 2020
Jul 21 2020
As mentioned before, I can only seem to reproduce this running natively on powerpcspe; running the test on powerpc64, even without this patch, succeeds. This is extremely bizarre, but this fix gets the native build to produce the exact same text as running the test on powerpc64.
Simplify the test a little.
Jul 10 2020
Funny thing, I'm able to reproduce it *only* while running natively on a powerpcspe based device, not on any other device I've tested. I'll try to reduce the testcase even further, since it really is unwieldy.
Ping again? Since it's a trivial change, and isolated at that, I'm not opposed to post-commit review instead.
Looks fine to me.
Jun 26 2020
Jun 25 2020
Jun 24 2020
Jun 6 2020
May 29 2020
May 26 2020
Ping?
Ping?
May 12 2020
Apr 30 2020
Address feedback from @shchenz. Much better!
Apr 22 2020
Apr 21 2020
Apr 8 2020
Apr 7 2020
@ZarkoCA I think someone else should also review this, so added @nemanjai as a potential reviewer. He might have more insight to the code in question. I'd like to see this go in soon, though, so that it gets into 11, and we can use it in FreeBSD.
Apr 6 2020
Apr 3 2020
Code looks fine, and others have tested it. Good to see a reversion of the ABI to expected for GCC compatibility on the BSDs.
Mar 26 2020
Mar 25 2020
Can you fix the title of this? "Fix PR45297" is not very descriptive unless someone also reviews the PR.
Mar 24 2020
Update tests. Updated other tests in the same file that looked suspect as well.
Mar 23 2020
Feb 4 2020
Jan 22 2020
Thanks for doing this! It's been on my TODO list for a little while already for SPE, but I never got around to it.
Jan 14 2020
Jan 13 2020
Jan 10 2020
Fine with me. I just wanted -target powerpcspe-... to work with D72014.
Jan 8 2020
Jan 7 2020
Jan 6 2020
Not happy, but won't hold it up.
Jan 5 2020
Any more feedback on this?
Jan 2 2020
@Jim Yeah, I know. I normally do fix the commit message, but forgot before pushing this one. I'll have to check, but I thought arc had a way to update the commit message when generating the review.
Committed as 2c4620ad57b
Address comments. As part of this I ran 'update_llc_test_checks.py' on the
whole spe.ll file. I'm not sure if that's necessary for this, but I included
the output anyway. If it's better as a separate change I can do that.
Dec 31 2019
Add triple unit test. I chose freebsd as the OS since that's my environment.
Dec 30 2019
Reuse the SPE feature test preprocessor test check instead of duplicating it.
powerpcspe-* is exactly equivalent to the -mspe command line argument.
Fix a test typo made at the last minute.
Ping on this? I've been using this patch for quite some time now, and really want to get it in before 10.
Dec 27 2019
The conflict I see is the other patch uses VSX for the operations, but this uses instructions that have been around as far back as the PPC970.
Dec 19 2019
@kthomsen do you have any tests we can massage for this?
Dec 18 2019
Updated diff after clang-format. I actually had run git-clang-format on it
before submitting, but forgot to amend it to the change before submitting
for review.
Update diff. It would help if I actually compiled when rebasing...
Dec 17 2019
Rebase
Dec 16 2019
Thanks @Jim, yes the code was copied from a comment in another review and I didn't run clang-format on it. Thanks for pointing out 'git-clang-format', I didn't know about that before.
Apply style fixes.
Dec 13 2019
Add tests, taken from the C test in comments in D54583.
Dec 10 2019
@Bdragon28 we might need to use -mlongcall for modules, if we aren't already. This should(?) force the compiler to generate the appropriate long-distance code sequences. I'm not sure, though, if clang supports this yet.
Dec 5 2019
I might object less to a _rec suffix. However, you would still need to understand what "record form" means, which requires understanding of the ISA. Why not simply add a comment block to the top of PPCInstrInfo.td, describing things like this? I have a feeling other newbies would have similar questions/concerns/complaints, and they can't all be addressed by renaming everything.
Dec 3 2019
I personally think the status quo is easy to read. The definitions look like the instructions themselves, and the added verbosity seems very unnecessary. I don't know about others, but I consider people working in the PPCInstr*.td files to be either knowing exactly what they're looking for (grepping), or have a sufficient handle on the ISA that the existing notation is clear. At most I could see changing the 'o' suffix to '_o', which might help newcomers familiar with '_' notation to indicate a diminutive or subscript, but '_record' is very verbose, and as @nemanjai points out, can make some text very ugly.
I still hold pretty strongly that this change is a more negative impact than positive. As shown in the tests, it's very easy to read the generated statements as "FOO-dot", and search for what 'foo.' actually is. The only difficult part is the '*8' vs '*4', since you can't search for that, and need to remember to drop the number, which isn't difficult after the first time.
Dec 2 2019
When discussing optimizations related to "ADD-o", if it's "ADDO" I'd call it "ADD-O", but if it's "ADDo" I'd call it "ADD-dot", since all record forms are referred to as 'dot's, even in all the documentation I've seen. For instance, immediately above this text box is the "rlwinm_rldicl_to_andi.mir" test, with the change of "ANDIo8..." to "ANDIr8".... I read that instinctively as "ANDI-dot-8", whereas "ANDIr8" looks like "ANDI-R-8" which doesn't have a corresponding instruction in the ISA. Additionally, the asm string in PPCInstrInfo.td is "andi. ...", which would make someone question what the 'r' is for, when it doesn't even exist in the instruction. Seeing a 'ANDIo' alongside "andi." someone will easily see the 'o' stands for the '.'.
I second @nemanjai, the lowercase 'o' suffix stands out to me as a clear indicator of it being punctuation, not a letter in the instruction. I would much rather see ANDIo than ANDIr, the 'r' just doesn't look right when reading over it. My vote is to reject. It looks like a lot of churn without much benefit.