public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/meissner/heads/work041)] Add VEC_DUPLICATE insn/split.
@ 2021-03-18 18:35 Michael Meissner
0 siblings, 0 replies; 2+ messages in thread
From: Michael Meissner @ 2021-03-18 18:35 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:a288d945cb495490e3cce800980d1df95159c486
commit a288d945cb495490e3cce800980d1df95159c486
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Thu Mar 18 14:35:02 2021 -0400
Add VEC_DUPLICATE insn/split.
gcc/
2021-03-18 Michael Meissner <meissner@linux.ibm.com>
* config/rs6000/altivec.md (xxspltidp_v2df): Delete special
handling of 0.0. Add comment about the denormal.
Diff:
---
gcc/config/rs6000/altivec.md | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md
index e93bb9c787f..cd5b0e037ad 100644
--- a/gcc/config/rs6000/altivec.md
+++ b/gcc/config/rs6000/altivec.md
@@ -859,12 +859,6 @@
rtx op1 = operands[1];
const struct real_value *rv = CONST_DOUBLE_REAL_VALUE (op1);
- if (op1 == CONST0_RTX (SFmode))
- {
- emit_move_insn (op0, CONST0_RTX (V2DFmode));
- DONE;
- }
-
/* If the value is not denormal, convert to vec_duplicate. */
if (xxspltidp_operand (op1, SFmode))
{
@@ -874,7 +868,9 @@
DONE;
}
- /* If the value is denormal, create an insn with the int value. */
+ /* If the value is denormal, create an insn with the int value. There is a
+ warning for this condition when the built-in was expanded in
+ rs6000_expand_unop_builtin. */
long value;
REAL_VALUE_TO_TARGET_SINGLE (*rv, value);
emit_insn (gen_xxspltidp_v2df_denormal (op0, GEN_INT (value)));
^ permalink raw reply [flat|nested] 2+ messages in thread
* [gcc(refs/users/meissner/heads/work041)] Add VEC_DUPLICATE insn/split.
@ 2021-03-18 10:30 Michael Meissner
0 siblings, 0 replies; 2+ messages in thread
From: Michael Meissner @ 2021-03-18 10:30 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:5e63f888776e3fc3fb2a7c8aa8a95f7c6a2aaf51
commit 5e63f888776e3fc3fb2a7c8aa8a95f7c6a2aaf51
Author: Michael Meissner <meissner@linux.ibm.com>
Date: Thu Mar 18 06:30:28 2021 -0400
Add VEC_DUPLICATE insn/split.
gcc/
2021-03-17 Michael Meissner <meissner@linux.ibm.com>
* config/rs6000/rs6000.md (xxspltidpv2df_dup): New insn and
split.
Diff:
---
gcc/config/rs6000/rs6000.md | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index bcfcf4c308c..9106c9ae2ee 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -7564,6 +7564,21 @@
operands[2] = GEN_INT (value);
})
+(define_insn_and_split "*xxspltidpv2df_dup"
+ [(set (match_operand:V2DF 0 "vsx_register_operand" "=wa")
+ (vec_duplicate:V2DF (match_operand:DF 1 "xxspltidp_operand" "eF")))]
+ "TARGET_POWER10"
+ "#"
+ "&& 1"
+ [(set (match_dup 0)
+ (unspec:V2DF [(match_dup 2)] UNSPEC_XXSPLTIDP))]
+{
+ long value;
+ const struct real_value *rv = CONST_DOUBLE_REAL_VALUE (operands[1]);
+ REAL_VALUE_TO_TARGET_SINGLE (*rv, value);
+ operands[2] = GEN_INT (value);
+})
+
(define_insn "*xxspltidp<mode>"
[(set (match_operand:SF_DF_V2DF 0 "vsx_register_operand" "=wa")
(unspec:SF_DF_V2DF [(match_operand 1 "const_int_operand" "n")]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-03-18 18:35 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-18 18:35 [gcc(refs/users/meissner/heads/work041)] Add VEC_DUPLICATE insn/split Michael Meissner
-- strict thread matches above, loose matches on Subject: below --
2021-03-18 10:30 Michael Meissner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).