Page MenuHomePhabricator

sdesmalen (Sander de Smalen)
User

Projects

User does not belong to any projects.

User Details

User Since
Oct 21 2016, 1:19 AM (205 w, 12 h)

Recent Activity

Today

sdesmalen added inline comments to D88321: [SVE][CodeGen] Lower scalable fp_extend & fp_round operations.
Fri, Sep 25, 10:50 AM · Restricted Project
sdesmalen added a comment to D87700: [SVE] Replace / operator in TypeSize/ElementCount with divideCoefficientBy.

I'm happy colour of the bikeshed. Please re-run clang-format on it though.

Fri, Sep 25, 10:08 AM · Restricted Project

Yesterday

sdesmalen added inline comments to D88098: [SVE] Add new isKnownXX comparison functions to TypeSize.
Thu, Sep 24, 9:57 AM · Restricted Project

Wed, Sep 23

sdesmalen accepted D88117: [AArch64][SVE] Fix frame offset calculation when d8 is saved..

LGTM, thanks for fixing!

Wed, Sep 23, 10:02 AM · Restricted Project
sdesmalen added inline comments to D88033: [SVE][CodeGen] Legalisation of integer -> floating point conversions.
Wed, Sep 23, 2:44 AM · Restricted Project

Tue, Sep 22

sdesmalen accepted D87889: [SVE] Make EVT::getScalarSizeInBits and others consistent with Type::getScalarSizeInBits.

LGTM. I think this is a sensible change. TypeSize is used to indicate that a value could be scalable, but if it is known the type is always fixed-size this change simplifies code that calls getScalarSizeInBits (i.e. no need to call 'getFixedSize`).
It also puts us on the path towards removing the implicit casts to uint64_t.

Tue, Sep 22, 9:44 AM · Restricted Project
sdesmalen added inline comments to D87700: [SVE] Replace / operator in TypeSize/ElementCount with divideCoefficientBy.
Tue, Sep 22, 9:27 AM · Restricted Project
sdesmalen accepted D87378: [SVE] Fix InstCombinerImpl::PromoteCastOfAllocation for scalable vectors.

LGTM, thanks for the changes @david-arm!

Tue, Sep 22, 6:07 AM · Restricted Project
sdesmalen accepted D87913: [SVE][CodeGen] Lower legal integer -> floating point conversions.

LGTM as well, thanks @kmclaughlin!

Tue, Sep 22, 5:47 AM · Restricted Project

Thu, Sep 17

sdesmalen added inline comments to D87700: [SVE] Replace / operator in TypeSize/ElementCount with divideCoefficientBy.
Thu, Sep 17, 6:11 AM · Restricted Project

Mon, Sep 14

sdesmalen added inline comments to D87550: [SLPVectorizer][SVE] Skip scalable-vector instructions before vectorizeSimpleInstructions..
Mon, Sep 14, 10:11 AM · Restricted Project
sdesmalen accepted D87227: [SVE] Fix isLoadInvariantInLoop for scalable vectors.

nit: I don't know if Clang ever really generates a llvm.invariant.start with -1 size in practice, but if it does, you may want to land this patch as two separate patches, one patch that prevents hoisting when size = -1 and another to stop the hoisting for scalable vectors.

Mon, Sep 14, 7:46 AM · Restricted Project
sdesmalen added inline comments to D86928: [SVE][CodeGen] Fix TypeSize/ElementCount related warnings in sve-split-store.ll.
Mon, Sep 14, 7:29 AM · Restricted Project
sdesmalen added inline comments to D86928: [SVE][CodeGen] Fix TypeSize/ElementCount related warnings in sve-split-store.ll.
Mon, Sep 14, 6:24 AM · Restricted Project
sdesmalen added inline comments to D87227: [SVE] Fix isLoadInvariantInLoop for scalable vectors.
Mon, Sep 14, 6:02 AM · Restricted Project
sdesmalen added inline comments to D87227: [SVE] Fix isLoadInvariantInLoop for scalable vectors.
Mon, Sep 14, 3:39 AM · Restricted Project
sdesmalen accepted D86249: [llvm][CodeGen] Do not scalarize `llvm.masked.[gather|scatter]` operating on scalable vectors..

Thanks @fpetrogalli, LGTM!

Mon, Sep 14, 3:22 AM · Restricted Project
sdesmalen added inline comments to D87378: [SVE] Fix InstCombinerImpl::PromoteCastOfAllocation for scalable vectors.
Mon, Sep 14, 3:09 AM · Restricted Project

Wed, Sep 9

sdesmalen added inline comments to D87358: [clang][aarch64] Fix ILP32 ABI for arm_sve_vector_bits.
Wed, Sep 9, 9:54 AM · Restricted Project
sdesmalen added inline comments to D87378: [SVE] Fix InstCombinerImpl::PromoteCastOfAllocation for scalable vectors.
Wed, Sep 9, 9:37 AM · Restricted Project
sdesmalen added inline comments to D87227: [SVE] Fix isLoadInvariantInLoop for scalable vectors.
Wed, Sep 9, 5:20 AM · Restricted Project

Thu, Sep 3

sdesmalen abandoned D71713: Downstream SVE/SVE2 implementation (Clang).

Abandoning this revision because an updated version of this patch (based on LLVM 9) has been posted in D87056.

Thu, Sep 3, 1:43 AM
sdesmalen abandoned D71712: Downstream SVE/SVE2 implementation (LLVM).

Abandoning this revision because an updated version of this patch (based on LLVM 9) has been posted in D87056.

Thu, Sep 3, 1:43 AM

Wed, Sep 2

sdesmalen planned changes to D87056: [POC] SVE/SVE2 implementation (LLVM 9).
Wed, Sep 2, 2:38 PM · Restricted Project, Restricted Project
sdesmalen requested review of D87056: [POC] SVE/SVE2 implementation (LLVM 9).
Wed, Sep 2, 2:37 PM · Restricted Project, Restricted Project
sdesmalen added a comment to D84737: [AArch64][SVE] Preserve full vector regs over EH edge..

Thanks for reviewing the patch!

Wed, Sep 2, 1:11 PM · Restricted Project
sdesmalen committed rGf13beac51be0: [AArch64][SVE] Preserve full vector regs over EH edge. (authored by sdesmalen).
[AArch64][SVE] Preserve full vector regs over EH edge.
Wed, Sep 2, 2:55 AM
sdesmalen closed D84737: [AArch64][SVE] Preserve full vector regs over EH edge..
Wed, Sep 2, 2:55 AM · Restricted Project
sdesmalen added inline comments to D86989: [InstCombine] Fix a couple crahses with extractelement on a scalable vector..
Wed, Sep 2, 12:40 AM · Restricted Project
sdesmalen accepted D86989: [InstCombine] Fix a couple crahses with extractelement on a scalable vector..
Wed, Sep 2, 12:33 AM · Restricted Project

Tue, Sep 1

sdesmalen added a comment to D84737: [AArch64][SVE] Preserve full vector regs over EH edge..

Hi @efriedma, what do you think of the latest changes to this patch?

Tue, Sep 1, 2:16 PM · Restricted Project
sdesmalen added a comment to D86249: [llvm][CodeGen] Do not scalarize `llvm.masked.[gather|scatter]` operating on scalable vectors..

[llvm][sve] Make llvm.masked.[gather|scatter] legal for SVE.

The title of the patch seems wrong, as this patch doesn't do any legalization of masked.gather/scatter for SVE?

Tue, Sep 1, 2:51 AM · Restricted Project

Fri, Aug 28

sdesmalen added inline comments to D84737: [AArch64][SVE] Preserve full vector regs over EH edge..
Fri, Aug 28, 2:16 AM · Restricted Project
sdesmalen added a comment to D84737: [AArch64][SVE] Preserve full vector regs over EH edge..

Does MIRParser also need to be modified?

You're right, that was missing. Thanks for pointing out!

Fri, Aug 28, 2:14 AM · Restricted Project
sdesmalen updated the diff for D84737: [AArch64][SVE] Preserve full vector regs over EH edge..
  • MIRParser now correctly marks registers as clobbered and added corresponding .mir test file.
  • Updated RUN lines of unwind-preserved.ll to test with/without global isel.
Fri, Aug 28, 2:13 AM · Restricted Project

Thu, Aug 27

sdesmalen updated the diff for D84737: [AArch64][SVE] Preserve full vector regs over EH edge..
  • Updated patch with option 2: Update the function-global state when we construct the landing pad instruction/node.
Thu, Aug 27, 8:16 AM · Restricted Project
sdesmalen added inline comments to D86249: [llvm][CodeGen] Do not scalarize `llvm.masked.[gather|scatter]` operating on scalable vectors..
Thu, Aug 27, 3:27 AM · Restricted Project
sdesmalen added a comment to D86101: [AArch64][SVE] Add missing debug info for ACLE types..

Thanks for the review!

Thu, Aug 27, 2:58 AM · Restricted Project, Restricted Project
sdesmalen committed rG4e9b66de3f04: [AArch64][SVE] Add missing debug info for ACLE types. (authored by sdesmalen).
[AArch64][SVE] Add missing debug info for ACLE types.
Thu, Aug 27, 2:57 AM
sdesmalen closed D86101: [AArch64][SVE] Add missing debug info for ACLE types..
Thu, Aug 27, 2:57 AM · Restricted Project, Restricted Project

Aug 26 2020

sdesmalen added inline comments to D86101: [AArch64][SVE] Add missing debug info for ACLE types..
Aug 26 2020, 4:09 AM · Restricted Project, Restricted Project
sdesmalen updated the diff for D86101: [AArch64][SVE] Add missing debug info for ACLE types..
  • Choose unsigned char element type for svbool_t bitpattern.
  • Added LLVM test to ensure debug info for the vector type is correctly codegenerated when DISubrange has upper bound instead of count.
Aug 26 2020, 4:08 AM · Restricted Project, Restricted Project
sdesmalen added a comment to D86099: [AArch64][SVE] Fix calculation restore point for SVE callee saves..

Addressed review comments before committing.

Aug 26 2020, 2:08 AM · Restricted Project
sdesmalen committed rG5f47d4456d19: [AArch64][SVE] Fix calculation restore point for SVE callee saves. (authored by sdesmalen).
[AArch64][SVE] Fix calculation restore point for SVE callee saves.
Aug 26 2020, 2:07 AM
sdesmalen closed D86099: [AArch64][SVE] Fix calculation restore point for SVE callee saves..
Aug 26 2020, 2:07 AM · Restricted Project

Aug 19 2020

sdesmalen added inline comments to D86100: [Clang][SVE] NFC: Move info about ACLE types into separate function..
Aug 19 2020, 3:06 AM · Restricted Project
sdesmalen committed rG0353848cc94f: [Clang][SVE] NFC: Move info about ACLE types into separate function. (authored by sdesmalen).
[Clang][SVE] NFC: Move info about ACLE types into separate function.
Aug 19 2020, 3:06 AM
sdesmalen closed D86100: [Clang][SVE] NFC: Move info about ACLE types into separate function..
Aug 19 2020, 3:06 AM · Restricted Project

Aug 17 2020

sdesmalen requested review of D86101: [AArch64][SVE] Add missing debug info for ACLE types..
Aug 17 2020, 12:51 PM · Restricted Project, Restricted Project
sdesmalen requested review of D86100: [Clang][SVE] NFC: Move info about ACLE types into separate function..
Aug 17 2020, 12:47 PM · Restricted Project
sdesmalen added a comment to D84737: [AArch64][SVE] Preserve full vector regs over EH edge..

Thanks the update, the idea looks good in general.

Thanks for the feedback!

Aug 17 2020, 12:34 PM · Restricted Project
sdesmalen updated the diff for D84737: [AArch64][SVE] Preserve full vector regs over EH edge..
  • Made getCustomEHPadPreservedMask() return nullptr by default (meaning 'no clobbers')
  • Fixed missing callee saves/restores for clobbered registers.
  • Updated tests (and also added a RUN line for regalloc=fast)
Aug 17 2020, 12:22 PM · Restricted Project
sdesmalen requested review of D86099: [AArch64][SVE] Fix calculation restore point for SVE callee saves..
Aug 17 2020, 12:19 PM · Restricted Project

Aug 12 2020

sdesmalen updated the diff for D84737: [AArch64][SVE] Preserve full vector regs over EH edge..
  • Set clobber mask for EH pad block, instead of changing the CC of the call.
  • Rebased patch
Aug 12 2020, 4:27 AM · Restricted Project

Aug 5 2020

sdesmalen committed rGf2916636f83d: [AArch64][SVE] Disable tail calls if callee does not preserve SVE regs. (authored by sdesmalen).
[AArch64][SVE] Disable tail calls if callee does not preserve SVE regs.
Aug 5 2020, 1:40 AM
sdesmalen closed D84869: [AArch64][SVE] Disable tail calls if callee does not preserve SVE regs..
Aug 5 2020, 1:40 AM · Restricted Project

Aug 4 2020

sdesmalen accepted D85249: [SelectionDAG][SVE] Support scalable vectors in getConstantFP().

Nice, LGTM!

Aug 4 2020, 2:49 PM · Restricted Project
sdesmalen added inline comments to D84043: [AArch64][SVE] Fix CFA calculation in presence of SVE objects..
Aug 4 2020, 9:57 AM · Restricted Project
sdesmalen added a comment to D84043: [AArch64][SVE] Fix CFA calculation in presence of SVE objects..

Thanks for the reviews!

Aug 4 2020, 3:52 AM · Restricted Project
sdesmalen committed rGbb3344c7d8c2: [AArch64][SVE] Add missing unwind info for SVE registers. (authored by sdesmalen).
[AArch64][SVE] Add missing unwind info for SVE registers.
Aug 4 2020, 3:51 AM
sdesmalen committed rGfd6584a22043: [AArch64][SVE] Fix CFA calculation in presence of SVE objects. (authored by sdesmalen).
[AArch64][SVE] Fix CFA calculation in presence of SVE objects.
Aug 4 2020, 3:51 AM
sdesmalen closed D84044: [AArch64][SVE] Add missing unwind info for SVE registers..
Aug 4 2020, 3:51 AM · Restricted Project
sdesmalen closed D84043: [AArch64][SVE] Fix CFA calculation in presence of SVE objects..
Aug 4 2020, 3:51 AM · Restricted Project
sdesmalen added a comment to D83950: [CodeGen] In narrowExtractedVectorLoad bail out for scalable vectors.

LGTM, thanks!

Aug 4 2020, 1:03 AM · Restricted Project

Aug 2 2020

sdesmalen updated the diff for D84044: [AArch64][SVE] Add missing unwind info for SVE registers..

Rebased and added comment to .cfi_escape to describe CFI offset DWARF expression (like was added to D84043)

Aug 2 2020, 8:09 AM · Restricted Project
sdesmalen updated the diff for D84043: [AArch64][SVE] Fix CFA calculation in presence of SVE objects..

Added comment to .cfi_escape to describe CFA DWARF expression.

Aug 2 2020, 8:04 AM · Restricted Project

Jul 30 2020

sdesmalen updated the diff for D84869: [AArch64][SVE] Disable tail calls if callee does not preserve SVE regs..

Updated CallerCC to AArch64_SVE_VectorCall if the caller has an SVE signature.
The code that follows further on will automatically determine whether TCO can be usedby looking at the callee-saved regs preserved by the callee and caller (condition if (!CCMatch) { on line 4243)

Jul 30 2020, 1:40 AM · Restricted Project

Jul 29 2020

sdesmalen added a comment to D84043: [AArch64][SVE] Fix CFA calculation in presence of SVE objects..

Gentle ping because D84044 can't land without this patch :)

Jul 29 2020, 1:46 PM · Restricted Project
sdesmalen requested review of D84869: [AArch64][SVE] Disable tail calls if callee does not preserve SVE regs..
Jul 29 2020, 9:35 AM · Restricted Project

Jul 28 2020

sdesmalen requested review of D84737: [AArch64][SVE] Preserve full vector regs over EH edge..
Jul 28 2020, 8:01 AM · Restricted Project
sdesmalen committed rGcda2eb3ad2bb: [AArch64][SVE] Fix epilogue for SVE when the stack is realigned. (authored by sdesmalen).
[AArch64][SVE] Fix epilogue for SVE when the stack is realigned.
Jul 28 2020, 7:48 AM
sdesmalen committed rG26b4ef369497: [AArch64][SVE] Don't align the last SVE callee save. (authored by sdesmalen).
[AArch64][SVE] Don't align the last SVE callee save.
Jul 28 2020, 7:48 AM
sdesmalen committed rG54492a5843a3: [AArch64][SVE] Don't support fixedStack for SVE objects. (authored by sdesmalen).
[AArch64][SVE] Don't support fixedStack for SVE objects.
Jul 28 2020, 7:48 AM
sdesmalen closed D84539: [AArch64][SVE] Fix epilogue for SVE when the stack is realigned..
Jul 28 2020, 7:48 AM · Restricted Project
sdesmalen closed D84042: [AArch64][SVE] Don't align the last SVE callee save..
Jul 28 2020, 7:48 AM · Restricted Project
sdesmalen closed D84538: [AArch64][SVE] Don't support fixedStack for SVE objects..
Jul 28 2020, 7:48 AM · Restricted Project
sdesmalen accepted D83198: [CodeGen] Remove calls to getVectorNumElements in DAGTypeLegalizer::SplitVecOp_EXTRACT_SUBVECTOR.

LGTM!

Jul 28 2020, 6:57 AM · Restricted Project

Jul 27 2020

sdesmalen accepted D77251: [llvm][CodeGen] Addressing modes for SVE ldN..

LGTM, thanks!

Jul 27 2020, 10:14 AM · Restricted Project
sdesmalen added a comment to D84044: [AArch64][SVE] Add missing unwind info for SVE registers..

No changes are needed in Clang to support this AFAIK.

(I meant loosely a change to clang and/or LLVM.)

Consider the following testcase:

#include <arm_sve.h>
void g1(svuint8_t);
void g2(svuint8_t);
struct Z { svuint8_t *x; ~Z() { g2(*x); } };
svuint8_t f(svuint8_t a, svuint8_t b) {
  Z z{&a};
  g1(b);
  return b;
}

If unwind doesn't preserve SVE registers, we need a spill here. clang currently doesn't generate one at -O2.

Yes, great spot! The caller should assume that all SVE registers are clobbered by the unwinder if the function _may_ throw an exception. I think I'll create a separate patch to fix this, as it's not necessarily something to do with how LLVM emits the unwind info, but rather a bug where the caller doesn't honour the right CC.

Jul 27 2020, 9:08 AM · Restricted Project
sdesmalen added inline comments to D77251: [llvm][CodeGen] Addressing modes for SVE ldN..
Jul 27 2020, 7:20 AM · Restricted Project

Jul 24 2020

sdesmalen added a comment to D84044: [AArch64][SVE] Add missing unwind info for SVE registers..

I asked @rsandifo-arm about this, who suggested that the unwinder restores the callee-saved registers in the base ABI only, i.e. normal returns preserve extra registers, but exceptional returns don't.

I don't think I've ever seen a target do that, but I guess there isn't any reason it can't work like this. Does clang need additional changes to support this, though?

No changes are needed in Clang to support this AFAIK.

Jul 24 2020, 9:44 AM · Restricted Project
sdesmalen updated the diff for D84044: [AArch64][SVE] Add missing unwind info for SVE registers..

rebased patch.

Jul 24 2020, 9:39 AM · Restricted Project
sdesmalen updated the diff for D84043: [AArch64][SVE] Fix CFA calculation in presence of SVE objects..

rebased patch.

Jul 24 2020, 9:39 AM · Restricted Project
sdesmalen updated the diff for D84042: [AArch64][SVE] Don't align the last SVE callee save..
Jul 24 2020, 9:32 AM · Restricted Project
Herald added a project to D84539: [AArch64][SVE] Fix epilogue for SVE when the stack is realigned.: Restricted Project.
Jul 24 2020, 9:32 AM · Restricted Project
Herald added a project to D84538: [AArch64][SVE] Don't support fixedStack for SVE objects.: Restricted Project.
Jul 24 2020, 9:31 AM · Restricted Project
sdesmalen accepted D83357: [llvm][sve] Reg + Imm addressing mode for ld1ro..

LGTM, thanks!

Jul 24 2020, 6:48 AM · Restricted Project

Jul 23 2020

sdesmalen updated subscribers of D84044: [AArch64][SVE] Add missing unwind info for SVE registers..

The CFI entries only cover a subset of the SVE callee-saves and only encodes the lower 64-bits, thus implementing the lowest common denominator ABI. Existing unwinders may support VG but only restore the lower 64-bits.

I'm not sure I understand this. If the calling convention requires saving the whole SVE register, unwinding needs to restore the entire SVE register, or else we corrupt the register in exception unwinding.

Yes that confused me as well, you are right that this would corrupt the register in exception unwinding.

Jul 23 2020, 6:01 AM · Restricted Project
sdesmalen accepted D84373: [AArch64][SVE] Teach copyPhysReg to copy ZPR2/3/4..

Good catch, I didn't realise we were missing those copies. LGTM!

Jul 23 2020, 1:43 AM · Restricted Project

Jul 22 2020

sdesmalen added inline comments to D83357: [llvm][sve] Reg + Imm addressing mode for ld1ro..
Jul 22 2020, 8:23 AM · Restricted Project
sdesmalen added inline comments to D77251: [llvm][CodeGen] Addressing modes for SVE ldN..
Jul 22 2020, 8:14 AM · Restricted Project
sdesmalen committed rGbef56f7fe238: [AArch64][SVE] Correctly allocate scavenging slot in presence of SVE. (authored by sdesmalen).
[AArch64][SVE] Correctly allocate scavenging slot in presence of SVE.
Jul 22 2020, 2:52 AM
sdesmalen closed D70174: [AArch64][SVE] Correctly allocate scavenging slot in presence of SVE..
Jul 22 2020, 2:52 AM · Restricted Project

Jul 21 2020

sdesmalen committed rG9bacf1588583: [AArch64][SVE] Fix PCS for functions taking/returning scalable types. (authored by sdesmalen).
[AArch64][SVE] Fix PCS for functions taking/returning scalable types.
Jul 21 2020, 8:15 AM
sdesmalen closed D84041: [AArch64][SVE] Fix PCS for functions taking/returning scalable types..
Jul 21 2020, 8:15 AM · Restricted Project
sdesmalen added a comment to D84044: [AArch64][SVE] Add missing unwind info for SVE registers..

I'm confused by the stack layout involved here. SVE registers should never be callee-save. The ABI says we're only supposed to save the low 64 bits.

Just in case you were looking at the wrong version of the spec, https://github.com/ARM-software/abi-aa/blob/master/aapcs64/aapcs64.rst#scalable-vector-registers contains the sections for SVE.

Jul 21 2020, 4:48 AM · Restricted Project
sdesmalen updated the diff for D84044: [AArch64][SVE] Add missing unwind info for SVE registers..

Use SmallString instead of SmallVector<uint8_t>.

Jul 21 2020, 4:48 AM · Restricted Project
sdesmalen updated the diff for D84043: [AArch64][SVE] Fix CFA calculation in presence of SVE objects..

Use SmallString instead of SmallVector<uint8_t>.

Jul 21 2020, 4:47 AM · Restricted Project
sdesmalen added inline comments to D70174: [AArch64][SVE] Correctly allocate scavenging slot in presence of SVE..
Jul 21 2020, 4:44 AM · Restricted Project
sdesmalen updated the diff for D70174: [AArch64][SVE] Correctly allocate scavenging slot in presence of SVE..
  • Changed condition to useFPForScavengingIndex
  • Added new test framelayout-scavengingslot.mir to guard that stack realignment (without SVE) allocates the scavenging slot in the right place.
  • Simplified patch, no need to refactor estimateSVEStackObjectOffsets
  • Renamed misleading/wrong title of this patch.
Jul 21 2020, 4:20 AM · Restricted Project