diff options
author | Michael Meissner <meissner@linux.ibm.com> | 2021-12-15 00:57:44 -0500 |
---|---|---|
committer | Michael Meissner <meissner@linux.ibm.com> | 2021-12-15 00:57:44 -0500 |
commit | 8ccd8b12ded1782f4273fd1f381b7d554df61a12 (patch) | |
tree | da03675a2aa6ac752ea46c9b1c242d10e8bb77cb /gcc/d/d-lang.cc | |
parent | c6756b3bc1d2af1c8e86f0ad1711e9b9134520ba (diff) | |
download | gcc-8ccd8b12ded1782f4273fd1f381b7d554df61a12.zip gcc-8ccd8b12ded1782f4273fd1f381b7d554df61a12.tar.gz gcc-8ccd8b12ded1782f4273fd1f381b7d554df61a12.tar.bz2 |
Add LXVKQ support.
This patch adds support to generate the LXVKQ instruction to load specific
IEEE-128 floating point constants.
Compared to the last time I submitted this patch, I modified it so that it
uses the bit pattern of the vector to see if it can generate the LXVKQ
instruction. This means on a little endian Power<xxx> system, the
following code will generate a LXVKQ 34,16 instruction:
vector long long foo (void)
{
return (vector long long) { 0x0000000000000000, 0x8000000000000000 };
}
because that vector pattern is the same bit pattern as -0.0F128.
2021-12-14 Michael Meissner <meissner@the-meissners.org>
gcc/
* config/rs6000/constraints.md (eQ): New constraint.
* config/rs6000/predicates.md (easy_fp_constant): Add support for
generating the LXVKQ instruction.
(easy_vector_constant_ieee128): New predicate.
(easy_vector_constant): Add support for generating the LXVKQ
instruction.
* config/rs6000/rs6000-protos.h (constant_generates_lxvkq): New
declaration.
* config/rs6000/rs6000.c (output_vec_const_move): Add support for
generating LXVKQ.
(constant_generates_lxvkq): New function.
* config/rs6000/rs6000.opt (-mieee128-constant): New debug
option.
* config/rs6000/vsx.md (vsx_mov<mode>_64bit): Add support for
generating LXVKQ.
(vsx_mov<mode>_32bit): Likewise.
* doc/md.texi (PowerPC and IBM RS6000 constraints): Document the
eQ constraint.
gcc/testsuite/
* gcc.target/powerpc/float128-constant.c: New test.
Diffstat (limited to 'gcc/d/d-lang.cc')
0 files changed, 0 insertions, 0 deletions