[gcc(refs/users/meissner/heads/work041)] Add VEC_DUPLICATE insn/split.
Michael Meissner
meissner@gcc.gnu.org
Thu Mar 18 10:30:46 GMT 2021
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")]
More information about the Gcc-cvs
mailing list