Abhiroop (Abhiroop Sarkar)
User

Projects

User does not belong to any projects.

User Details

User Since
Mar 15 2018, 7:00 PM (17 w, 2 d)

Recent Activity

Yesterday

Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Modify all pack/broadcast variants to accept any CmmExpr argument and rewrite codegen for that
  • Modify the StgCmmPrim definition of broadcast
  • Modify CmmLint condition for broadcast
Sat, Jul 14, 12:07 AM

Mon, Jul 9

Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Remove the inlining hack and allow -O2 to fully work for vectors
Mon, Jul 9, 8:25 PM
Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Mon, Jul 9, 8:11 PM

Sun, Jul 8

Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Enrich STG vector registers with Length width and register type information
  • Add support for the SSE family of vector instructions
Sun, Jul 8, 3:28 PM

Mon, Jul 2

Abhiroop updated the diff for D4922: Enrich Xmm register with Length Width and datatype information.
  • Fix parsing issue
Mon, Jul 2, 5:38 PM
Abhiroop updated the diff for D4922: Enrich Xmm register with Length Width and datatype information.
  • Fix linter issues
Mon, Jul 2, 5:34 PM
Abhiroop added a comment to D4922: Enrich Xmm register with Length Width and datatype information.

I tried adding the Length, Width and data type information without keeping it a Maybe but it was proving to be almost impossible. That patch is here: https://gist.github.com/Abhiroop/ba9cb911385e64484f6ce317ca36aa90 I also tried by adding Length, Width etc info in the globalRegType and cmmRegType function but I hit a dead end with that approach as well. This looks like the most sane way forward.

Mon, Jul 2, 5:25 PM
Abhiroop created D4922: Enrich Xmm register with Length Width and datatype information.
Mon, Jul 2, 5:20 PM

Fri, Jun 29

Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Fri, Jun 29, 10:42 AM
Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Re-enable the liveness analysis of vector operations
  • Change the constructors and other handlers of packing operations
  • Temporarily disable inlining for vector operations
Fri, Jun 29, 10:24 AM

Thu, Jun 28

Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Disable the liveness analysis for vector operations when running with -O2
  • Add tests for packing and unpacking with -O2
Thu, Jun 28, 4:35 PM

Tue, Jun 26

Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Tue, Jun 26, 6:38 PM
Abhiroop retitled D4813: [WIP] Add support for SIMD operations in the NCG from [WIP] Add support for broadcastFloatX4# and unpackFloatX4# operations to [WIP] Add support for SIMD operations in the NCG.
Tue, Jun 26, 6:09 PM
Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Rewrite the pretty printer to use the Format information and generalize the instructions
  • Add support for packing, unpacking, broadcasting doubles
  • Add support for arithmetic operations on doubles
  • Add tests for the above and minor changes in the linter and other places to accomodate doubles
Tue, Jun 26, 5:02 PM
Abhiroop updated subscribers of D4813: [WIP] Add support for SIMD operations in the NCG.
Tue, Jun 26, 5:58 AM

Fri, Jun 22

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

@newhoggy The project that you trying build is an old fork of ghc which I haven't updated in a long time. My changes are all available here: https://github.com/Abhiroop/ghc-1

Fri, Jun 22, 6:40 AM

Thu, Jun 21

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

@newhoggy with respect to your comment on D4813 about how you can merge your code, I can make a suggestion that you can try raising a PR against my wip/simd-ncg-support. Otherwise you might end up duplicating a lot of the effort and some of the more important types like Format or important functions like getVecRegisterReg might change in their representation, in which case you might have to end up rewriting a lot of your code. So my suggestion would be perhaps raising a PR against my branch so it can accumulate all the changes related to vectorization in NCG.

Thu, Jun 21, 9:07 AM
Abhiroop added a comment to D4882: WIP Add support for SIMD integer instructions.

@newhoggy Well some of the assembler errors are quite clear like the errors with vmovdqu64 which states error: instruction requires: AVX-512 ISA AVX-512 VL ISA and the Intel doc also mentions that these are AVX 512 operations which are supported in the very high end Xeon Phi processors or if you have the X generation of core i3, i5, i7 processors.

Thu, Jun 21, 8:59 AM
Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Thu, Jun 21, 8:39 AM

Wed, Jun 20

Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Add some explanatory comments
Wed, Jun 20, 11:49 AM
Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Add vector negate operation and tests
  • Fix other code review comments
Wed, Jun 20, 11:33 AM
Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Wed, Jun 20, 10:33 AM
Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Wed, Jun 20, 8:24 AM

Tue, Jun 19

Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Tue, Jun 19, 10:20 PM
Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Tue, Jun 19, 10:20 PM
Abhiroop added a comment to D4849: Add cmpeq pack int instructions.

Perhaps instead of working with the -mmx flag and family you can try using the SSE2 based PCMPEQB xmm1, xmm2/m128.

Tue, Jun 19, 5:12 PM
Abhiroop added inline comments to D4849: Add cmpeq pack int instructions.
Tue, Jun 19, 5:01 PM
Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Modify unpack to use shuffle operation and add tests for it
Tue, Jun 19, 8:51 AM

Mon, Jun 18

Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Mon, Jun 18, 9:57 PM
Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Mon, Jun 18, 3:03 PM
Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Mon, Jun 18, 2:46 PM
Abhiroop added a comment to D4849: Add cmpeq pack int instructions.

@newhoggy Not very sure how you would proceed to rebase the work on D4813 but I can point you to the original repo where this work is happening: https://github.com/Abhiroop/ghc-1/tree/wip/simd-ncg-support

Mon, Jun 18, 1:09 PM

Jun 12 2018

Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Jun 12 2018, 4:55 PM
Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Add support for float division
  • Add support for packFloatX4#
  • Introduce a new MachOp MO_VF_Broadcast to differentiate between pack and broadcast
  • Add tests for divide and pack
Jun 12 2018, 4:46 PM

Jun 11 2018

Abhiroop abandoned 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 11 2018, 8:39 AM

Jun 10 2018

Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Add support vector addition, multiplications and substraction
  • Add tests for the arithmetic operations
  • Fix vector width logic
  • Fix minor compiler warnings and remove unneccessary changes
Jun 10 2018, 2:12 PM

Jun 9 2018

Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Unify the VecFormat data type with the Format data type
Jun 9 2018, 6:56 PM
Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Jun 9 2018, 4:20 PM
Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Jun 9 2018, 1:48 PM
Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.
  • Make the scalar formats more precise
  • Add support for data definitions lifting unlifted vector types like FloatX4#
  • Allow lifted vector types to have instances of various typeclasses by implementing CmmLoad
  • Add tests for data defintions and instances definitions etc
  • Implementation of broadcast and unpack operations remain
Jun 9 2018, 1:48 PM

Jun 8 2018

Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Jun 8 2018, 7:58 PM

Jun 7 2018

Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Jun 7 2018, 7:50 PM
Abhiroop added a reviewer for D4813: [WIP] Add support for SIMD operations in the NCG: AndreasK.
Jun 7 2018, 5:58 PM
Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Jun 7 2018, 5:58 PM
Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.

This contains the implementation and tests of the functions broadcastFloatX4# and unpackFloatX4#
Data type definitions / lifting dont work yet, will update after i fix that shortly
The VADDPS operation is incorrect and needs to be updated

Jun 7 2018, 5:39 PM
Abhiroop updated the diff for D4813: [WIP] Add support for SIMD operations in the NCG.

Fix the Cmm Lint errors and add tests

Jun 7 2018, 5:39 PM
Abhiroop added inline comments to D4813: [WIP] Add support for SIMD operations in the NCG.
Jun 7 2018, 4:05 PM
Abhiroop retitled D4813: [WIP] Add support for SIMD operations in the NCG from THIS IS A WIP DIFF add support for broadcastFloatX4# and unpackFloatX4# operations to THIS IS A WIP DIFFadd support for broadcastFloatX4# and unpackFloatX4# operations.
Jun 7 2018, 3:54 PM
Abhiroop created D4813: [WIP] Add support for SIMD operations in the NCG.
Jun 7 2018, 3:42 PM

Jun 5 2018

Abhiroop 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....

@simonmar This diff is basically my first diff in extending the native code generator to add support for SIMD instructions, in response to the trac ticket : https://ghc.haskell.org/trac/ghc/ticket/7741 I am doing this project as part of Google Summer of Code (GSoC).

Jun 5 2018, 5:08 PM

Jun 4 2018

Abhiroop 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, 12:10 PM
Abhiroop edited reviewers for 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..., added: AndreasK; removed: simonmar.
Jun 4 2018, 7:26 AM
Abhiroop 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, 7:13 AM

Jun 3 2018

Abhiroop 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 3 2018, 3:23 PM
Abhiroop updated the diff for 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....
  • Add a vecFormat to width helper function, fix some arcanist linter comments and remove undefined instances
Jun 3 2018, 3:22 PM
Abhiroop edited reviewers for 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..., added: carter; removed: simonmar.
Jun 3 2018, 3:22 PM
Abhiroop removed reviewers for 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...: bgamari, simonmar.
Jun 3 2018, 2:19 PM
Abhiroop created 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 3 2018, 2:19 PM