Re: [commit: ghc] master: llvmGen: Pass vector arguments in vector registers by default (15f788f)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: [commit: ghc] master: llvmGen: Pass vector arguments in vector registers by default (15f788f)

Gabor Greif-2
IIRC there are no more static flags around. So adding ":type: dynamic"
each time seems redundant. Could this be automated somehow? Or should
we remove ":type:" altogether?

Cheers,

    Gabor

On 11/3/17, [hidden email] <[hidden email]> wrote:

> Repository : ssh://[hidden email]/ghc
>
> On branch  : master
> Link       :
> http://ghc.haskell.org/trac/ghc/changeset/15f788f5e5096641245a4f060600a6db9cbc2c4e/ghc
>
>>---------------------------------------------------------------
>
> commit 15f788f5e5096641245a4f060600a6db9cbc2c4e
> Author: Ben Gamari <[hidden email]>
> Date:   Thu Nov 2 17:28:40 2017 -0400
>
>     llvmGen: Pass vector arguments in vector registers by default
>
>     Earlier this year Edward Kmett requested [1] that we enable passing of
>     vector values in vector registers by default. The GHC calling convention
>     changes have been in LLVM for a number of years now so let's just flip
>     the switch.
>
>     [1] https://mail.haskell.org/pipermail/ghc-devs/2017-March/013905.html
>
>     Reviewers: austin
>
>     Subscribers: rwbarton, thomie
>
>     Differential Revision: https://phabricator.haskell.org/D4142
>
>
>>---------------------------------------------------------------
>
> 15f788f5e5096641245a4f060600a6db9cbc2c4e
>  compiler/main/DynFlags.hs               |  5 +++--
>  docs/users_guide/using-optimisation.rst | 12 ++++++++++++
>  2 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
> index a421284..825497e 100644
> --- a/compiler/main/DynFlags.hs
> +++ b/compiler/main/DynFlags.hs
> @@ -3757,7 +3757,7 @@ fFlagsDeps = [
>    flagSpec "kill-one-shot"                    Opt_KillOneShot,
>    flagSpec "late-dmd-anal"                    Opt_LateDmdAnal,
>    flagSpec "liberate-case"                    Opt_LiberateCase,
> -  flagHiddenSpec "llvm-pass-vectors-in-regs"
> Opt_LlvmPassVectorsInRegisters,
> +  flagSpec "llvm-pass-vectors-in-regs"
> Opt_LlvmPassVectorsInRegisters,
>    flagHiddenSpec "llvm-tbaa"                  Opt_LlvmTBAA,
>    flagHiddenSpec "llvm-fill-undef-with-garbage"
> Opt_LlvmFillUndefWithGarbage,
>    flagSpec "loopification"                    Opt_Loopification,
> @@ -4051,7 +4051,8 @@ defaultFlags settings
>        Opt_RPath,
>        Opt_SharedImplib,
>        Opt_SimplPreInlining,
> -      Opt_VersionMacros
> +      Opt_VersionMacros,
> +      Opt_LlvmPassVectorsInRegisters
>      ]
>
>      ++ [f | (ns,f) <- optLevelFlags, 0 `elem` ns]
> diff --git a/docs/users_guide/using-optimisation.rst
> b/docs/users_guide/using-optimisation.rst
> index 4714de7..fc958e0 100644
> --- a/docs/users_guide/using-optimisation.rst
> +++ b/docs/users_guide/using-optimisation.rst
> @@ -493,6 +493,18 @@ by saying ``-fno-wombat``.
>      self-recursive saturated tail calls into local jumps rather than
>      function calls.
>
> +.. ghc-flag:: -fllvm-pass-vectors-in-regs
> +    :shortdesc: Pass vector value in vector registers for function calls
> +    :type: dynamic
> +    :reverse: -fno-llvm-pass-vectors-in-regs
> +    :category:
> +
> +    :default: on
> +
> +    Instructs GHC to use the platform's native vector registers to pass
> vector
> +    arguments during function calls. As with all vector support, this
> requires
> +    :ghc-flag:`-fllvm`.
> +
>  .. ghc-flag:: -fmax-inline-alloc-size=⟨n⟩
>      :shortdesc: *default: 128.* Set the maximum size of inline array
> allocations
>          to ⟨n⟩ bytes (default: 128).
>
> _______________________________________________
> ghc-commits mailing list
> [hidden email]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-commits
>
_______________________________________________
ghc-devs mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
Reply | Threaded
Open this post in threaded view
|

Re: [commit: ghc] master: llvmGen: Pass vector arguments in vector registers by default (15f788f)

Ben Gamari-2
Gabor Greif <[hidden email]> writes:

> IIRC there are no more static flags around. So adding ":type: dynamic"
> each time seems redundant. Could this be automated somehow? Or should
> we remove ":type:" altogether?
>
Well, we can't quite remove :type: yet since it still distinguishes
"mode" flags (e.g. --make) from "normal" flags. In addition, some flags
are marked as `dynamic / :set`, indicating that they can be changed
within GHCi with `:set`. That being said, I agree that the :type:'s are
needlessly verbose. I see two ways to proceed:

 * Make :type: default to `dynamic` (or perhaps another, friendlier name)

 * Represent mode flags with a different directive entirely

In either case we might want to add a new boolean option to :ghc-flag:
asserting it can be set from within ghci, separating this information
from :type:.

Cheers,

- Ben


_______________________________________________
ghc-devs mailing list
[hidden email]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

signature.asc (497 bytes) Download Attachment