User Details
- User Since
- May 13 2021, 5:30 AM (97 w, 1 d)
Sat, Mar 18
Undo formatting changes and fix typo in test comment.
Sun, Mar 12
Merge fixup_sparc_br16_2/fixup_sparc_br16_14 into a single fixup.
Sat, Mar 11
Yes, just this one (D142461). Thanks a lot!
Ping?
Sat, Mar 4
Remove stray include statement.
- Fix calculation for fixup_sparc_br16_2.
- Make sure to properly shift fixup values as described in the fixup tables.
- Only emit one R_SPARC_WDISP16 relocation per one fixup_sparc_br16_14/2 pair.
Mon, Feb 27
Ping?
Ping?
Feb 14 2023
Split the encoding fix into D144012.
Update update_llc_test_checks testcases.
Update as suggested, remove the conditional on target.
Feb 12 2023
Ping again?
Ping?
Feb 2 2023
- Use MI.isInlineAsm() as suggested
- Clean up unnecessary changes
Jan 31 2023
Ping?
Ping?
Jan 24 2023
Dec 21 2022
Address review comment: list all the types that is supported by SELECT_REG.
Update conditionals, separate the f128 part for easier reading.
Address review comments, and add a hardquad variant of the test case.
Dec 9 2022
Dec 8 2022
I noticed that in the "Zero register pair" pattern, LLVM really does not like using an explicit copying from %g0 to set the lower half, even when bitcasted into i32 as in the previous version of the patch, so I generalized the pattern to match the materialization of any (0, X) register pair. This works since we really only care about preventing LLVM from selecting a register pair copy (i.e. COPY G0_G1) during the filling of the upper part.
Dec 7 2022
Anything else that I need to do here? I can't seem to reproduce the errors locally.
Dec 5 2022
- Address review comments
- Add assembly tests for MOVRri, FMOVRD, and FMOVRQ instruction templates
Nov 29 2022
Address review comments and remove redundant includes.
- Mark i64 zero materialization as for 64-bit target only.
- Use ORrr instead of the default COPY to zero the upper half of a register pair. Using COPY there will result in LLVM changing the COPY G0 operation to a COPY G0_G1 operation, which is not what we want in this case. Note that in all other cases turning COPY G0 to COPY G0_G1 is the right thing to do; zeroing is simply an exception to that rule.
Nov 28 2022
Nov 25 2022
Nov 22 2022
Looks okay here too, thanks.
Nov 20 2022
The patch doesn't apply cleanly as-is on my test system (seems like there are some of the proposed changes that's already in main?).
Once I got the patch to apply, though, it seems to be hitting some assertion failures:
Nov 4 2022
Simplify the implementation; in particular, do not trip into the allocator and force instructions to always use %fcc0.
This is to get around the limitation of needing allocatable registers to also be spillable, since, unfortunately, SPARC FCCs only support a very limited set of operations.
Nov 2 2022
Oct 28 2022
Set cc = 0b00 in BPA instruction definition.
Oct 22 2022
Looks okay to me, at least on the SPARC side.
For the CodeGen changes I'm not seeing anything obviously wrong, but it'd be better if someone else also review that part since I'm not very familiar with its workings.
Don't do setHasMultipleConditionRegister.
For now, just disallow deprecated branch forms, the work of enabling whole-FP CCR allocation will be done in a separate patch.
Update the new tests to use update_llc_test_checks.py results.
Oct 17 2022
Thanks, can you please commit it to me, @MaskRay?
My email address is koachan@protonmail.com.
Move all sret-related tests into one file and autogenerate the test cases.
Oct 14 2022
A question about the CI: It says that the build fails because of clang-format errors, yet when I run it locally it says "clang-format did not modify any files". What do I need to do?
Don't include unused headers.
Codestyle changes + check branch opcode instead of subtarget when loading parameters.
Oct 8 2022
- Change codestyle as suggested
- Change parseCondBranch/insertBranch to pass the branch opcode instead of relying on subtarget checking
I have a little bit of question regarding aesthetics: In the text assembly language, if the destination of FP compare is not specified, then it is taken as %fcc0.
(that is, fcmp<s|d|q> rs1, rs2 is encoded in the same way as fcmp<s|d|q> %fcc0, rs1, rs2 in the binary machine language)
Currently LLVM prefers to emit the former form. Is it okay to leave it as-is, or should it be changed so it explicitly spells out the %fcc0 destination?
Change LowerBR_CC to use already-created isV9 rather than passing Subtarget again.
Sep 19 2022
Ping. Is there anything else I should do for this?
Ping. Is there anything else I should do for this?
Sep 10 2022
Ping?
Ping?
Aug 23 2022
Change formatting as suggested by clang-format.
Aug 17 2022
Ping?
Aug 5 2022
Add some comment wrt BPA emission.
Jul 18 2022
Jun 21 2022
Also update other inline asm-related SPARC tests.
May 18 2022
LGTM
Apr 1 2022
Ping?
Mar 21 2022
Ping? Anything else needs to be done for this?
Ping? Anything else needs to be done for this?
Mar 9 2022
Ping?
Mar 4 2022
Looks good to me, also all testcases are passing here:
Feb 14 2022
Looks okay here, in particular it doesn't emit FMOVqcc instructions unless hard-quad-float is specified:
define fp128 @fpselect(i32 signext %0, fp128 %1, fp128 %2) { %a = icmp eq i32 %0, 0 %b = select i1 %a, fp128 %2, fp128 %1 ret fp128 %b }
Feb 7 2022
Looks okay here too check-unwind tests passes and _Unwind_Backtrace seems to work on Gentoo/sparc64, at least.
Feb 3 2022
Yeah, that should be okay, I think.
Um... I don't have commit access, so can someone please help committing it for me? My email is koachan@protonmail.com.
Thanks a lot for the help.
Feb 2 2022
Follow @Arfrever & clang-format's suggestions.
Feb 1 2022
Use default constructor for Registers_sparc64.
Jan 31 2022
Some formatting changes as per @MaskRay and clang-format suggestions.
Distinguish REGISTERS_SPARC from REGISTERS_SPARC64 to make building with -DLIBUNWIND_ENABLE_CROSS_UNWINDING=ON possible.
Jan 28 2022
I tried to implement this, but as far as I understand it, it's impossible (or at least very hard) to do when it's already this late because even if we manage to put the load result in a %gN register, there's no way to emit an extra mov to get the value into %o5.
Also, as an additional note, functions that does not contain inline assembly generates the correct code on unpatched LLVM, so I believe the existing register remapping is already mostly working as intended.
Add .register directive for %g2, %g3, %g6, and %g7 as required by the assembly language.
Jan 27 2022
Ping. Is there anything else that needs to be done?
Jan 13 2022
This fixes the wrong #endif placement in DwarfParser.hpp that causes AArch64 build to fail.