This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH,i386] fma,fma4 and xop flags
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: Ganesh dot Gopalasubramanian at amd dot com
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Thu, 9 Aug 2012 21:51:07 +0200
- Subject: Re: [PATCH,i386] fma,fma4 and xop flags
- References: <20120808113105.21153.11115.sendpatchset@adcelk01.amd.com>
On Wed, Aug 8, 2012 at 1:31 PM, <Ganesh.Gopalasubramanian@amd.com> wrote:
> Bdver2 cpu supports both fma and fma4 instructions.
> Previous to patch, option "-mno-xop" removes "-mfma4".
> Similarly, option "-mno-fma4" removes "-mxop".
It looks to me that there is some misunderstanding. AFAICS:
-mxop implies -mfma4, but reverse is not true. Please see
#define OPTION_MASK_ISA_FMA4_SET \
(OPTION_MASK_ISA_FMA4 | OPTION_MASK_ISA_SSE4A_SET \
| OPTION_MASK_ISA_AVX_SET)
#define OPTION_MASK_ISA_XOP_SET \
(OPTION_MASK_ISA_XOP | OPTION_MASK_ISA_FMA4_SET)
So, -mxop sets -mfma4, etc ..., but -mfma4 does NOT enable -mxop.
OTOH,
#define OPTION_MASK_ISA_FMA4_UNSET \
(OPTION_MASK_ISA_FMA4 | OPTION_MASK_ISA_XOP_UNSET)
#define OPTION_MASK_ISA_XOP_UNSET OPTION_MASK_ISA_XOP
-mno-fma4 implies -mno-xop, but again reverse is not true. Thus,
-mno-xop does NOT imply -mno-fma4.
> So, the patch conditionally disables "-mfma" or "-mfma4".
> Enabling "-mxop" is done by also checking "-mfma".
Please note that conditional handling of ISA flags belongs to
ix86_option_override_internal. However, if someone set -mfma4 together
with -mfma on the command line, we should NOT disable selected ISA
behind user's back, in the same way as we don't disable anything with
"-march=i386 -msse4". With -march=bdver2, we already marked that only
fma is supported, and if user selected "-march=bdver2 -mfma4" on the
command line, we shouldn't disable anything.
Uros.