[GHC] #8396: cleanup / refactor native code gens

#8396: cleanup / refactor native code gens ----------------------------------------+---------------------------------- Reporter: carter | Owner: Type: feature request | Status: new Priority: high | Milestone: 7.10.1 Component: Compiler | Version: Keywords: | Operating System: Architecture: Unknown/Multiple | Unknown/Multiple Difficulty: Unknown | Type of failure: None/Unknown Blocked By: | Test Case: Related Tickets: #8299 , #8287 ,#8272 | Blocking: ----------------------------------------+---------------------------------- the native code gen could use some cleanup / love. 1. Catchup with feature parity of the llvm a. this includes adding SIMD support on applicable native code gen architectures, starting with x86_64 2. make it easier to extend / modify experiment with the native code gen 3. make it easier to add new primops (maybe even a magic inline asm primop?!) 4. other things i'm overlooking right now this also overlaps with a number of related tickets i've been adding to trac. a more ambitious strategic goal that won't be the initial goal, that simon marlow suggested when i chatted with him at ICFP, is to make the native code gen codebase a sort of "mini-llvm". I think thats a bit ambitious for the near term, but maybe thats the point on the horizon we may want to aim towards. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8396 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8396: cleanup / refactor native code gens ----------------------------------+---------------------------------------- Reporter: carter | Owner: Type: feature | Status: new request | Milestone: 7.10.1 Priority: high | Version: Component: Compiler | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: None/Unknown | Related Tickets: #8299 , #8287 ,#8272 Test Case: | Blocking: | ----------------------------------+---------------------------------------- Comment (by schyler): Probably not useful or related, but reminded me of some work I found on github (https://github.com/mlite/HsLlvm) which started implementing some of the llvm passes (like mem2reg) using hoopl. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8396#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8396: cleanup / refactor native code gens ----------------------------------+---------------------------------------- Reporter: carter | Owner: Type: feature | Status: new request | Milestone: 7.10.1 Priority: high | Version: Component: Compiler | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: None/Unknown | Related Tickets: #8299 , #8287 ,#8272 Test Case: | Blocking: | ----------------------------------+---------------------------------------- Comment (by carter): schyler, you raise a good point. Currently HOOPL isn't used at all! This is because a *single* hoopl pass will apparently increase the compilation time of programs by 5%, so adding a number of hoopl passes would seriously blow up the compilation time. i'm not really touching on improving the optimization story, that'd be a subsequent effort and much more work. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8396#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8396: cleanup / refactor native code gens -------------------------------------+------------------------------------- Reporter: carter | Owner: Type: feature | Status: new request | Milestone: 7.10.1 Priority: high | Version: Component: Compiler | Keywords: (CodeGen) | Architecture: Unknown/Multiple Resolution: | Difficulty: Unknown Operating System: | Blocked By: Unknown/Multiple | Related Tickets: #8299 , #8287 Type of failure: | ,#8272 None/Unknown | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by thomie): * cc: simonmar (added) * component: Compiler => Compiler (CodeGen) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8396#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8396: cleanup / refactor native code gens -------------------------------------+------------------------------------- Reporter: carter | Owner: Type: task | Status: new Priority: high | Milestone: 7.10.1 Component: Compiler | Version: (NCG) | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: | Related Tickets: #8299 , #8287 None/Unknown | ,#8272 Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by thomie): * type: feature request => task * component: Compiler (CodeGen) => Compiler (NCG) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8396#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8396: cleanup / refactor native code gens -------------------------------------+------------------------------------- Reporter: carter | Owner: Type: task | Status: new Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: (NCG) | Keywords: Resolution: | Architecture: Unknown/Multiple Operating System: | Difficulty: Unknown Unknown/Multiple | Blocked By: Type of failure: | Related Tickets: #8299 , #8287 None/Unknown | ,#8272 Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by carter): * priority: high => normal * milestone: 7.10.1 => 7.12.1 -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8396#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8396: cleanup / refactor native code gens -------------------------------------+------------------------------------- Reporter: carter | Owner: Type: task | Status: new Priority: normal | Milestone: 8.0.1 Component: Compiler (NCG) | Version: Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #8299 , #8287 | Differential Rev(s): ,#8272 | Wiki Page: | -------------------------------------+------------------------------------- Changes (by trommler): * cc: trommler (added) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8396#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#8396: cleanup / refactor native code gens -------------------------------------+------------------------------------- Reporter: carter | Owner: (none) Type: task | Status: closed Priority: normal | Milestone: Component: Compiler (NCG) | Version: Resolution: invalid | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #8299 , #8287 | Differential Rev(s): ,#8272 | Wiki Page: | -------------------------------------+------------------------------------- Changes (by bgamari): * status: new => closed * resolution: => invalid Comment: Given that this is four years old and not terribly actionable, I'm going to close this. I think these sorts of tasks are better tracked as individual narrow tickets. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8396#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC