From 624e6201e8c512725f8ee7a9168b21def43df45a Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Sat, 18 Oct 2014 14:39:14 +0200 Subject: [PATCH] manpage/init: -fsplit-vector-parameters description --- doc/gmqcc.1 | 10 ++++++++++ gmqcc.ini.example | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/doc/gmqcc.1 b/doc/gmqcc.1 index 566346a..78d767e 100644 --- a/doc/gmqcc.1 +++ b/doc/gmqcc.1 @@ -615,6 +615,16 @@ Turn on arithmetic exception tests in the compiler. In constant expressions which trigger exceptions like division by zero, overflow, underflow, etc, the following flag will produce diagnostics for what triggered that exception. +.It Fl f Ns Cm split-vector-parameters +With this flag immediate vector literals which only ever appear as function +parameters won't be stored as vector immediates. Instead, the 3 floats making +up the vector will be copied separately. Essentially this turns a vector-store +instruction into 3 float-store instructions for such cases. This increases +code size but can dramatically reduce the amount of vector globals, which is +after all limited to 64k. There's at least one known codebase where this +lowers the number of globals from over 80k down to around 3k. In other code +bases it doesn't reduce the globals at all but only increases code size. +Just try it and see whether it helps you. .El .Sh OPTIMIZATIONS .Bl -tag -width Ds diff --git a/gmqcc.ini.example b/gmqcc.ini.example index adc6624..59a27f9 100644 --- a/gmqcc.ini.example +++ b/gmqcc.ini.example @@ -341,6 +341,11 @@ #exception. ARITHMETIC_EXCEPTIONS = false + #Split vector-literals which are only used dirctly as function parameters + #into 3 floats stored separately to reduce the number of globals at the + #expense of additional instructions. + SPLIT_VECTOR_PARAMETERS = false + [warnings] #Generate a warning about variables which are declared but never #used. This can be avoided by adding the ‘noref’ keyword in front -- 2.39.2