Page MenuHomePhabricator

dcederman (Daniel Cederman)
Software Engineer at Cobham Gaisler

Projects

User does not belong to any projects.

User Details

User Since
May 20 2016, 1:12 AM (186 w, 1 h)

Recent Activity

Jan 14 2019

dcederman committed rUNW351044: [Sparc] Add Sparc V8 support.
[Sparc] Add Sparc V8 support
Jan 14 2019, 2:24 AM
dcederman committed rL351044: [Sparc] Add Sparc V8 support.
[Sparc] Add Sparc V8 support
Jan 14 2019, 2:19 AM
dcederman closed D55763: [Sparc] Add Sparc V8 support.
Jan 14 2019, 2:19 AM
dcederman updated the diff for D55763: [Sparc] Add Sparc V8 support.

Fixed warnings related to sign and unused parameters.

Jan 14 2019, 2:08 AM

Jan 11 2019

dcederman added a comment to D55763: [Sparc] Add Sparc V8 support.

It seems that warnings are disabled by default for libunwind? Or I did something wrong when running cmake. Enabling warnings got me list of things I will have to fix before committing.

Jan 11 2019, 8:41 AM
dcederman updated the diff for D55763: [Sparc] Add Sparc V8 support.

Added message to static_assert and moved the AArch64 check one step up.

Jan 11 2019, 8:15 AM
dcederman reopened D55763: [Sparc] Add Sparc V8 support.
Jan 11 2019, 6:57 AM
dcederman updated the diff for D55763: [Sparc] Add Sparc V8 support.

Added assert to verify that DW_CFA_AARCH64_negate_ra_state and DW_CFA_GNU_window_save have the same value.

Jan 11 2019, 6:57 AM
dcederman updated the diff for D55763: [Sparc] Add Sparc V8 support.

Added functionality to be able to differ between DW_CFA_AARCH64_negate_ra_state and DW_CFA_GNU_window_save.

Jan 11 2019, 6:35 AM

Jan 10 2019

dcederman updated the diff for D55763: [Sparc] Add Sparc V8 support.

For me native support is enough, so I removed the Sparc define from the !_LIBUNWIND_IS_NATIVE_ONLY section. That should make it compile with -DLIBUNWIND_ENABLE_CROSS_UNWINDING=ON.

Jan 10 2019, 5:13 AM

Jan 9 2019

dcederman updated the diff for D51206: [Sparc] Add tail call support.

On 64-bit Sparc we can allow tail call optimizations on functions that returns a struct even though the caller does not (and vice versa).

Jan 9 2019, 4:59 AM
dcederman added inline comments to D51206: [Sparc] Add tail call support.
Jan 9 2019, 4:59 AM
dcederman committed rUNW350705: [Sparc] Add Sparc V8 support.
[Sparc] Add Sparc V8 support
Jan 9 2019, 4:16 AM
dcederman committed rL350705: [Sparc] Add Sparc V8 support.
[Sparc] Add Sparc V8 support
Jan 9 2019, 4:10 AM
dcederman closed D55763: [Sparc] Add Sparc V8 support.
Jan 9 2019, 4:09 AM

Jan 8 2019

dcederman updated the diff for D51206: [Sparc] Add tail call support.

Do not tail call opt if either the callee or caller returns a struct and the other does not.

Jan 8 2019, 5:40 AM
dcederman updated the diff for D55763: [Sparc] Add Sparc V8 support.

Removed empty lines and moved the trace message to before the operation.

Jan 8 2019, 12:19 AM
dcederman added a comment to D55763: [Sparc] Add Sparc V8 support.

Thanks for the review!

Jan 8 2019, 12:18 AM

Dec 20 2018

dcederman added a comment to D55763: [Sparc] Add Sparc V8 support.

I have been using this Sparc version of libunwind when running the libc++ testsuite and have not had any problems related to libunwind. Does anyone have any additional comments or is it ok to commit?

Dec 20 2018, 6:31 AM

Dec 18 2018

dcederman updated the diff for D55763: [Sparc] Add Sparc V8 support.

This update does not use __builtin_extract_return_addr in _Unwind_GetIP. Instead it modifies the return address in stepWithDwarf, similar to aarch64. It also checks if the instruction at the return address is an unimp instruction. If it is, that means that the function is returning a struct and that we should skip one extra instruction.

Dec 18 2018, 1:23 AM
dcederman added inline comments to D55763: [Sparc] Add Sparc V8 support.
Dec 18 2018, 1:15 AM

Dec 17 2018

dcederman updated the diff for D55763: [Sparc] Add Sparc V8 support.

Only include DW_CFA_GNU_window_save support when compiling for Sparc.

Dec 17 2018, 7:19 AM
dcederman added inline comments to D55763: [Sparc] Add Sparc V8 support.
Dec 17 2018, 7:17 AM
dcederman created D55763: [Sparc] Add Sparc V8 support.
Dec 17 2018, 5:41 AM

Dec 13 2018

dcederman committed rL349048: [Sparc] Add membar assembler tags.
[Sparc] Add membar assembler tags
Dec 13 2018, 7:32 AM
dcederman closed D53491: [Sparc] Add membar assembler tags.
Dec 13 2018, 7:32 AM
dcederman added inline comments to D53491: [Sparc] Add membar assembler tags.
Dec 13 2018, 7:25 AM
dcederman committed rL349045: [Sparc] Use float register for integer constrained with "f" in inline asm.
[Sparc] Use float register for integer constrained with "f" in inline asm
Dec 13 2018, 7:16 AM
dcederman closed D51614: [Sparc] Use float register for integer constrained with "f" in inline asm.
Dec 13 2018, 7:16 AM
dcederman updated the diff for D53491: [Sparc] Add membar assembler tags.

Added a check to make sure that the integer mask is between 0 and 127 when parsing. The immediate is now printed as an integer when outside the valid range. Also fixed a disassembly issue and added some more tests.

Dec 13 2018, 6:50 AM

Nov 23 2018

dcederman added a comment to D50694: [Sparc] Give the option to use the OS reserved global registers.

Any other comments @jyknight , or does it look ok?

Nov 23 2018, 12:52 AM

Oct 22 2018

dcederman created D53491: [Sparc] Add membar assembler tags.
Oct 22 2018, 5:21 AM

Oct 15 2018

dcederman updated the diff for D50694: [Sparc] Give the option to use the OS reserved global registers.

Removed the UseRegG* features and enabled the ReserveRegG6, ReserveRegG7, and ReserveRegG5 (on 32-bit) features by default.

Oct 15 2018, 2:15 AM
dcederman added inline comments to D50694: [Sparc] Give the option to use the OS reserved global registers.
Oct 15 2018, 2:11 AM

Sep 27 2018

dcederman committed rL343210: [Sparc] Remove the support for builtin setjmp/longjmp.
[Sparc] Remove the support for builtin setjmp/longjmp
Sep 27 2018, 6:37 AM
dcederman closed D51487: [Sparc] Remove the support for builtin setjmp/longjmp.
Sep 27 2018, 6:36 AM
dcederman committed rL343203: [Sparc] Add unimp alias.
[Sparc] Add unimp alias
Sep 27 2018, 5:37 AM
dcederman closed D51526: [Sparc] Add unimp alias.
Sep 27 2018, 5:37 AM
dcederman committed rL343202: [Sparc] Add support for the partial write PSR instruction.
[Sparc] Add support for the partial write PSR instruction
Sep 27 2018, 5:37 AM
dcederman closed D48644: [Sparc] Add support for the partial write PSR instruction.
Sep 27 2018, 5:37 AM

Sep 4 2018

dcederman resigned from D24662: [Sparc][LEON] Hardware erratum fix: Insert NOPs around double precision instructions.
Sep 4 2018, 2:15 AM
dcederman abandoned D50969: [Sparc] Improve the builtin setjmp/longjmp.

See https://reviews.llvm.org/D51487 instead.

Sep 4 2018, 2:15 AM
dcederman created D51614: [Sparc] Use float register for integer constrained with "f" in inline asm.
Sep 4 2018, 2:09 AM
dcederman created D51613: [Sparc] Add fixups for the GOTdata_op model.
Sep 4 2018, 2:09 AM

Sep 3 2018

dcederman committed rL341308: [Sparc] allow tls_add/tls_call syntax in assembler parser.
[Sparc] allow tls_add/tls_call syntax in assembler parser
Sep 3 2018, 3:39 AM
dcederman closed D36463: [Sparc] allow tls_add/tls_call syntax in assembler parser.
Sep 3 2018, 3:39 AM
dcederman updated the diff for D36463: [Sparc] allow tls_add/tls_call syntax in assembler parser.

Rebased and changed objdump output check from Unknown to symbol name (Local/Extern).

Sep 3 2018, 2:21 AM
dcederman commandeered D36463: [Sparc] allow tls_add/tls_call syntax in assembler parser.

Ok for me. Are you willing to take the ownership of this?

Sep 3 2018, 1:47 AM

Sep 2 2018

dcederman added a comment to D36463: [Sparc] allow tls_add/tls_call syntax in assembler parser.

The assert does not trigger after https://reviews.llvm.org/rL334383. Is it ok to apply this patch? Just need to change the objdump output from Unknown to the symbol name.

Sep 2 2018, 11:49 PM

Aug 31 2018

dcederman created D51526: [Sparc] Add unimp alias.
Aug 31 2018, 12:43 AM

Aug 30 2018

dcederman committed rL341069: [Sparc] Use ANDN instead of AND if constant can be encoded more efficiently.
[Sparc] Use ANDN instead of AND if constant can be encoded more efficiently
Aug 30 2018, 7:07 AM
dcederman closed D50964: [Sparc] Use ANDN instead of AND if constant can be encoded more efficiently.
Aug 30 2018, 7:07 AM
dcederman created D51487: [Sparc] Remove the support for builtin setjmp/longjmp.
Aug 30 2018, 6:21 AM
dcederman added a comment to D48644: [Sparc] Add support for the partial write PSR instruction.

The partial write psr instruction is now part of binutils (https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=df28970).

Aug 30 2018, 5:06 AM

Aug 27 2018

dcederman added a comment to D48644: [Sparc] Add support for the partial write PSR instruction.

Yes, the SPARC V8e manual did not provide a mnemonic for it so it is invented here. I have submitted a similar patch to binutils so I will hold this patch until the other one gets approved, in case someone wants me to change the name.

Aug 27 2018, 6:42 AM
dcederman added a comment to D50969: [Sparc] Improve the builtin setjmp/longjmp.

I'm fixing them for the failures and to learn about LLVM. I have no use case and I'm perfectly fine with and in favor of removing the support. Can I just revert the patch that introduced the support, or should I submit a removal patch for review?

Aug 27 2018, 6:36 AM
dcederman added a comment to D50964: [Sparc] Use ANDN instead of AND if constant can be encoded more efficiently.

When I was testing the code I saw that it sometimes generated two versions of the same constant, one with the single SETHI with the complement form, and one with the standard SETHI/ORri pair. So I added the hasOneUse() part to prevent the case when a constant is encoded using three instructions instead of just one or two.

Aug 27 2018, 6:12 AM
dcederman committed rL340736: [Sparc] Avoid writing outside array in applyFixup.
[Sparc] Avoid writing outside array in applyFixup
Aug 27 2018, 4:45 AM
dcederman closed D50971: [Sparc] Avoid writing outside array in applyFixup.
Aug 27 2018, 4:45 AM
dcederman committed rL340733: [Sparc] Add support for the cycle counter available in GR740.
[Sparc] Add support for the cycle counter available in GR740
Aug 27 2018, 4:15 AM
dcederman closed D48638: [Sparc] Add support for the cycle counter available in GR740.
Aug 27 2018, 4:14 AM
dcederman added a comment to D48638: [Sparc] Add support for the cycle counter available in GR740.

LGTM.

It's possibly only theoretical at the moment, since I don't know if anything both supports this and is little endian, but --
On a little endian system, will the registers be swapped; that is, would ASR22 hold the 32 LSB instead of ASR23?

Aug 27 2018, 4:11 AM
dcederman committed rL340723: [Sparc] Custom bitcast between f64 and v2i32.
[Sparc] Custom bitcast between f64 and v2i32
Aug 27 2018, 12:16 AM
dcederman closed D49219: [Sparc] Custom bitcast between f64 and v2i32.
Aug 27 2018, 12:16 AM

Aug 24 2018

dcederman created D51206: [Sparc] Add tail call support.
Aug 24 2018, 12:14 AM

Aug 22 2018

dcederman created D51085: [Sparc] Add errata workaround pass for GR712RC.
Aug 22 2018, 12:02 AM

Aug 20 2018

dcederman created D50971: [Sparc] Avoid writing outside array in applyFixup.
Aug 20 2018, 6:16 AM
dcederman created D50969: [Sparc] Improve the builtin setjmp/longjmp.
Aug 20 2018, 5:49 AM
dcederman created D50964: [Sparc] Use ANDN instead of AND if constant can be encoded more efficiently.
Aug 20 2018, 3:43 AM
dcederman updated the diff for D48638: [Sparc] Add support for the cycle counter available in GR740.

Reserving registers ASR1-ASR31

Aug 20 2018, 1:04 AM
dcederman updated the diff for D50694: [Sparc] Give the option to use the OS reserved global registers.

Added attributes to prevent %g2-%g5 from being used as scratch register or to allow the use of %g5-%g7 as scratch registers. %g5 is reserved by default for 32-bit but not for 64-bit.

Aug 20 2018, 12:52 AM
dcederman updated the diff for D49219: [Sparc] Custom bitcast between f64 and v2i32.

Moved code into a PerformDAGCombine function.

Aug 20 2018, 12:18 AM

Aug 17 2018

dcederman committed rL340008: [Sparc] Get sret arg size from CallLoweringInfo.getArgs().
[Sparc] Get sret arg size from CallLoweringInfo.getArgs()
Aug 17 2018, 3:40 AM
dcederman closed D48117: [Sparc] Get sret arg size from CallLoweringInfo.getArgs().
Aug 17 2018, 3:40 AM
dcederman committed rL340003: [Sparc] Flush register windows for @llvm.returnaddress(1).
[Sparc] Flush register windows for @llvm.returnaddress(1)
Aug 17 2018, 2:19 AM
dcederman closed D48636: [Sparc] Flush register windows for @llvm.returnaddress(1).
Aug 17 2018, 2:19 AM

Aug 14 2018

dcederman created D50694: [Sparc] Give the option to use the OS reserved global registers.
Aug 14 2018, 2:22 AM

Aug 13 2018

dcederman updated the diff for D48636: [Sparc] Flush register windows for @llvm.returnaddress(1).

Added optional argument to getFRAMEADDR to always flush register windows regardless of depth. Also simplified the code a bit.

Aug 13 2018, 8:44 AM
dcederman reopened D48638: [Sparc] Add support for the cycle counter available in GR740.
Aug 13 2018, 7:56 AM
dcederman updated the diff for D48638: [Sparc] Add support for the cycle counter available in GR740.

Reserved register ASR23 to avoid error stating that register ASR23 is "an undefined physical register". Not sure if this is the correct solution, so putting this up for review again.

Aug 13 2018, 7:56 AM
dcederman updated the diff for D49219: [Sparc] Custom bitcast between f64 and v2i32.

Added assert for Src.getSimpleValueType() and improved formatting.

Aug 13 2018, 7:36 AM
dcederman committed rL339570: Revert "[Sparc] Add support for the cycle counter available in GR740".
Revert "[Sparc] Add support for the cycle counter available in GR740"
Aug 13 2018, 7:18 AM
dcederman added a comment to rL339551: [Sparc] Add support for the cycle counter available in GR740.

Sorry, I forgot to test it with -verify-machineinstrs. I will revert it as I do not know how to fix it at this time.

Aug 13 2018, 7:12 AM
dcederman updated the diff for D48117: [Sparc] Get sret arg size from CallLoweringInfo.getArgs().

Changed dyn_cast to cast. SRet is only allowed on the first argument, checked by LowerFormalArguments_32 at line 406, so I replaced [i] with [0].

Aug 13 2018, 6:13 AM
dcederman committed rL339551: [Sparc] Add support for the cycle counter available in GR740.
[Sparc] Add support for the cycle counter available in GR740
Aug 13 2018, 3:50 AM
dcederman closed D48638: [Sparc] Add support for the cycle counter available in GR740.
Aug 13 2018, 3:50 AM

Jul 18 2018

dcederman committed rL337373: Revert "[Sparc] Use the IntPair reg class for r constraints with value type f64".
Revert "[Sparc] Use the IntPair reg class for r constraints with value type f64"
Jul 18 2018, 3:10 AM
dcederman committed rL337370: [Sparc] Use the IntPair reg class for r constraints with value type f64.
[Sparc] Use the IntPair reg class for r constraints with value type f64
Jul 18 2018, 2:30 AM
dcederman closed D49218: [Sparc] Use the IntPair reg class for r constraints with value type f64.
Jul 18 2018, 2:30 AM

Jul 16 2018

dcederman committed rL337236: [Sparc] Do not depend on icc for ta 1.
[Sparc] Do not depend on icc for ta 1
Jul 16 2018, 10:54 PM
dcederman committed rL337165: [Sparc] Use the correct encoding for ta 3.
[Sparc] Use the correct encoding for ta 3
Jul 16 2018, 5:33 AM
dcederman closed D49171: [Sparc] Use the correct encoding for ta 3.
Jul 16 2018, 5:33 AM
dcederman committed rL337164: [Sparc] Use the names .rem and .urem instead of __modsi3 and __umodsi3.
[Sparc] Use the names .rem and .urem instead of __modsi3 and __umodsi3
Jul 16 2018, 5:27 AM
dcederman closed D48915: [Sparc] Use the names .rem and .urem instead of __modsi3 and __umodsi3.
Jul 16 2018, 5:27 AM
dcederman committed rL337163: [Sparc] Generate ta 1 for the @llvm.debugtrap intrinsic.
[Sparc] Generate ta 1 for the @llvm.debugtrap intrinsic
Jul 16 2018, 5:22 AM
dcederman closed D48637: [Sparc] Generate ta 1 for the @llvm.debugtrap intrinsic.
Jul 16 2018, 5:22 AM
dcederman committed rL337161: Avoid losing Hi part when expanding VAARG nodes on big endian machines.
Avoid losing Hi part when expanding VAARG nodes on big endian machines
Jul 16 2018, 5:19 AM
dcederman closed D48595: Avoid losing Hi part when expanding VAARG nodes on big endian machines.
Jul 16 2018, 5:19 AM

Jul 12 2018

dcederman created D49219: [Sparc] Custom bitcast between f64 and v2i32.
Jul 12 2018, 12:38 AM
dcederman created D49218: [Sparc] Use the IntPair reg class for r constraints with value type f64.
Jul 12 2018, 12:36 AM