carter (Carter Schonwald)
User

Projects

User Details

User Since
Jun 5 2014, 11:10 PM (231 w, 5 d)

Recent Activity

Mon, Nov 5

carter added a comment to D4780: a naive but simple fix to resolve trac ticket 15207, because currently stgcrun.c when compiled with gcc and then assembled with clang/apple as/llvm assembler fails..

worth noting that https://phabricator.haskell.org/D4781 is the better fix

Mon, Nov 5, 12:53 PM
carter updated the diff for D4780: a naive but simple fix to resolve trac ticket 15207, because currently stgcrun.c when compiled with gcc and then assembled with clang/apple as/llvm assembler fails..

yes

Mon, Nov 5, 12:52 PM

Sat, Oct 27

carter added a comment to D4780: a naive but simple fix to resolve trac ticket 15207, because currently stgcrun.c when compiled with gcc and then assembled with clang/apple as/llvm assembler fails..

instead of all mac builds

Sat, Oct 27, 2:50 PM
carter added a comment to D4780: a naive but simple fix to resolve trac ticket 15207, because currently stgcrun.c when compiled with gcc and then assembled with clang/apple as/llvm assembler fails..

we could set it to only be MAC AND GCC

Sat, Oct 27, 2:50 PM
carter added a comment to D4780: a naive but simple fix to resolve trac ticket 15207, because currently stgcrun.c when compiled with gcc and then assembled with clang/apple as/llvm assembler fails..

@bgamari can we revisit this:

Sat, Oct 27, 2:48 PM

Fri, Oct 26

carter updated the diff for D5268: reference implementation of moving Addr (lifted address data type) from Primitive into Base, keeping the operations that dont depend on Prim, or PrimMonad or the MutableByteArray type in primitive.
  • tweak language in one documentation comment
Fri, Oct 26, 1:34 PM
carter updated the diff for D5268: reference implementation of moving Addr (lifted address data type) from Primitive into Base, keeping the operations that dont depend on Prim, or PrimMonad or the MutableByteArray type in primitive.
  • fixing up imports
Fri, Oct 26, 1:28 PM
carter updated the diff for D5268: reference implementation of moving Addr (lifted address data type) from Primitive into Base, keeping the operations that dont depend on Prim, or PrimMonad or the MutableByteArray type in primitive.
  • remove the memory manipulation pieces
Fri, Oct 26, 1:22 PM
carter updated the diff for D5268: reference implementation of moving Addr (lifted address data type) from Primitive into Base, keeping the operations that dont depend on Prim, or PrimMonad or the MutableByteArray type in primitive.
  • remove the memory manipulation pieces
Fri, Oct 26, 1:21 PM
carter added a comment to D5268: reference implementation of moving Addr (lifted address data type) from Primitive into Base, keeping the operations that dont depend on Prim, or PrimMonad or the MutableByteArray type in primitive.

need to fix the unsafePrimToPrim $ copyBytes and unsafePrimToPrim $ moveBytes codes

Fri, Oct 26, 12:17 PM
carter added a comment to D5268: reference implementation of moving Addr (lifted address data type) from Primitive into Base, keeping the operations that dont depend on Prim, or PrimMonad or the MutableByteArray type in primitive.

also i'm not sure what code would actually benefit from this addition in base / ghc / user space,

Fri, Oct 26, 12:14 PM
carter added a comment to D5268: reference implementation of moving Addr (lifted address data type) from Primitive into Base, keeping the operations that dont depend on Prim, or PrimMonad or the MutableByteArray type in primitive.

i full expect it to not type check because I put this together on my little laptop so i didn't run a build, but wanted to just get this out ther

Fri, Oct 26, 12:09 PM
carter created D5268: reference implementation of moving Addr (lifted address data type) from Primitive into Base, keeping the operations that dont depend on Prim, or PrimMonad or the MutableByteArray type in primitive.
Fri, Oct 26, 12:08 PM

Jul 24 2018

carter requested changes to D5006: Add support for Int16# and Word16#.

This just looks like Michal T's patch ... not the work for simd ONTOP of his patch ... i think you did the arc command line interface wrong...

Jul 24 2018, 5:26 PM

Jul 9 2018

carter added a comment to D4813: [WIP] Add support for SIMD operations in the NCG.

just did a first passs on the latest changes, though only made my way through the first 50% :)

Jul 9 2018, 2:03 PM

Jul 6 2018

carter added a comment to D4922: Enrich Xmm register with Length Width and datatype information.

Abi: This seems to be because we currently conflate the "type/represenation" with the physical registers at the CMM level ?

Jul 6 2018, 3:29 PM

Jun 27 2018

carter added a comment to D4882: WIP Add support for SIMD integer instructions.

additionally: you're gonna want to add an IntSIMD# type, because the GPR / R*X / normal int pointer registers and the XMM / YMM / ZMM registers can only communicate via a read/write to memory
(recent ghc has built in a version of https://github.com/cartazio/random/blob/22a2a16bd62edd553b4f7f2e9eedc26cbf8850d8/cmmbits/floatsAndBits.cmm#L10)
as an out of band/explicitly CMM primop.

Jun 27 2018, 6:46 PM
carter requested changes to D4882: WIP Add support for SIMD integer instructions.

, theres some confusing design choices in heres

Jun 27 2018, 6:37 PM

Jun 22 2018

carter added a comment to D4849: Add cmpeq pack int instructions.

Thanks for your advice.

I'd like to park this differential for the moment and move on to _mm512_shuffle_epi8 (or vpshufb), which is a closer match to the AVX work that @Abhiroop is doing on D4813 and come back to this when I better understand the register situation.

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#expand=765,767,802,3894,802,767,4757,4757&text=_mm512_shuffle_epi8

https://ghc.haskell.org/trac/ghc/ticket/15250

Jun 22 2018, 6:09 PM

Jun 19 2018

carter added a comment to D4813: [WIP] Add support for SIMD operations in the NCG.

not sure about some bits, but heres some more thoughts

Jun 19 2018, 3:11 PM
carter added a comment to D4849: Add cmpeq pack int instructions.

to clarify: ghc currently has no understanding of int/word can be in xmm register.

Jun 19 2018, 3:03 PM
carter added a comment to D4849: Add cmpeq pack int instructions.

umm, perhaps this should be folded in the work abhiroop is doing?

Jun 19 2018, 1:34 PM
carter added a comment to D4813: [WIP] Add support for SIMD operations in the NCG.

why do we have a normal CMM expression changing how we do code gen, this seems deeply wrong to me.

Jun 19 2018, 9:53 AM

Jun 18 2018

carter added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Jun 18 2018, 6:18 PM
carter added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Jun 18 2018, 1:21 PM

Jun 7 2018

carter added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Jun 7 2018, 7:24 PM
carter added a comment to D4813: [WIP] Add support for SIMD operations in the NCG.

most of the feedback from last time still applies, looks mostly the same, also no tests! fix that soon

Jun 7 2018, 3:52 PM

Jun 4 2018

carter added a comment to D4779: 1. Modify the StgCmmPrim bridge to remove the wasted register zeroing 2. Add some vector register utils like making temporary virtual registers 3. Add the width hardcoded version of braodcast 4. Add the entire pretty printing logic for the 3....

i think it might be worth poking at https://phabricator.haskell.org/D4475 and getting it in shape for perhaps ghc 8.8 as a prerequisite for this set of work to have the right internal data model

Jun 4 2018, 2:42 PM
carter added inline comments to D4779: 1. Modify the StgCmmPrim bridge to remove the wasted register zeroing 2. Add some vector register utils like making temporary virtual registers 3. Add the width hardcoded version of braodcast 4. Add the entire pretty printing logic for the 3....
Jun 4 2018, 2:42 PM
carter requested changes to D4779: 1. Modify the StgCmmPrim bridge to remove the wasted register zeroing 2. Add some vector register utils like making temporary virtual registers 3. Add the width hardcoded version of braodcast 4. Add the entire pretty printing logic for the 3....

Theres no tests! (even though we can't run them yet, lets write some tests!)

Jun 4 2018, 8:57 AM

Jun 3 2018

carter added a comment to D4781: rts: Use .cfi_{start|end}proc directives.

I can confirm this patch works for me :)

Jun 3 2018, 8:47 PM
carter added a comment to D4779: 1. Modify the StgCmmPrim bridge to remove the wasted register zeroing 2. Add some vector register utils like making temporary virtual registers 3. Add the width hardcoded version of braodcast 4. Add the entire pretty printing logic for the 3....

@Abhiroop when the intel docs say the args are xmm1 xmm2 and xmm3, they dont mean those specific registers, they mean "x y z are the args, and theyy're all xmm registers",
I think this confusion came up a few times when we spoke? and I didn't understand at the time what was causing it. :)

Jun 3 2018, 5:34 PM
carter added a comment to D4781: rts: Use .cfi_{start|end}proc directives.

I did a rebuild with only these files patched and the build succeeded!

Jun 3 2018, 4:36 PM
Herald added a reviewer for D4780: a naive but simple fix to resolve trac ticket 15207, because currently stgcrun.c when compiled with gcc and then assembled with clang/apple as/llvm assembler fails.: erikd.
Jun 3 2018, 3:23 PM

May 23 2018

carter added a comment to D4724: Implement QuantifiedConstraints.

I'm pretty unfamiliar with the type checker sub system, but i think i spotted 1-2 possible typos/spurious edits/places that might need additional clarity

May 23 2018, 6:09 PM

Jan 28 2018

carter added a comment to D4348: Mark xmm6 as caller saved in the register allocator for windows..

I guess one question is why are we implicitly the list this way. Seems like a tricky way to specify the register ranges. We know what platforms windows is ... right?

Jan 28 2018, 7:51 AM

Mar 11 2017

carter added a comment to D3265: Generate better fp abs for X86 and llvm with default cmm otherwise.

Is it correct to say unsupported ? Seems more like it should be an impossible error for those cases. Cause you're just generating it early.

Mar 11 2017, 7:33 AM
carter added a comment to D3307: Broaden demand analysis IO hack notes.

The not changes the meaning of this not/ the tone thereof .. should it be styled that way or keeping the original language and explaining the corner cases as a new paragraph

Mar 11 2017, 7:25 AM
carter requested changes to D3308: Use runRW# to implement unsafeInterleaveIO.
  1. where's definition of pure?
  2. I'm not sure if the new comments are enough ... should document the ways it should work / preconditions.
  3. this change is for master or 8.2? I'm guessing master ?
Mar 11 2017, 7:22 AM

Feb 25 2017

carter added a comment to D3187: build system: Persist CrossCompiling in binary distributions.

these cross compiling notes are specifically for registerized builds? and or does configure autodetect if the right x-compile tools are around?

Feb 25 2017, 5:11 PM

Feb 10 2017

carter updated subscribers of D3114: Generate better fp abs for X86 and llvm..

i think a cleaner approach might be to add Float 32 and Double 64 bit wise operations (and the associated Data.Bits instance) and use the same machinery to define fabs and fabsf

Feb 10 2017, 11:40 AM

Feb 9 2017

carter added a comment to D3114: Generate better fp abs for X86 and llvm..

overall looks decent, just some cleaning still needed :)

Feb 9 2017, 3:01 PM

Feb 6 2017

carter requested changes to D3091: Generate correct X86 and llvm instructions for abs.

i think that we need to discuss what foreignPrimops mean, and or have that metadata be accurate per target architecture

Feb 6 2017, 6:43 PM
carter added a comment to D3091: Generate correct X86 and llvm instructions for abs.

We shoudln't have fabs primops be marked as foreignCalls when they're not always.... we can do CPP in the primops.pp.txt file right?

Feb 6 2017, 6:42 PM

Feb 2 2017

carter requested changes to D3062: Support abs as a primitive operation on floating point numbers..
Feb 2 2017, 11:21 AM
carter added a comment to D3062: Support abs as a primitive operation on floating point numbers..

looks like in some cases this change *could* be a regression, or at least its not clear that its a win to make it a foreign call vs doing the suitable bitwise and masking as Reid and I have discussed

Feb 2 2017, 11:21 AM

Jan 6 2017

carter added a comment to D2929: Always expose unfoldings for overloaded functions.

i was thinking of https://ghc.haskell.org/trac/ghc/ticket/12463, which seem to have not been implemented ever, or something like it

Jan 6 2017, 11:07 AM
carter added a comment to D2929: Always expose unfoldings for overloaded functions.

Additionally: one possible library that could be a stress test for this would be the vector-algorithms library, which I think currently does very very aggressive in lining to make sure specialization happens

Jan 6 2017, 10:40 AM
carter added a comment to D2929: Always expose unfoldings for overloaded functions.

How is this similar or different from specializable pragma? Does this replace needing that on newer ghc?

Jan 6 2017, 10:40 AM

Nov 12 2016

carter added a comment to D2694: rts: Fix LoadArchive on OS X.

this looks reasonable to me (otoh I'm not super familiar with the linker code base)

Nov 12 2016, 9:02 PM

Sep 18 2016

carter added a comment to D2516: rts: Disable -hb with multiple capabilities.

I had to revert this patch / change set on OSX to get my build to succeed.

Sep 18 2016, 8:18 PM

Aug 3 2016

carter added a comment to D2431: Use MO_Cmpxchg in Primops.cmm instead of ccall cas(..).

Is there a follow up patch or design plan for adding Haskell level siblings?

Aug 3 2016, 7:42 PM

Jul 29 2016

carter added a comment to D2431: Use MO_Cmpxchg in Primops.cmm instead of ccall cas(..).

Hrmm, these should be added to the Haskell layer primops too. With suitable state# token arguments similar to other pointer ish based read and write ops

Jul 29 2016, 9:07 AM
carter added a comment to D2431: Use MO_Cmpxchg in Primops.cmm instead of ccall cas(..).

Sweet! Does this mean uses of cas in the rts and user space won't have that extra function call indirection ?

Jul 29 2016, 9:05 AM

Jul 27 2016

carter added a comment to D2425: Darwin: Detect broken NM program at configure time.

point being: something needs to be done so that handling this corner case, while it exists, isn't a folklore / googling around issue. and its not someting that most folks even are aware of!

Jul 27 2016, 4:12 PM
carter added a comment to D2425: Darwin: Detect broken NM program at configure time.

Something needs to be done to address this, because otherwise its making build from source for new contributors on OSX even more second class than it already sometimes is :)

Jul 27 2016, 4:11 PM

May 6 2016

carter added a comment to D800: Allow setting explicit thread affinity masks from a file..

whats needed to move this or something similar to this along?

May 6 2016, 8:30 PM

Apr 17 2016

carter added a comment to D2121: Remove obsolete/redundant FLEXIBLE_ARRAY macro.

Looks reasonable to me. (Though I'm not especially knowledgable in c matters)

Apr 17 2016, 7:46 PM
carter added a comment to D2120: relnotes: Add note about #11744 and workaround.

Off the cuff this looks fine, I may finally get around to sacrificing one of my personal machines to the upgrade gods so I can test that this afternoon.

Apr 17 2016, 9:41 AM

Apr 2 2016

carter added a comment to D973: Add -link-package flag and make -package lazy.

Sorry, I meant to ask , will this make it into 8.0?
If my understanding is correct it would make a big difference in build time for th heavy code , right ?

Apr 2 2016, 12:39 PM

Mar 31 2016

carter added a comment to D973: Add -link-package flag and make -package lazy.

Is this one of the changes that is going to land In rc3?

Mar 31 2016, 10:07 PM

Mar 25 2016

carter added a comment to D2039: RTS: Refactor "portable inline" macros.

So if I built ghc 8 branch with gcc 5/6 before this patch , there's potentially some perf regressions? How would I measure or isolate that / what programs would make it observable ?

Mar 25 2016, 4:32 PM

Mar 24 2016

carter added a comment to D2031: rts: Make StablePtr derefs thread-safe (#10296).

Question: am I correct in understanding that stable pointers only get freed during GC, but that the table itself is not on the heap?

Mar 24 2016, 11:31 AM

May 6 2015

carter added inline comments to D849: Fix dropped event registrations.
May 6 2015, 7:38 PM

Apr 25 2015

carter added a comment to D861: Use IP based CallStack in error and undefined.

thanks ben, that clarifies things for me!

Apr 25 2015, 9:14 PM

Apr 22 2015

carter added a comment to D861: Use IP based CallStack in error and undefined.

am i correct in understanding that the notion of call stack thats in this patch is specifically / only the Profiling build notion of call stack?

Apr 22 2015, 12:54 PM

Mar 8 2015

carter added inline comments to D624: Encode alignment in MO_Memcpy and friends.
Mar 8 2015, 12:16 PM

Dec 23 2014

carter added a comment to D551: Add export lists to some modules..

did a quick build on OS X, HEAD seems to bulid fine with this patch

Dec 23 2014, 12:47 PM · GHC

Dec 13 2014

carter accepted D570: Only use -fasm on platforms with an NCG (Closes: #9884)..

Looks good to me. (at least the build systems changes)

Dec 13 2014, 11:38 PM

Dec 6 2014

carter added a comment to D350: Changing prefetch primops to have a `seq`-like interface.

did the changes as suggested.

Dec 6 2014, 1:38 AM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • updating comments and haddocks per Austin's suggestions
Dec 6 2014, 1:38 AM

Dec 4 2014

carter added a comment to D555: fixup readme to have more up to date cloning directions. Note that it doesnt layout how to clone from your own private tree.

though that wiki page has some out of date bits

Dec 4 2014, 10:30 AM
carter added a comment to D555: fixup readme to have more up to date cloning directions. Note that it doesnt layout how to clone from your own private tree.

huh, maybe the readme should just link to https://ghc.haskell.org/trac/ghc/wiki/Building/GettingTheSources ?

Dec 4 2014, 10:29 AM
carter retitled D555: fixup readme to have more up to date cloning directions. Note that it doesnt layout how to clone from your own private tree from to fixup readme to have more up to date cloning directions. Note that it doesnt layout how to clone from your own private tree.
Dec 4 2014, 9:16 AM

Nov 30 2014

carter added a comment to D350: Changing prefetch primops to have a `seq`-like interface.

probably should add some remarks in the release notes section of the manual for this

Nov 30 2014, 12:18 AM

Nov 28 2014

carter added a comment to D350: Changing prefetch primops to have a `seq`-like interface.

Davean and I did some benchmarks (mentioned in the thread here )https://www.haskell.org/pipermail/ghc-devs/2014-November/007458.html

Nov 28 2014, 4:27 PM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • adding more commentary about the current prefetch designs and why they need to be marked as has_side_effects=True
Nov 28 2014, 4:05 PM
carter added a comment to D530: llvmGen: move to LLVM 3.6 exclusively.

its worth noting that harbor master currently doesnt do a validate using llvm backend, so we cant test this on phab yet, right?

Nov 28 2014, 4:02 PM

Nov 26 2014

carter added a comment to D155: llvmGen: Compatibility with LLVM 3.5.

we can at least make sure / keep an eye on making 3.6 work with 7.10 right?

Nov 26 2014, 6:58 PM

Nov 25 2014

carter added a comment to D155: llvmGen: Compatibility with LLVM 3.5.

one support issue that will come up is that the current Xcode release of Clang doesn't support the full range of assembly that LLVM 3.5 emits, (though a built of the official llvm 3.5 CLANG works fine)

Nov 25 2014, 4:02 PM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • adding has_side_effects to all the prefetch ops everywhere
Nov 25 2014, 1:47 PM

Nov 24 2014

carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • fixing typo in test
Nov 24 2014, 1:59 AM
carter added a comment to D350: Changing prefetch primops to have a `seq`-like interface.

i think this is ready to go!

Nov 24 2014, 1:07 AM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • adding something extra to the test suite
Nov 24 2014, 1:05 AM

Nov 23 2014

carter added a comment to D350: Changing prefetch primops to have a `seq`-like interface.

ok, marking prefetchValue has has_side_effects=True saves the day

Nov 23 2014, 7:04 PM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • mark prefetchValue as has_side_effects = True
Nov 23 2014, 6:57 PM
carter added a comment to D350: Changing prefetch primops to have a `seq`-like interface.

i seem to have discovered a problem wrt let/app invariant with the api / semantics i have for prefetch value. However, I only seem to get the problem to happen locally on my mac (though I cant even run validate locally for other reasons i can't yet track down).

Nov 23 2014, 6:38 PM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • add dcore-lint and O1 flags to test case trip the problem i've hit
Nov 23 2014, 6:14 PM
carter added a comment to D350: Changing prefetch primops to have a `seq`-like interface.

how on earth is this validating?

Nov 23 2014, 5:55 PM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • fixup prefetchValue0# and make the tests not depend on vector
Nov 23 2014, 3:14 PM
carter added a comment to D350: Changing prefetch primops to have a `seq`-like interface.

i was doing some sanity checking locally, and its pretty clear that the test file wasn't being run by validate somehow (as in, theres no way it compiled, i'm fixing that locally and hopefully things will then be OK)

Nov 23 2014, 1:47 PM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • use switch \ _ -> with \ _arity ->
Nov 23 2014, 11:19 AM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • the prefetchValue operations should be lazy in their value argument
Nov 23 2014, 11:17 AM
carter added a comment to D350: Changing prefetch primops to have a `seq`-like interface.

i'm concerned that the prefetchValue operations dont have the right strictness information on them. The value argument shouldn't be evaluated.

Nov 23 2014, 10:42 AM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • Revert "somehow how i modified the docs made the primops file parser fail. twiddling that"
  • Revert "clarify documention to make it clear that inlinePerformIO is safe to use here"
  • clarify documentation about prefetch
Nov 23 2014, 2:07 AM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • somehow how i modified the docs made the primops file parser fail. twiddling that
Nov 23 2014, 1:57 AM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • clarify documentation to make it clear that inlinePerformIO is safe to use here
Nov 23 2014, 1:45 AM
carter added a comment to D350: Changing prefetch primops to have a `seq`-like interface.

agreed, should I change the recommendation to unsafeDupable or inlinePerformIO?

Nov 23 2014, 1:32 AM
carter added a comment to D519: preliminary Complex and Ratio Storable instances for Base.

and just to be clear, it has a test!

Nov 23 2014, 1:18 AM
carter updated the diff for D350: Changing prefetch primops to have a `seq`-like interface.
  • fixing up some validate -werror noise
Nov 23 2014, 1:07 AM