dneilson (Daniel Neilson)
Software Engineer

Projects

User does not belong to any projects.

User Details

User Since
Apr 26 2017, 6:42 AM (16 w, 6 d)

Previously worked with IBM for 3.5 years on the optimizer for the XL Compiler on p-Series hardware; notably, I was heavily involved in implementing support for OpenMP 4.x GPU offloading.

Currently at Azul Systems working on the LLVM-based JIT in the Zing JVM.

Recent Activity

Thu, Aug 17

dneilson added a comment to D35511: Add element-atomic mem intrinsic canary tests for Thread Sanitizer..

ping

Thu, Aug 17, 10:54 AM
dneilson abandoned D34883: Check for MemIntrinsic::isElementAtomic() in InstCombine.

Closing. Discussion & path forward will be decided in the RFC discussion hanging off of http://lists.llvm.org/pipermail/llvm-dev/2017-August/116589.html

Thu, Aug 17, 8:35 AM
dneilson abandoned D34629: Add isElementAtomic query method to MemInstrinsic class..

Closing. Discussion & path forward will be decided in the RFC discussion hanging off of http://lists.llvm.org/pipermail/llvm-dev/2017-August/116589.html

Thu, Aug 17, 8:35 AM

Thu, Jul 27

dneilson committed rL309291: All libcalls should be considered to be GC-leaf functions..
All libcalls should be considered to be GC-leaf functions.
Thu, Jul 27, 9:50 AM
dneilson closed D35840: All libcalls should be considered to be GC-leaf functions. by committing rL309291: All libcalls should be considered to be GC-leaf functions..
Thu, Jul 27, 9:50 AM
dneilson added a comment to D35840: All libcalls should be considered to be GC-leaf functions..
In D35840#822809, @anna wrote:

This change looks good to me. However, I would suggest separating out the PlaceSafepoints (and it's testcase) change from the RewriteStatepointsForGC change. We don't use placeSafepoint anymore, so we should perhaps just deprecate it upstream, instead of fixing it.
@reames: What do you suggest?

Thu, Jul 27, 8:27 AM

Tue, Jul 25

dneilson updated the diff for D35840: All libcalls should be considered to be GC-leaf functions..

clang-format patch

Tue, Jul 25, 7:44 AM
dneilson created D35840: All libcalls should be considered to be GC-leaf functions..
Tue, Jul 25, 7:39 AM

Jul 18 2017

dneilson added a comment to D35522: Move Runtime libcall definitions to a .def file.

This looks good to me -- very clean. I'm quite new to LLVM, so I don't feel comfortable giving this a go-ahead; I'll leave that to someone more experienced.

Jul 18 2017, 9:14 AM

Jul 17 2017

dneilson committed rL308250: Add element-atomic mem intrinsic canary tests for Efficiency Sanitizer..
Add element-atomic mem intrinsic canary tests for Efficiency Sanitizer.
Jul 17 2017, 6:07 PM
dneilson committed rL308251: Add element-atomic mem intrinsic canary tests for Memory Sanitizer..
Add element-atomic mem intrinsic canary tests for Memory Sanitizer.
Jul 17 2017, 6:07 PM
dneilson closed D35510: Add element-atomic mem intrinsic canary tests for Memory Sanitizer. by committing rL308251: Add element-atomic mem intrinsic canary tests for Memory Sanitizer..
Jul 17 2017, 6:07 PM
dneilson closed D35508: Add element-atomic mem intrinsic canary tests for Efficiency Sanitizer. by committing rL308250: Add element-atomic mem intrinsic canary tests for Efficiency Sanitizer..
Jul 17 2017, 6:07 PM
dneilson committed rL308249: Add element-atomic mem intrinsic canary tests for Dataflow Sanitizer..
Add element-atomic mem intrinsic canary tests for Dataflow Sanitizer.
Jul 17 2017, 6:07 PM
dneilson committed rL308248: Add element-atomic mem intrinsic canary tests for Address Sanitizer..
Add element-atomic mem intrinsic canary tests for Address Sanitizer.
Jul 17 2017, 6:07 PM
dneilson closed D35507: Add element-atomic mem intrinsic canary tests for Dataflow Sanitizer. by committing rL308249: Add element-atomic mem intrinsic canary tests for Dataflow Sanitizer..
Jul 17 2017, 6:07 PM
dneilson committed rL308247: Add element-atomic mem intrinsic canary tests for InstCombine..
Add element-atomic mem intrinsic canary tests for InstCombine.
Jul 17 2017, 6:07 PM
dneilson closed D35505: Add element-atomic mem intrinsic canary tests for Address Sanitizer. by committing rL308248: Add element-atomic mem intrinsic canary tests for Address Sanitizer..
Jul 17 2017, 6:07 PM
dneilson closed D35502: Add element-atomic mem intrinsic canary tests for InstCombine. by committing rL308247: Add element-atomic mem intrinsic canary tests for InstCombine..
Jul 17 2017, 6:07 PM
dneilson created D35511: Add element-atomic mem intrinsic canary tests for Thread Sanitizer..
Jul 17 2017, 2:33 PM
dneilson created D35510: Add element-atomic mem intrinsic canary tests for Memory Sanitizer..
Jul 17 2017, 2:31 PM
dneilson updated the summary of D35507: Add element-atomic mem intrinsic canary tests for Dataflow Sanitizer..
Jul 17 2017, 2:28 PM
dneilson created D35508: Add element-atomic mem intrinsic canary tests for Efficiency Sanitizer..
Jul 17 2017, 2:16 PM
dneilson created D35507: Add element-atomic mem intrinsic canary tests for Dataflow Sanitizer..
Jul 17 2017, 2:10 PM
dneilson created D35505: Add element-atomic mem intrinsic canary tests for Address Sanitizer..
Jul 17 2017, 2:03 PM
dneilson updated the diff for D35502: Add element-atomic mem intrinsic canary tests for InstCombine..

Header comment was ambiguous about memcpy/memmove being element atomic forms.

Jul 17 2017, 1:57 PM
dneilson updated the summary of D35502: Add element-atomic mem intrinsic canary tests for InstCombine..
Jul 17 2017, 1:55 PM
dneilson updated the diff for D35502: Add element-atomic mem intrinsic canary tests for InstCombine..

Refactor tests to make intent clearer.

Jul 17 2017, 1:46 PM
dneilson updated the summary of D35502: Add element-atomic mem intrinsic canary tests for InstCombine..
Jul 17 2017, 1:29 PM
dneilson created D35502: Add element-atomic mem intrinsic canary tests for InstCombine..
Jul 17 2017, 1:16 PM

Jul 12 2017

dneilson committed rL307854: Add element atomic memset intrinsic.
Add element atomic memset intrinsic
Jul 12 2017, 2:58 PM
dneilson closed D34885: Add element atomic memset intrinsic by committing rL307854: Add element atomic memset intrinsic.
Jul 12 2017, 2:57 PM
dneilson updated the diff for D34885: Add element atomic memset intrinsic.
  • rebase
  • add entries to WebAssembly runtime lib lists due to change in RTLIB::Libcall enum.
Jul 12 2017, 2:27 PM
dneilson committed rL307831: Fix to web assembly lib call list.
Fix to web assembly lib call list
Jul 12 2017, 12:24 PM
dneilson committed rL307796: Add element atomic memmove intrinsic.
Add element atomic memmove intrinsic
Jul 12 2017, 8:26 AM
dneilson closed D34884: Add element atomic memmove intrinsic by committing rL307796: Add element atomic memmove intrinsic.
Jul 12 2017, 8:26 AM

Jul 5 2017

dneilson added a comment to D34885: Add element atomic memset intrinsic.

I'm also a little skeptical this is a good idea; the "obvious" intrinsic to provide is one where the size of the value is equal to the atomic element size. The only reason to prefer this version is to slightly reduce the amount of work required to port existing transforms, and that doesn't seem compelling.

Jul 5 2017, 11:18 AM

Jun 30 2017

dneilson added a comment to D34629: Add isElementAtomic query method to MemInstrinsic class..

Oh, I see...

What's the advantage of "I->isElementAtomic()" over "isa<ElementUnorderedAtomicMemCpyInst>(I)"?

Not sure it makes sense to make ElementUnorderedAtomicMemCpyInst inherit from MemCpyInst; it's likely to be confusing that a MemCpyInst might not really be a memcpy.

Jun 30 2017, 12:26 PM
dneilson added a comment to D34885: Add element atomic memset intrinsic.

Codewise, this looks fine and clearly implements the semantics you document. However, I wondering if those are the most useful semantics. Once we answer the design question below, if we still want to go in this direction the patch LGTM.

This can be used to represent any pattern memset currently can. In particular it does handle larger elements with repeating bytewise values. It does not full cover the Arrays.fill case though because a value such as "i32 15" can't be represented. I could see an argument in favour of handling that case entirely separately or all of it in a single family of intrinsics. What do you think?

Jun 30 2017, 8:43 AM
dneilson added reviewers for D34883: Check for MemIntrinsic::isElementAtomic() in InstCombine: reames, anna, skatkov, mkazantsev.
Jun 30 2017, 7:42 AM
dneilson updated the summary of D34883: Check for MemIntrinsic::isElementAtomic() in InstCombine.
Jun 30 2017, 7:41 AM
dneilson added dependencies for D34883: Check for MemIntrinsic::isElementAtomic() in InstCombine: D34885: Add element atomic memset intrinsic, D34884: Add element atomic memmove intrinsic, D34629: Add isElementAtomic query method to MemInstrinsic class..
Jun 30 2017, 7:40 AM
dneilson added a dependent revision for D34629: Add isElementAtomic query method to MemInstrinsic class.: D34883: Check for MemIntrinsic::isElementAtomic() in InstCombine.
Jun 30 2017, 7:40 AM
dneilson added a dependent revision for D34885: Add element atomic memset intrinsic: D34883: Check for MemIntrinsic::isElementAtomic() in InstCombine.
Jun 30 2017, 7:40 AM
dneilson added a dependent revision for D34884: Add element atomic memmove intrinsic: D34883: Check for MemIntrinsic::isElementAtomic() in InstCombine.
Jun 30 2017, 7:40 AM
dneilson created D34885: Add element atomic memset intrinsic.
Jun 30 2017, 7:39 AM
dneilson created D34884: Add element atomic memmove intrinsic.
Jun 30 2017, 7:39 AM
dneilson added a comment to D34629: Add isElementAtomic query method to MemInstrinsic class..

Could you include one of the users of this function in the patch so it's clear how you're intending to use it?

I think this looks okay.

Jun 30 2017, 7:39 AM
dneilson created D34883: Check for MemIntrinsic::isElementAtomic() in InstCombine.
Jun 30 2017, 7:38 AM

Jun 29 2017

dneilson committed rL306681: Restore original intent of memset instcombine test.
Restore original intent of memset instcombine test
Jun 29 2017, 7:21 AM
dneilson closed D34642: Restore original intent of memset instcombine test by committing rL306681: Restore original intent of memset instcombine test.
Jun 29 2017, 7:21 AM
dneilson committed rL306679: Explicitly check for presence of correct results in instcombine memmove test.
Explicitly check for presence of correct results in instcombine memmove test
Jun 29 2017, 7:18 AM
dneilson closed D34645: Explicitly check for presence of correct results in instcombine memmove test.
Jun 29 2017, 7:18 AM

Jun 27 2017

dneilson updated the diff for D34642: Restore original intent of memset instcombine test.

Use CHECK-NEXT to verify test contents.

Jun 27 2017, 7:08 AM

Jun 26 2017

dneilson created D34645: Explicitly check for presence of correct results in instcombine memmove test.
Jun 26 2017, 2:06 PM
dneilson updated the diff for D34642: Restore original intent of memset instcombine test.

Add CHECK-NOT to ensure that the memset calls have been removed.

Jun 26 2017, 1:32 PM
dneilson added inline comments to D34642: Restore original intent of memset instcombine test.
Jun 26 2017, 1:26 PM
dneilson created D34642: Restore original intent of memset instcombine test.
Jun 26 2017, 1:14 PM
dneilson created D34629: Add isElementAtomic query method to MemInstrinsic class..
Jun 26 2017, 9:08 AM

Jun 16 2017

dneilson committed rL305558: [Atomics] Rename and change prototype for atomic memcpy intrinsic.
[Atomics] Rename and change prototype for atomic memcpy intrinsic
Jun 16 2017, 7:45 AM
dneilson closed D33240: [Atomics] Rename and change prototype for atomic memcpy intrinsic by committing rL305558: [Atomics] Rename and change prototype for atomic memcpy intrinsic.
Jun 16 2017, 7:44 AM
dneilson updated the diff for D33240: [Atomics] Rename and change prototype for atomic memcpy intrinsic.
  • rebase
Jun 16 2017, 7:07 AM

Jun 12 2017

dneilson committed rL305189: Const correctness for TTI::getRegisterBitWidth.
Const correctness for TTI::getRegisterBitWidth
Jun 12 2017, 7:23 AM
dneilson closed D33903: Const correctness for TTI::getRegisterBitWidth by committing rL305189: Const correctness for TTI::getRegisterBitWidth.
Jun 12 2017, 7:22 AM

Jun 8 2017

dneilson added inline comments to D33756: [RS4GC] Drop invalid metadata after pointers are relocated.
Jun 8 2017, 8:40 AM
dneilson added a comment to D34025: [SCEV] Teach SCEVExpander to expand BinPow.

Have you looked at what happens with addition? i.e.

Jun 8 2017, 7:35 AM

Jun 7 2017

dneilson added inline comments to D33756: [RS4GC] Drop invalid metadata after pointers are relocated.
Jun 7 2017, 8:54 AM
dneilson added inline comments to D33240: [Atomics] Rename and change prototype for atomic memcpy intrinsic.
Jun 7 2017, 7:57 AM

Jun 6 2017

dneilson updated the diff for D33240: [Atomics] Rename and change prototype for atomic memcpy intrinsic.
  • Loop idiom patch was dropped, so update loop idiom recognition as well.
Jun 6 2017, 1:03 PM
dneilson updated the diff for D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
  • Default max element size to 0
Jun 6 2017, 7:45 AM
dneilson added inline comments to D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
Jun 6 2017, 6:31 AM
dneilson added inline comments to D33240: [Atomics] Rename and change prototype for atomic memcpy intrinsic.
Jun 6 2017, 6:29 AM

Jun 5 2017

dneilson updated the diff for D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
  • Abstract the max element size for atomic memory intrinsics into the TTI.
Jun 5 2017, 1:34 PM
dneilson added a comment to D33903: Const correctness for TTI::getRegisterBitWidth.

Please note that I do not have commit access, yet. So, if this looks good then please upstream.

Jun 5 2017, 11:27 AM
dneilson created D33903: Const correctness for TTI::getRegisterBitWidth.
Jun 5 2017, 11:26 AM

Jun 1 2017

dneilson added inline comments to D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
Jun 1 2017, 7:55 AM

May 31 2017

dneilson updated the diff for D33240: [Atomics] Rename and change prototype for atomic memcpy intrinsic.
  • Remove volatile arg from intrinsic.
  • Add check to verifier to ensure that constant length is a multiple of element size & add corresponding test.
May 31 2017, 2:33 PM
dneilson added inline comments to D33240: [Atomics] Rename and change prototype for atomic memcpy intrinsic.
May 31 2017, 12:29 PM
dneilson added inline comments to D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
May 31 2017, 12:23 PM
dneilson updated the diff for D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
  • Remove use of RTLIB in loop idiom. Results in a circular dependence in libs, so we can't use it there. Instead of querying RTLIB for allowable store sizes, we query the scalar register bit width from TTI.
May 31 2017, 12:16 PM
dneilson updated the diff for D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
  • Rebase to ToT.
  • clang-format (no-op)
May 31 2017, 8:35 AM
dneilson added inline comments to D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
May 31 2017, 8:07 AM

May 29 2017

dneilson updated the diff for D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
  • Adding tests to check permutations of alignment validity.
  • Adding tests for element sizes beyond 1 byte.
  • Clarify some conditional rejections in isLegalStore()
May 29 2017, 9:32 AM
dneilson added inline comments to D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
May 29 2017, 7:23 AM

May 26 2017

dneilson added a comment to D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
In D33243#765659, @anna wrote:
  • Remove dependence on D33240 by expanding to the current, existing, form of atomic.memcpy.

Do you mean the intrinsic that was already added? If so, could you please run make check all to confirm that all tests pass.

May 26 2017, 11:01 AM
dneilson updated the diff for D33240: [Atomics] Rename and change prototype for atomic memcpy intrinsic.
  • Another iteration on the intrinsic prototype. I've removed the align, and dest/src_unordered arguments.
    • Having align both as arg attributes and as an arg could cause challenges if we need to resolve a difference, and it is the desired future direction for intrinsics.
    • Upon further thought, and digging into where passes would have to be made aware of this intrinsic -- I'm no longer convinced about the value of the separate dest_unordered/src_unordered args.
      • It seems sufficient to have the semantics of the intrinsic being that all loads/stores are unordered atomic; we can still "promote" idioms that mix, say, unordered loads with simple stores.
      • Any library implementation will just use unordered atomic loads & stores throughout, anyways.
      • There will be a side-effect of promoting simple ops to unordered-atomic if we recognize a loop idiom, and then later lower it into loads/stores. The tradeoff is that it should be easier to work with the intrinsic in passes.
      • The only value that I can see in having the separate dest_unordered/src_unordered args is that in lowering passes that change the intrinsic into explicit loads/stores we wouldn't "promote" a simple op into an unordered-atomic op.
May 26 2017, 8:44 AM
dneilson added a comment to D33355: [IR] Add additional addParamAttr/removeParamAttr to AttributeList API.

ping -- To the reviewers: is this good-to-go as-is? If so, can someone please approve and push upstream (I do not have commit access).

May 26 2017, 6:06 AM

May 25 2017

dneilson removed a dependency for D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy: D33240: [Atomics] Rename and change prototype for atomic memcpy intrinsic.
May 25 2017, 9:39 AM
dneilson removed a dependent revision for D33240: [Atomics] Rename and change prototype for atomic memcpy intrinsic: D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
May 25 2017, 9:39 AM
dneilson updated the diff for D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
  • Remove dependence on D33240 by expanding to the current, existing, form of atomic.memcpy.
May 25 2017, 9:39 AM

May 24 2017

dneilson updated the diff for D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
  • Refining logic regarding which store sizes to allow for the unordered atomic memcpy.
  • Add some additional tests -- simple loads/stores with no alignment, and memset_pattern
May 24 2017, 7:45 AM
dneilson added inline comments to D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
May 24 2017, 7:42 AM
dneilson updated the diff for D33355: [IR] Add additional addParamAttr/removeParamAttr to AttributeList API.

rnk comments + rebase

May 24 2017, 7:14 AM

May 23 2017

dneilson updated the diff for D33355: [IR] Add additional addParamAttr/removeParamAttr to AttributeList API.

Addressing comments:

  • Removed the addAttribute(Ctx, Indices, Attribute) method from AttributeList, and replaces with one that operates on a single Index instead of a list.
  • Cleaned up the wording on all of the add/remove attribute comments referring to return values being immutable
May 23 2017, 11:45 AM
dneilson added inline comments to D33355: [IR] Add additional addParamAttr/removeParamAttr to AttributeList API.
May 23 2017, 10:46 AM
dneilson added inline comments to D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.
May 23 2017, 8:01 AM
dneilson added inline comments to D33355: [IR] Add additional addParamAttr/removeParamAttr to AttributeList API.
May 23 2017, 7:04 AM

May 19 2017

dneilson updated the diff for D33240: [Atomics] Rename and change prototype for atomic memcpy intrinsic.

Addressing some comments -- use of getters, adding assertions to setters, and some minor wording changes to LangRef.

May 19 2017, 1:27 PM
dneilson updated the diff for D33243: [Atomics][LoopIdiom] Recognize unordered atomic memcpy.

Addressing most concerns.

May 19 2017, 12:15 PM
dneilson updated the summary of D33355: [IR] Add additional addParamAttr/removeParamAttr to AttributeList API.
May 19 2017, 11:46 AM