Page MenuHomePhabricator

dsanders (Daniel Sanders)
User

Projects

User does not belong to any projects.

User Details

User Since
Aug 19 2013, 3:30 PM (303 w, 6 d)

Recent Activity

Today

dsanders committed rG184c8ee92085: [globalisel] Fix iterator invalidation in the extload combines (authored by dsanders).
[globalisel] Fix iterator invalidation in the extload combines
Mon, Jun 17, 1:54 PM
dsanders committed rL363616: [globalisel] Fix iterator invalidation in the extload combines.
[globalisel] Fix iterator invalidation in the extload combines
Mon, Jun 17, 1:53 PM
dsanders closed D61813: [globalisel] Fix iterator invalidation in the extload combines.
Mon, Jun 17, 1:53 PM · Restricted Project
dsanders added a comment to D61321: [globalisel] Allow SrcOp to convert an APInt and render it as an immediate operand (MO.isImm() == true).

We could try to be heroic and use something stronger than unsigned for registers

Are you talking about using stronger types for registers just in the Builder interface? What would the usage look like? My big concern (besides the massive change this would take) is how verbose it would be to use the APIs.

I mean everywhere, but that's a huge project. I imagine a struct Register { unsigned X; isVirtual(); isPhysical() }

Mon, Jun 17, 1:53 PM · Restricted Project
dsanders updated the diff for D62423: [globalisel][legalizer] Attempt to write down the minimal legalization rules.

Clarify the legality of G_BITCAST where non-trivial bitcasts appear.

Mon, Jun 17, 1:27 PM · Restricted Project
dsanders added a comment to D62423: [globalisel][legalizer] Attempt to write down the minimal legalization rules.

Producer/Consumer type set and minimum rules for scalars are assuming that set of available integer scalars is the same as set of all available floating point scalars. This does not have to be the case.

Mon, Jun 17, 1:27 PM · Restricted Project

Thu, Jun 13

dsanders accepted D63286: [GlobalISel][IRTranslator] Don't add debug info to constants emitted into the entry block.

LGTM

Thu, Jun 13, 2:55 PM · debug-info, Restricted Project
dsanders added inline comments to D63286: [GlobalISel][IRTranslator] Don't add debug info to constants emitted into the entry block.
Thu, Jun 13, 11:20 AM · debug-info, Restricted Project

Mon, Jun 10

dsanders committed rGcd0bc478366d: Break a couple more false dependencies on target libraries (authored by dsanders).
Break a couple more false dependencies on target libraries
Mon, Jun 10, 4:50 PM
dsanders committed rL363011: Break a couple more false dependencies on target libraries.
Break a couple more false dependencies on target libraries
Mon, Jun 10, 4:49 PM
dsanders closed D62438: Break a couple more false dependencies on target libraries.
Mon, Jun 10, 4:49 PM · Restricted Project

Mon, Jun 3

dsanders added a comment to D61787: [GlobalISel Legalizer] Improve artifact combiner.

Ping.

Mon, Jun 3, 10:15 AM · Restricted Project

Fri, May 24

dsanders updated the diff for D62423: [globalisel][legalizer] Attempt to write down the minimal legalization rules.

Update to account for review comments so far except for the non-integral
pointers one for which I need more information.

Fri, May 24, 7:20 PM · Restricted Project
dsanders created D62438: Break a couple more false dependencies on target libraries.
Fri, May 24, 5:10 PM · Restricted Project
dsanders added inline comments to D62423: [globalisel][legalizer] Attempt to write down the minimal legalization rules.
Fri, May 24, 3:52 PM · Restricted Project
dsanders added a reviewer for D62423: [globalisel][legalizer] Attempt to write down the minimal legalization rules: qcolombet.
Fri, May 24, 1:34 PM · Restricted Project
dsanders created D62423: [globalisel][legalizer] Attempt to write down the minimal legalization rules.
Fri, May 24, 1:34 PM · Restricted Project

Thu, May 23

dsanders committed rG4cecdaa05f80: Fix BUILD_SHARED_LIBS builds after r361567 (authored by dsanders).
Fix BUILD_SHARED_LIBS builds after r361567
Thu, May 23, 7:18 PM
dsanders committed rL361591: Fix BUILD_SHARED_LIBS builds after r361567.
Fix BUILD_SHARED_LIBS builds after r361567
Thu, May 23, 7:13 PM
dsanders committed rG3e4acaabb9d9: Break false dependencies on target libraries (authored by dsanders).
Break false dependencies on target libraries
Thu, May 23, 4:01 PM
dsanders committed rL361567: Break false dependencies on target libraries.
Break false dependencies on target libraries
Thu, May 23, 4:00 PM
dsanders closed D62331: Break false dependencies on target libraries.
Thu, May 23, 4:00 PM · Restricted Project
dsanders requested changes to D61787: [GlobalISel Legalizer] Improve artifact combiner.

Hi Petar,

Thu, May 23, 3:58 PM · Restricted Project
dsanders updated the diff for D62338: [globalisel][legalizer] Combine G_TRUNC+G_MERGE_VALUES in artifact combiner.

G_MERGE_VALUES always has scalars
Fixed a else after return

Thu, May 23, 1:03 PM · Restricted Project
dsanders added inline comments to D62338: [globalisel][legalizer] Combine G_TRUNC+G_MERGE_VALUES in artifact combiner.
Thu, May 23, 12:08 PM · Restricted Project
dsanders created D62338: [globalisel][legalizer] Combine G_TRUNC+G_MERGE_VALUES in artifact combiner.
Thu, May 23, 11:52 AM · Restricted Project
dsanders updated the summary of D62331: Break false dependencies on target libraries.
Thu, May 23, 11:12 AM · Restricted Project
dsanders created D62331: Break false dependencies on target libraries.
Thu, May 23, 11:04 AM · Restricted Project

Tue, May 21

dsanders added inline comments to D61289: [globalisel] Add G_SEXT_INREG.
Tue, May 21, 7:13 PM · Restricted Project
dsanders updated the diff for D61289: [globalisel] Add G_SEXT_INREG.

Small comment fix

Tue, May 21, 7:08 PM · Restricted Project
dsanders added a comment to D61289: [globalisel] Add G_SEXT_INREG.

Sorry for the slow reply. I had to work on other things for a couple days.

Tue, May 21, 6:46 PM · Restricted Project

Mon, May 20

dsanders added inline comments to D62006: Add "llvm_unreachable" for function RegisterBankInfo::getRegBank.
Mon, May 20, 10:00 AM · Restricted Project

May 17 2019

dsanders accepted D62042: GlobalISel: Define integer min/max instructions.

LGTM

May 17 2019, 9:49 AM

May 10 2019

dsanders created D61813: [globalisel] Fix iterator invalidation in the extload combines.
May 10 2019, 4:56 PM · Restricted Project
dsanders added inline comments to D61289: [globalisel] Add G_SEXT_INREG.
May 10 2019, 2:58 PM · Restricted Project
dsanders updated the diff for D61289: [globalisel] Add G_SEXT_INREG.

Additional test and small nits

May 10 2019, 2:32 PM · Restricted Project
dsanders added a comment to D61289: [globalisel] Add G_SEXT_INREG.

Thanks for the explanations. I think you have some good points. Overall, it still looks to me like we're complicating things for backend writers and introducing a lot of subtle distinctions to keep in mind. It would be useful to hear what other people think about this.

May 10 2019, 1:43 PM · Restricted Project

May 9 2019

dsanders added a comment to D61289: [globalisel] Add G_SEXT_INREG.

Perfect. What about G_ZEXT_INREG since it is more efficient to narrow scalar G_ZEXT_INREG then bitwise instruction with some bit mask?

May 9 2019, 4:21 PM · Restricted Project

May 2 2019

dsanders added inline comments to D61289: [globalisel] Add G_SEXT_INREG.
May 2 2019, 2:38 PM · Restricted Project

May 1 2019

dsanders committed rG65dc24293f93: [globalisel] Update the legalizer documentation (authored by dsanders).
[globalisel] Update the legalizer documentation
May 1 2019, 9:53 AM
dsanders committed rL359705: [globalisel] Update the legalizer documentation.
[globalisel] Update the legalizer documentation
May 1 2019, 9:52 AM
dsanders closed D61273: [globalisel] Update the legalizer documentation.
May 1 2019, 9:52 AM · Restricted Project

Apr 30 2019

dsanders updated the diff for D61273: [globalisel] Update the legalizer documentation.

Added example and further explanation of the rule processing.
Subdivided into sections and other minor changes.

Apr 30 2019, 6:33 PM · Restricted Project
dsanders added inline comments to D61273: [globalisel] Update the legalizer documentation.
Apr 30 2019, 6:33 PM · Restricted Project
dsanders updated the diff for D61289: [globalisel] Add G_SEXT_INREG.

Expanded on the use of G_SEXT_INREG
Typos, nits, and other minor changes

Apr 30 2019, 2:16 PM · Restricted Project
dsanders added a comment to D61321: [globalisel] Allow SrcOp to convert an APInt and render it as an immediate operand (MO.isImm() == true).

For the use cases, I think this should just be int64_t instead of APInt

Apr 30 2019, 1:42 PM · Restricted Project
dsanders added a comment to D61289: [globalisel] Add G_SEXT_INREG.

Is the intention to now use this instead of the current system of relying on the cleanup of legalization artifacts?

Apr 30 2019, 1:34 PM · Restricted Project
dsanders added a child revision for D61321: [globalisel] Allow SrcOp to convert an APInt and render it as an immediate operand (MO.isImm() == true): D61289: [globalisel] Add G_SEXT_INREG.
Apr 30 2019, 9:43 AM · Restricted Project
dsanders added a parent revision for D61289: [globalisel] Add G_SEXT_INREG: D61321: [globalisel] Allow SrcOp to convert an APInt and render it as an immediate operand (MO.isImm() == true).
Apr 30 2019, 9:43 AM · Restricted Project
dsanders created D61321: [globalisel] Allow SrcOp to convert an APInt and render it as an immediate operand (MO.isImm() == true).
Apr 30 2019, 9:43 AM · Restricted Project

Apr 29 2019

dsanders created D61290: globalisel][aarch64] Make G_SEXT_INREG legal from all bit sizes to s32/s64.
Apr 29 2019, 6:38 PM · Restricted Project
dsanders added a child revision for D61289: [globalisel] Add G_SEXT_INREG: D61290: globalisel][aarch64] Make G_SEXT_INREG legal from all bit sizes to s32/s64.
Apr 29 2019, 6:38 PM · Restricted Project
dsanders added inline comments to D61289: [globalisel] Add G_SEXT_INREG.
Apr 29 2019, 5:31 PM · Restricted Project
dsanders created D61289: [globalisel] Add G_SEXT_INREG.
Apr 29 2019, 5:31 PM · Restricted Project
dsanders added inline comments to D56957: GlobalISel: Handle some odd splits in fewerElementsVector.
Apr 29 2019, 3:38 PM
dsanders added inline comments to D56957: GlobalISel: Handle some odd splits in fewerElementsVector.
Apr 29 2019, 3:08 PM
dsanders added inline comments to D56957: GlobalISel: Handle some odd splits in fewerElementsVector.
Apr 29 2019, 2:46 PM
dsanders created D61273: [globalisel] Update the legalizer documentation.
Apr 29 2019, 12:04 PM · Restricted Project
dsanders committed rG8f079844d012: [globalisel] Improve Legalizer debug output (authored by dsanders).
[globalisel] Improve Legalizer debug output
Apr 29 2019, 11:44 AM
dsanders committed rL359481: [globalisel] Improve Legalizer debug output.
[globalisel] Improve Legalizer debug output
Apr 29 2019, 11:43 AM

Apr 16 2019

dsanders accepted D60799: Add a getSizeInBits() accessor to MachineMemOperand. NFC..

LGTM

Apr 16 2019, 3:41 PM · Restricted Project

Apr 5 2019

dsanders committed rGab8c60867b6d: [globalisel] Allow combiners to query legality (authored by dsanders).
[globalisel] Allow combiners to query legality
Apr 5 2019, 2:23 PM
dsanders committed rL357820: [globalisel] Allow combiners to query legality.
[globalisel] Allow combiners to query legality
Apr 5 2019, 2:23 PM
dsanders committed rGd7489c38f96d: [globalisel] Support 3-type legalForCartesianProduct() (authored by dsanders).
[globalisel] Support 3-type legalForCartesianProduct()
Apr 5 2019, 1:46 PM
dsanders committed rL357815: [globalisel] Support 3-type legalForCartesianProduct().
[globalisel] Support 3-type legalForCartesianProduct()
Apr 5 2019, 1:45 PM

Mar 27 2019

dsanders committed rG495156dc6acf: test/CodeGen/X86/codegen-prepare-replacephi.mir requires a default triple (authored by dsanders).
test/CodeGen/X86/codegen-prepare-replacephi.mir requires a default triple
Mar 27 2019, 1:46 PM
dsanders committed rL357122: test/CodeGen/X86/codegen-prepare-replacephi.mir requires a default triple.
test/CodeGen/X86/codegen-prepare-replacephi.mir requires a default triple
Mar 27 2019, 1:43 PM

Mar 25 2019

dsanders added inline comments to D59716: [ConstantRange] Add full() + empty() named constructors (NFC).
Mar 25 2019, 6:51 PM · Restricted Project

Mar 22 2019

dsanders committed rGef8761fd3b0f: Fix non-determinism in Reassociate caused by address coincidences (authored by dsanders).
Fix non-determinism in Reassociate caused by address coincidences
Mar 22 2019, 1:17 PM
dsanders committed rL356803: Fix non-determinism in Reassociate caused by address coincidences.
Fix non-determinism in Reassociate caused by address coincidences
Mar 22 2019, 1:15 PM
dsanders closed D59401: Fix non-determinism in Reassociate caused by address coincidences.
Mar 22 2019, 1:15 PM · Restricted Project
dsanders updated the summary of D59401: Fix non-determinism in Reassociate caused by address coincidences.
Mar 22 2019, 12:55 PM · Restricted Project

Mar 14 2019

dsanders created D59401: Fix non-determinism in Reassociate caused by address coincidences.
Mar 14 2019, 6:11 PM · Restricted Project

Mar 13 2019

dsanders accepted D59285: [ResetMachineFunctionPass] Add visited functions statistics info.

LGTM

Mar 13 2019, 11:13 AM · Restricted Project

Mar 1 2019

dsanders committed rGc365cee6582c: [tblgen] Track CodeInit origins when possible (authored by dsanders).
[tblgen] Track CodeInit origins when possible
Mar 1 2019, 4:16 PM
dsanders committed rL355245: [tblgen] Track CodeInit origins when possible.
[tblgen] Track CodeInit origins when possible
Mar 1 2019, 4:12 PM
dsanders closed D58141: [tblgen] Track CodeInit origins when possible.
Mar 1 2019, 4:12 PM · Restricted Project

Feb 22 2019

dsanders committed rG6ac16e91f6df: Try again to fix memory leak in r354692 (authored by dsanders).
Try again to fix memory leak in r354692
Feb 22 2019, 7:25 PM
dsanders committed rL354719: Try again to fix memory leak in r354692.
Try again to fix memory leak in r354692
Feb 22 2019, 7:25 PM
dsanders committed rGf250cf8b4106: Fix memory leak in r354692 (authored by dsanders).
Fix memory leak in r354692
Feb 22 2019, 5:16 PM
dsanders committed rL354712: Fix memory leak in r354692.
Fix memory leak in r354692
Feb 22 2019, 5:16 PM
dsanders committed rG07cda257f84b: Restore ability for C++ API users to Enable IPRA. (authored by dsanders).
Restore ability for C++ API users to Enable IPRA.
Feb 22 2019, 12:59 PM
dsanders committed rL354692: Restore ability for C++ API users to Enable IPRA..
Restore ability for C++ API users to Enable IPRA.
Feb 22 2019, 12:59 PM
dsanders closed D38043: Restore ability for C++ API users to Enable IPRA..
Feb 22 2019, 12:58 PM · Restricted Project

Feb 21 2019

dsanders added a comment to D58088: [adt] Add raw_pointer_iterator to iterate over std::unique_ptr<> collections.

That looks simple enough. I haven't gone through the spec but something as simple as:

namespace llvm {
template<class Ptr>
auto to_address(const Ptr &P) noexcept { return P.operator->(); }
template<class T>
constexpr T* to_address(T* P) noexcept { return P; }
}

seems to cover the majority of it (and definitely the bits I need). It's just the std::pointer_traits<Ptr>::to_address(p) based implementation of the fancy pointer overload that's missing.

If it is named to_address and intended to convert any pointer to a raw pointer then it should be:

namespace llvm {
template<class T>
constexpr T* to_address(T* p) noexcept { return p; }
template<class Ptr>
typename std::pointer_traits<Ptr>::element_type* to_address(const Ptr &p) noexcept { return llvm::to_address(p.operator->()); }
}
Feb 21 2019, 1:29 PM · Restricted Project
dsanders added a comment to D58088: [adt] Add raw_pointer_iterator to iterate over std::unique_ptr<> collections.

I just noticed a big simplification that doesn't need C++20 features or new classes. This:

template <typename WrappedIteratorT,
          typename T1 = typename std::remove_reference<decltype(**std::declval<WrappedIteratorT>())>::type,
          typename T2 = typename std::add_pointer<T1>::type>
using raw_pointer_iterator = pointer_iterator<pointee_iterator<WrappedIteratorT, T1>, T2>;

is functionally equivalent to the raw_pointer_iterator in this patch. pointee_iterator derefs the unique_ptr, while pointer_iterator produces the raw_pointer. If that version sounds good to you then I think it makes sense to revert the llvm::to_address() patch, switch to this implementation and fold this into the GISel Combiner patch as at that point it's too trivial to warrant a dedicated patch. Does that sound good?

Beyond probably some annoying compile-time complexity/overhead (& maybe similar debugging confusion with the extra layers of abstraction) - I'm guessing this wouldn't support null pointers (because pointee_iterator probably dereferences unconditionally?) which would be a bit problematic, I'd reckon?

Feb 21 2019, 1:25 PM · Restricted Project

Feb 20 2019

dsanders added a comment to D58088: [adt] Add raw_pointer_iterator to iterate over std::unique_ptr<> collections.

I just noticed a big simplification that doesn't need C++20 features or new classes. This:

template <typename WrappedIteratorT,
          typename T1 = typename std::remove_reference<decltype(**std::declval<WrappedIteratorT>())>::type,
          typename T2 = typename std::add_pointer<T1>::type>
using raw_pointer_iterator = pointer_iterator<pointee_iterator<WrappedIteratorT, T1>, T2>;

is functionally equivalent to the raw_pointer_iterator in this patch. pointee_iterator derefs the unique_ptr, while pointer_iterator produces the raw_pointer. If that version sounds good to you then I think it makes sense to revert the llvm::to_address() patch, switch to this implementation and fold this into the GISel Combiner patch as at that point it's too trivial to warrant a dedicated patch. Does that sound good?

Feb 20 2019, 1:11 PM · Restricted Project
dsanders committed rG9e302c6231ea: Add partial implementation of std::to_address() as llvm::to_address() (authored by dsanders).
Add partial implementation of std::to_address() as llvm::to_address()
Feb 20 2019, 10:09 AM
dsanders committed rL354491: Add partial implementation of std::to_address() as llvm::to_address().
Add partial implementation of std::to_address() as llvm::to_address()
Feb 20 2019, 10:08 AM
dsanders closed D58421: Add partial implementation of std::to_address() as llvm::to_address().
Feb 20 2019, 10:08 AM · Restricted Project
dsanders added inline comments to D58421: Add partial implementation of std::to_address() as llvm::to_address().
Feb 20 2019, 10:01 AM · Restricted Project
dsanders updated the diff for D58421: Add partial implementation of std::to_address() as llvm::to_address().

Late bound return, remove noexcept, and update comments to match

Feb 20 2019, 10:01 AM · Restricted Project

Feb 19 2019

dsanders added a comment to D58088: [adt] Add raw_pointer_iterator to iterate over std::unique_ptr<> collections.

The std::to_address implementation is in https://reviews.llvm.org/D58421. I had to add another limitation to it as it accidentally used C++14 which prevents the deduction of the return type.

Feb 19 2019, 5:55 PM · Restricted Project
dsanders created D58421: Add partial implementation of std::to_address() as llvm::to_address().
Feb 19 2019, 5:55 PM · Restricted Project
dsanders committed rGee95e8782df9: Fix builds with llvm/runtimes/compiler-rt after r354365 (authored by dsanders).
Fix builds with llvm/runtimes/compiler-rt after r354365
Feb 19 2019, 2:03 PM
dsanders committed rL354389: Fix builds with llvm/runtimes/compiler-rt after r354365.
Fix builds with llvm/runtimes/compiler-rt after r354365
Feb 19 2019, 2:02 PM
dsanders committed rGdaf777b20646: Fix builds for older macOS deployment targets after r354365 (authored by dsanders).
Fix builds for older macOS deployment targets after r354365
Feb 19 2019, 11:45 AM
dsanders committed rL354374: Fix builds for older macOS deployment targets after r354365.
Fix builds for older macOS deployment targets after r354365
Feb 19 2019, 11:44 AM
dsanders committed rGe1414d176048: Annotate timeline in Instruments with passes and other timed regions. (authored by dsanders).
Annotate timeline in Instruments with passes and other timed regions.
Feb 19 2019, 10:19 AM
dsanders committed rL354365: Annotate timeline in Instruments with passes and other timed regions..
Annotate timeline in Instruments with passes and other timed regions.
Feb 19 2019, 10:18 AM