public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/wschmidt/heads/builtins4)] rs6000: Add MMA builtins
@ 2020-11-24 16:44 William Schmidt
0 siblings, 0 replies; 4+ messages in thread
From: William Schmidt @ 2020-11-24 16:44 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:a295aad4ef9f8db946235c7b4cb684542b7b4869
commit a295aad4ef9f8db946235c7b4cb684542b7b4869
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Nov 2 09:41:04 2020 -0500
rs6000: Add MMA builtins
2020-11-02 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Add MMA builtins; add
comments about Darwin CfString.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 405 +++++++++++++++++++++++++++++++
1 file changed, 405 insertions(+)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 6bda0aba4ec..ef1f34db778 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -3165,3 +3165,408 @@
const unsigned long long __builtin_pextd (unsigned long long, unsigned long long);
PEXTD pextd {}
+
+
+; TODO: Land-mine alert.
+;
+; The original built-in support has code that assumes the internal
+; copy of an MMA built-in function appears immediately after the
+; external copy in the built-in table. This is fragile. For the
+; new support, we should transition this to do a name lookup in
+; the built-in hash table, but to start with we will honor the
+; positioning of the built-ins in the table. Note that right now
+; there is going to be breakage with __builtin_mma_disassemble_{acc,pair}
+; since they each require a blank builtin to follow them with icode
+; CODE_FOR_nothing.
+[mma]
+ void __builtin_mma_assemble_acc (v512 *, vuc, vuc, vuc, vuc);
+ ASSEMBLE_ACC nothing {mma}
+
+ v512 __builtin_mma_assemble_acc_internal (vuc, vuc, vuc, vuc);
+ ASSEMBLE_ACC_INTERNAL mma_assemble_acc {mma}
+
+ void __builtin_mma_assemble_pair (v256 *, vuc, vuc);
+ ASSEMBLE_PAIR nothing {mma}
+
+ v256 __builtin_mma_assemble_pair_internal (vuc, vuc);
+ ASSEMBLE_PAIR_INTERNAL mma_assemble_pair {mma}
+
+ void __builtin_mma_disassemble_acc (void *, v512 *);
+ DISASSEMBLE_ACC nothing {mma,quad}
+
+ void __builtin_mma_disassemble_pair (void *, v256 *);
+ DISASSEMBLE_PAIR nothing {mma,pair}
+
+ void __builtin_mma_pmxvbf16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvbf16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2_INTERNAL mma_pmxvbf16ger2 {mma}
+
+ void __builtin_mma_pmxvbf16ger2nn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2nn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NN_INTERNAL mma_pmxvbf16ger2nn {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2np (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2np_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NP_INTERNAL mma_pmxvbf16ger2np {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2pn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2pn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PN_INTERNAL mma_pmxvbf16ger2pn {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PP_INTERNAL mma_pmxvbf16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvf16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2_INTERNAL mma_pmxvf16ger2 {mma}
+
+ void __builtin_mma_pmxvf16ger2nn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2nn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NN_INTERNAL mma_pmxvf16ger2nn {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2np (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2np_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NP_INTERNAL mma_pmxvf16ger2np {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2pn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2pn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PN_INTERNAL mma_pmxvf16ger2pn {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PP_INTERNAL mma_pmxvf16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvf32ger (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GER nothing {mma}
+
+ v512 __builtin_mma_pmxvf32ger_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GER_INTERNAL mma_pmxvf32ger {mma}
+
+ void __builtin_mma_pmxvf32gernn (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gernn_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNN_INTERNAL mma_pmxvf32gernn {mma,quad}
+
+ void __builtin_mma_pmxvf32gernp (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gernp_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNP_INTERNAL mma_pmxvf32gernp {mma,quad}
+
+ void __builtin_mma_pmxvf32gerpn (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gerpn_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPN_INTERNAL mma_pmxvf32gerpn {mma,quad}
+
+ void __builtin_mma_pmxvf32gerpp (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gerpp_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPP_INTERNAL mma_pmxvf32gerpp {mma,quad}
+
+ void __builtin_mma_pmxvf64ger (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GER nothing {mma,pair}
+
+ v512 __builtin_mma_pmxvf64ger_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GER_INTERNAL mma_pmxvf64ger {mma,pair}
+
+ void __builtin_mma_pmxvf64gernn (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gernn_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNN_INTERNAL mma_pmxvf64gernn {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gernp (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gernp_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNP_INTERNAL mma_pmxvf64gernp {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gerpn (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gerpn_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPN_INTERNAL mma_pmxvf64gerpn {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gerpp (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gerpp_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPP_INTERNAL mma_pmxvf64gerpp {mma,pair,quad}
+
+ void __builtin_mma_pmxvi16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvi16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2_INTERNAL mma_pmxvi16ger2 {mma}
+
+ void __builtin_mma_pmxvi16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2PP_INTERNAL mma_pmxvi16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvi16ger2s (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2S nothing {mma}
+
+ v512 __builtin_mma_pmxvi16ger2s_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2S_INTERNAL mma_pmxvi16ger2s {mma}
+
+ void __builtin_mma_pmxvi16ger2spp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2SPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi16ger2spp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2SPP_INTERNAL mma_pmxvi16ger2spp {mma,quad}
+
+ void __builtin_mma_pmxvi4ger8 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<8>);
+ PMXVI4GER8 nothing {mma}
+
+ v512 __builtin_mma_pmxvi4ger8_internal (vuc, vuc, const int<4>, const int<4>, const int<8>);
+ PMXVI4GER8_INTERNAL mma_pmxvi4ger8 {mma}
+
+ void __builtin_mma_pmxvi4ger8pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI4GER8PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi4ger8pp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI4GER8PP_INTERNAL mma_pmxvi4ger8pp {mma,quad}
+
+ void __builtin_mma_pmxvi8ger4 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4 nothing {mma}
+
+ v512 __builtin_mma_pmxvi8ger4_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4_INTERNAL mma_pmxvi8ger4 {mma}
+
+ void __builtin_mma_pmxvi8ger4pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi8ger4pp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4PP_INTERNAL mma_pmxvi8ger4pp {mma,quad}
+
+ void __builtin_mma_pmxvi8ger4spp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4SPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi8ger4spp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4SPP_INTERNAL mma_pmxvi8ger4spp {mma,quad}
+
+ void __builtin_mma_xvbf16ger2 (v512 *, vuc, vuc);
+ XVBF16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvbf16ger2_internal (vuc, vuc);
+ XVBF16GER2_INTERNAL mma_xvbf16ger2 {mma}
+
+ void __builtin_mma_xvbf16ger2nn (v512 *, vuc, vuc);
+ XVBF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2nn_internal (vuc, vuc);
+ XVBF16GER2NN_INTERNAL mma_xvbf16ger2nn {mma,quad}
+
+ void __builtin_mma_xvbf16ger2np (v512 *, vuc, vuc);
+ XVBF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2np_internal (vuc, vuc);
+ XVBF16GER2NP_INTERNAL mma_xvbf16ger2np {mma,quad}
+
+ void __builtin_mma_xvbf16ger2pn (v512 *, vuc, vuc);
+ XVBF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2pn_internal (vuc, vuc);
+ XVBF16GER2PN_INTERNAL mma_xvbf16ger2pn {mma,quad}
+
+ void __builtin_mma_xvbf16ger2pp (v512 *, vuc, vuc);
+ XVBF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2pp_internal (vuc, vuc);
+ XVBF16GER2PP_INTERNAL mma_xvbf16ger2pp {mma,quad}
+
+ void __builtin_mma_xvf16ger2 (v512 *, vuc, vuc);
+ XVF16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvf16ger2_internal (vuc, vuc);
+ XVF16GER2_INTERNAL mma_xvf16ger2 {mma}
+
+ void __builtin_mma_xvf16ger2nn (v512 *, vuc, vuc);
+ XVF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2nn_internal (vuc, vuc);
+ XVF16GER2NN_INTERNAL mma_xvf16ger2nn {mma,quad}
+
+ void __builtin_mma_xvf16ger2np (v512 *, vuc, vuc);
+ XVF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2np_internal (vuc, vuc);
+ XVF16GER2NP_INTERNAL mma_xvf16ger2np {mma,quad}
+
+ void __builtin_mma_xvf16ger2pn (v512 *, vuc, vuc);
+ XVF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2pn_internal (vuc, vuc);
+ XVF16GER2PN_INTERNAL mma_xvf16ger2pn {mma,quad}
+
+ void __builtin_mma_xvf16ger2pp (v512 *, vuc, vuc);
+ XVF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2pp_internal (vuc, vuc);
+ XVF16GER2PP_INTERNAL mma_xvf16ger2pp {mma,quad}
+
+ void __builtin_mma_xvf32ger (v512 *, vuc, vuc);
+ XVF32GER nothing {mma}
+
+ v512 __builtin_mma_xvf32ger_internal (vuc, vuc);
+ XVF32GER_INTERNAL mma_xvf32ger {mma}
+
+ void __builtin_mma_xvf32gernn (v512 *, vuc, vuc);
+ XVF32GERNN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gernn_internal (vuc, vuc);
+ XVF32GERNN_INTERNAL mma_xvf32gernn {mma,quad}
+
+ void __builtin_mma_xvf32gernp (v512 *, vuc, vuc);
+ XVF32GERNP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gernp_internal (vuc, vuc);
+ XVF32GERNP_INTERNAL mma_xvf32gernp {mma,quad}
+
+ void __builtin_mma_xvf32gerpn (v512 *, vuc, vuc);
+ XVF32GERPN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gerpn_internal (vuc, vuc);
+ XVF32GERPN_INTERNAL mma_xvf32gerpn {mma,quad}
+
+ void __builtin_mma_xvf32gerpp (v512 *, vuc, vuc);
+ XVF32GERPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gerpp_internal (vuc, vuc);
+ XVF32GERPP_INTERNAL mma_xvf32gerpp {mma,quad}
+
+ void __builtin_mma_xvf64ger (v512 *, v256, vuc);
+ XVF64GER nothing {mma,pair}
+
+ v512 __builtin_mma_xvf64ger_internal (v256, vuc);
+ XVF64GER_INTERNAL mma_xvf64ger {mma,pair}
+
+ void __builtin_mma_xvf64gernn (v512 *, v256, vuc);
+ XVF64GERNN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gernn_internal (v256, vuc);
+ XVF64GERNN_INTERNAL mma_xvf64gernn {mma,pair,quad}
+
+ void __builtin_mma_xvf64gernp (v512 *, v256, vuc);
+ XVF64GERNP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gernp_internal (v256, vuc);
+ XVF64GERNP_INTERNAL mma_xvf64gernp {mma,pair,quad}
+
+ void __builtin_mma_xvf64gerpn (v512 *, v256, vuc);
+ XVF64GERPN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gerpn_internal (v256, vuc);
+ XVF64GERPN_INTERNAL mma_xvf64gerpn {mma,pair,quad}
+
+ void __builtin_mma_xvf64gerpp (v512 *, v256, vuc);
+ XVF64GERPP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gerpp_internal (v256, vuc);
+ XVF64GERPP_INTERNAL mma_xvf64gerpp {mma,pair,quad}
+
+ void __builtin_mma_xvi16ger2 (v512 *, vuc, vuc);
+ XVI16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvi16ger2_internal (vuc, vuc);
+ XVI16GER2_INTERNAL mma_xvi16ger2 {mma}
+
+ void __builtin_mma_xvi16ger2pp (v512 *, vuc, vuc);
+ XVI16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi16ger2pp_internal (vuc, vuc);
+ XVI16GER2PP_INTERNAL mma_xvi16ger2pp {mma,quad}
+
+ void __builtin_mma_xvi16ger2s (v512 *, vuc, vuc);
+ XVI16GER2S nothing {mma}
+
+ v512 __builtin_mma_xvi16ger2s_internal (vuc, vuc);
+ XVI16GER2S_INTERNAL mma_xvi16ger2s {mma}
+
+ void __builtin_mma_xvi16ger2spp (v512 *, vuc, vuc);
+ XVI16GER2SPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi16ger2spp_internal (vuc, vuc);
+ XVI16GER2SPP_INTERNAL mma_xvi16ger2spp {mma,quad}
+
+ void __builtin_mma_xvi4ger8 (v512 *, vuc, vuc);
+ XVI4GER8 nothing {mma}
+
+ v512 __builtin_mma_xvi4ger8_internal (vuc, vuc);
+ XVI4GER8_INTERNAL mma_xvi4ger8 {mma}
+
+ void __builtin_mma_xvi4ger8pp (v512 *, vuc, vuc);
+ XVI4GER8PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi4ger8pp_internal (vuc, vuc);
+ XVI4GER8PP_INTERNAL mma_xvi4ger8pp {mma,quad}
+
+ void __builtin_mma_xvi8ger4 (v512 *, vuc, vuc);
+ XVI8GER4 nothing {mma}
+
+ v512 __builtin_mma_xvi8ger4_internal (vuc, vuc);
+ XVI8GER4_INTERNAL mma_xvi8ger4 {mma}
+
+ void __builtin_mma_xvi8ger4pp (v512 *, vuc, vuc);
+ XVI8GER4PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi8ger4pp_internal (vuc, vuc);
+ XVI8GER4PP_INTERNAL mma_xvi8ger4pp {mma,quad}
+
+ void __builtin_mma_xvi8ger4spp (v512 *, vuc, vuc);
+ XVI8GER4SPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi8ger4spp_internal (vuc, vuc);
+ XVI8GER4SPP_INTERNAL mma_xvi8ger4spp {mma,quad}
+
+ void __builtin_mma_xxmfacc (v512 *);
+ XXMFACC nothing {mma,quad}
+
+ v512 __builtin_mma_xxmfacc_internal ();
+ XXMFACC_INTERNAL mma_xxmfacc {mma,quad}
+
+ void __builtin_mma_xxmtacc (v512 *);
+ XXMTACC nothing {mma,quad}
+
+ v512 __builtin_mma_xxmtacc_internal ();
+ XXMTACC_INTERNAL mma_xxmtacc {mma,quad}
+
+ void __builtin_mma_xxsetaccz (v512 *);
+ XXSETACCZ nothing {mma}
+
+ v512 __builtin_mma_xxsetaccz_internal ();
+ XXSETACCZ_INTERNAL mma_xxsetaccz {mma}
+
+
+
+; #### We don't yet have the Darwin CfString builtin supported, but
+; that has its own special handling so it should go in there, I guess.
+;
+; BU_SPECIAL_X (RS6000_BUILTIN_CFSTRING, "__builtin_cfstring", RS6000_BTM_ALWAYS,
+; RS6000_BTC_MISC)
^ permalink raw reply [flat|nested] 4+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins4)] rs6000: Add MMA builtins
@ 2021-02-07 18:13 William Schmidt
0 siblings, 0 replies; 4+ messages in thread
From: William Schmidt @ 2021-02-07 18:13 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:f8ccc3a422f341a3d1b89fc4b5dc5973f2d0f610
commit f8ccc3a422f341a3d1b89fc4b5dc5973f2d0f610
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Nov 2 09:41:04 2020 -0500
rs6000: Add MMA builtins
2020-11-02 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Add MMA builtins; add
comments about Darwin CfString.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 405 +++++++++++++++++++++++++++++++
1 file changed, 405 insertions(+)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 6bda0aba4ec..ef1f34db778 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -3165,3 +3165,408 @@
const unsigned long long __builtin_pextd (unsigned long long, unsigned long long);
PEXTD pextd {}
+
+
+; TODO: Land-mine alert.
+;
+; The original built-in support has code that assumes the internal
+; copy of an MMA built-in function appears immediately after the
+; external copy in the built-in table. This is fragile. For the
+; new support, we should transition this to do a name lookup in
+; the built-in hash table, but to start with we will honor the
+; positioning of the built-ins in the table. Note that right now
+; there is going to be breakage with __builtin_mma_disassemble_{acc,pair}
+; since they each require a blank builtin to follow them with icode
+; CODE_FOR_nothing.
+[mma]
+ void __builtin_mma_assemble_acc (v512 *, vuc, vuc, vuc, vuc);
+ ASSEMBLE_ACC nothing {mma}
+
+ v512 __builtin_mma_assemble_acc_internal (vuc, vuc, vuc, vuc);
+ ASSEMBLE_ACC_INTERNAL mma_assemble_acc {mma}
+
+ void __builtin_mma_assemble_pair (v256 *, vuc, vuc);
+ ASSEMBLE_PAIR nothing {mma}
+
+ v256 __builtin_mma_assemble_pair_internal (vuc, vuc);
+ ASSEMBLE_PAIR_INTERNAL mma_assemble_pair {mma}
+
+ void __builtin_mma_disassemble_acc (void *, v512 *);
+ DISASSEMBLE_ACC nothing {mma,quad}
+
+ void __builtin_mma_disassemble_pair (void *, v256 *);
+ DISASSEMBLE_PAIR nothing {mma,pair}
+
+ void __builtin_mma_pmxvbf16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvbf16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2_INTERNAL mma_pmxvbf16ger2 {mma}
+
+ void __builtin_mma_pmxvbf16ger2nn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2nn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NN_INTERNAL mma_pmxvbf16ger2nn {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2np (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2np_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NP_INTERNAL mma_pmxvbf16ger2np {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2pn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2pn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PN_INTERNAL mma_pmxvbf16ger2pn {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PP_INTERNAL mma_pmxvbf16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvf16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2_INTERNAL mma_pmxvf16ger2 {mma}
+
+ void __builtin_mma_pmxvf16ger2nn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2nn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NN_INTERNAL mma_pmxvf16ger2nn {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2np (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2np_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NP_INTERNAL mma_pmxvf16ger2np {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2pn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2pn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PN_INTERNAL mma_pmxvf16ger2pn {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PP_INTERNAL mma_pmxvf16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvf32ger (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GER nothing {mma}
+
+ v512 __builtin_mma_pmxvf32ger_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GER_INTERNAL mma_pmxvf32ger {mma}
+
+ void __builtin_mma_pmxvf32gernn (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gernn_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNN_INTERNAL mma_pmxvf32gernn {mma,quad}
+
+ void __builtin_mma_pmxvf32gernp (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gernp_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNP_INTERNAL mma_pmxvf32gernp {mma,quad}
+
+ void __builtin_mma_pmxvf32gerpn (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gerpn_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPN_INTERNAL mma_pmxvf32gerpn {mma,quad}
+
+ void __builtin_mma_pmxvf32gerpp (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gerpp_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPP_INTERNAL mma_pmxvf32gerpp {mma,quad}
+
+ void __builtin_mma_pmxvf64ger (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GER nothing {mma,pair}
+
+ v512 __builtin_mma_pmxvf64ger_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GER_INTERNAL mma_pmxvf64ger {mma,pair}
+
+ void __builtin_mma_pmxvf64gernn (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gernn_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNN_INTERNAL mma_pmxvf64gernn {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gernp (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gernp_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNP_INTERNAL mma_pmxvf64gernp {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gerpn (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gerpn_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPN_INTERNAL mma_pmxvf64gerpn {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gerpp (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gerpp_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPP_INTERNAL mma_pmxvf64gerpp {mma,pair,quad}
+
+ void __builtin_mma_pmxvi16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvi16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2_INTERNAL mma_pmxvi16ger2 {mma}
+
+ void __builtin_mma_pmxvi16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2PP_INTERNAL mma_pmxvi16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvi16ger2s (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2S nothing {mma}
+
+ v512 __builtin_mma_pmxvi16ger2s_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2S_INTERNAL mma_pmxvi16ger2s {mma}
+
+ void __builtin_mma_pmxvi16ger2spp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2SPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi16ger2spp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2SPP_INTERNAL mma_pmxvi16ger2spp {mma,quad}
+
+ void __builtin_mma_pmxvi4ger8 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<8>);
+ PMXVI4GER8 nothing {mma}
+
+ v512 __builtin_mma_pmxvi4ger8_internal (vuc, vuc, const int<4>, const int<4>, const int<8>);
+ PMXVI4GER8_INTERNAL mma_pmxvi4ger8 {mma}
+
+ void __builtin_mma_pmxvi4ger8pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI4GER8PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi4ger8pp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI4GER8PP_INTERNAL mma_pmxvi4ger8pp {mma,quad}
+
+ void __builtin_mma_pmxvi8ger4 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4 nothing {mma}
+
+ v512 __builtin_mma_pmxvi8ger4_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4_INTERNAL mma_pmxvi8ger4 {mma}
+
+ void __builtin_mma_pmxvi8ger4pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi8ger4pp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4PP_INTERNAL mma_pmxvi8ger4pp {mma,quad}
+
+ void __builtin_mma_pmxvi8ger4spp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4SPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi8ger4spp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4SPP_INTERNAL mma_pmxvi8ger4spp {mma,quad}
+
+ void __builtin_mma_xvbf16ger2 (v512 *, vuc, vuc);
+ XVBF16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvbf16ger2_internal (vuc, vuc);
+ XVBF16GER2_INTERNAL mma_xvbf16ger2 {mma}
+
+ void __builtin_mma_xvbf16ger2nn (v512 *, vuc, vuc);
+ XVBF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2nn_internal (vuc, vuc);
+ XVBF16GER2NN_INTERNAL mma_xvbf16ger2nn {mma,quad}
+
+ void __builtin_mma_xvbf16ger2np (v512 *, vuc, vuc);
+ XVBF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2np_internal (vuc, vuc);
+ XVBF16GER2NP_INTERNAL mma_xvbf16ger2np {mma,quad}
+
+ void __builtin_mma_xvbf16ger2pn (v512 *, vuc, vuc);
+ XVBF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2pn_internal (vuc, vuc);
+ XVBF16GER2PN_INTERNAL mma_xvbf16ger2pn {mma,quad}
+
+ void __builtin_mma_xvbf16ger2pp (v512 *, vuc, vuc);
+ XVBF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2pp_internal (vuc, vuc);
+ XVBF16GER2PP_INTERNAL mma_xvbf16ger2pp {mma,quad}
+
+ void __builtin_mma_xvf16ger2 (v512 *, vuc, vuc);
+ XVF16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvf16ger2_internal (vuc, vuc);
+ XVF16GER2_INTERNAL mma_xvf16ger2 {mma}
+
+ void __builtin_mma_xvf16ger2nn (v512 *, vuc, vuc);
+ XVF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2nn_internal (vuc, vuc);
+ XVF16GER2NN_INTERNAL mma_xvf16ger2nn {mma,quad}
+
+ void __builtin_mma_xvf16ger2np (v512 *, vuc, vuc);
+ XVF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2np_internal (vuc, vuc);
+ XVF16GER2NP_INTERNAL mma_xvf16ger2np {mma,quad}
+
+ void __builtin_mma_xvf16ger2pn (v512 *, vuc, vuc);
+ XVF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2pn_internal (vuc, vuc);
+ XVF16GER2PN_INTERNAL mma_xvf16ger2pn {mma,quad}
+
+ void __builtin_mma_xvf16ger2pp (v512 *, vuc, vuc);
+ XVF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2pp_internal (vuc, vuc);
+ XVF16GER2PP_INTERNAL mma_xvf16ger2pp {mma,quad}
+
+ void __builtin_mma_xvf32ger (v512 *, vuc, vuc);
+ XVF32GER nothing {mma}
+
+ v512 __builtin_mma_xvf32ger_internal (vuc, vuc);
+ XVF32GER_INTERNAL mma_xvf32ger {mma}
+
+ void __builtin_mma_xvf32gernn (v512 *, vuc, vuc);
+ XVF32GERNN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gernn_internal (vuc, vuc);
+ XVF32GERNN_INTERNAL mma_xvf32gernn {mma,quad}
+
+ void __builtin_mma_xvf32gernp (v512 *, vuc, vuc);
+ XVF32GERNP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gernp_internal (vuc, vuc);
+ XVF32GERNP_INTERNAL mma_xvf32gernp {mma,quad}
+
+ void __builtin_mma_xvf32gerpn (v512 *, vuc, vuc);
+ XVF32GERPN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gerpn_internal (vuc, vuc);
+ XVF32GERPN_INTERNAL mma_xvf32gerpn {mma,quad}
+
+ void __builtin_mma_xvf32gerpp (v512 *, vuc, vuc);
+ XVF32GERPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gerpp_internal (vuc, vuc);
+ XVF32GERPP_INTERNAL mma_xvf32gerpp {mma,quad}
+
+ void __builtin_mma_xvf64ger (v512 *, v256, vuc);
+ XVF64GER nothing {mma,pair}
+
+ v512 __builtin_mma_xvf64ger_internal (v256, vuc);
+ XVF64GER_INTERNAL mma_xvf64ger {mma,pair}
+
+ void __builtin_mma_xvf64gernn (v512 *, v256, vuc);
+ XVF64GERNN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gernn_internal (v256, vuc);
+ XVF64GERNN_INTERNAL mma_xvf64gernn {mma,pair,quad}
+
+ void __builtin_mma_xvf64gernp (v512 *, v256, vuc);
+ XVF64GERNP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gernp_internal (v256, vuc);
+ XVF64GERNP_INTERNAL mma_xvf64gernp {mma,pair,quad}
+
+ void __builtin_mma_xvf64gerpn (v512 *, v256, vuc);
+ XVF64GERPN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gerpn_internal (v256, vuc);
+ XVF64GERPN_INTERNAL mma_xvf64gerpn {mma,pair,quad}
+
+ void __builtin_mma_xvf64gerpp (v512 *, v256, vuc);
+ XVF64GERPP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gerpp_internal (v256, vuc);
+ XVF64GERPP_INTERNAL mma_xvf64gerpp {mma,pair,quad}
+
+ void __builtin_mma_xvi16ger2 (v512 *, vuc, vuc);
+ XVI16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvi16ger2_internal (vuc, vuc);
+ XVI16GER2_INTERNAL mma_xvi16ger2 {mma}
+
+ void __builtin_mma_xvi16ger2pp (v512 *, vuc, vuc);
+ XVI16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi16ger2pp_internal (vuc, vuc);
+ XVI16GER2PP_INTERNAL mma_xvi16ger2pp {mma,quad}
+
+ void __builtin_mma_xvi16ger2s (v512 *, vuc, vuc);
+ XVI16GER2S nothing {mma}
+
+ v512 __builtin_mma_xvi16ger2s_internal (vuc, vuc);
+ XVI16GER2S_INTERNAL mma_xvi16ger2s {mma}
+
+ void __builtin_mma_xvi16ger2spp (v512 *, vuc, vuc);
+ XVI16GER2SPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi16ger2spp_internal (vuc, vuc);
+ XVI16GER2SPP_INTERNAL mma_xvi16ger2spp {mma,quad}
+
+ void __builtin_mma_xvi4ger8 (v512 *, vuc, vuc);
+ XVI4GER8 nothing {mma}
+
+ v512 __builtin_mma_xvi4ger8_internal (vuc, vuc);
+ XVI4GER8_INTERNAL mma_xvi4ger8 {mma}
+
+ void __builtin_mma_xvi4ger8pp (v512 *, vuc, vuc);
+ XVI4GER8PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi4ger8pp_internal (vuc, vuc);
+ XVI4GER8PP_INTERNAL mma_xvi4ger8pp {mma,quad}
+
+ void __builtin_mma_xvi8ger4 (v512 *, vuc, vuc);
+ XVI8GER4 nothing {mma}
+
+ v512 __builtin_mma_xvi8ger4_internal (vuc, vuc);
+ XVI8GER4_INTERNAL mma_xvi8ger4 {mma}
+
+ void __builtin_mma_xvi8ger4pp (v512 *, vuc, vuc);
+ XVI8GER4PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi8ger4pp_internal (vuc, vuc);
+ XVI8GER4PP_INTERNAL mma_xvi8ger4pp {mma,quad}
+
+ void __builtin_mma_xvi8ger4spp (v512 *, vuc, vuc);
+ XVI8GER4SPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi8ger4spp_internal (vuc, vuc);
+ XVI8GER4SPP_INTERNAL mma_xvi8ger4spp {mma,quad}
+
+ void __builtin_mma_xxmfacc (v512 *);
+ XXMFACC nothing {mma,quad}
+
+ v512 __builtin_mma_xxmfacc_internal ();
+ XXMFACC_INTERNAL mma_xxmfacc {mma,quad}
+
+ void __builtin_mma_xxmtacc (v512 *);
+ XXMTACC nothing {mma,quad}
+
+ v512 __builtin_mma_xxmtacc_internal ();
+ XXMTACC_INTERNAL mma_xxmtacc {mma,quad}
+
+ void __builtin_mma_xxsetaccz (v512 *);
+ XXSETACCZ nothing {mma}
+
+ v512 __builtin_mma_xxsetaccz_internal ();
+ XXSETACCZ_INTERNAL mma_xxsetaccz {mma}
+
+
+
+; #### We don't yet have the Darwin CfString builtin supported, but
+; that has its own special handling so it should go in there, I guess.
+;
+; BU_SPECIAL_X (RS6000_BUILTIN_CFSTRING, "__builtin_cfstring", RS6000_BTM_ALWAYS,
+; RS6000_BTC_MISC)
^ permalink raw reply [flat|nested] 4+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins4)] rs6000: Add MMA builtins
@ 2020-12-16 18:06 William Schmidt
0 siblings, 0 replies; 4+ messages in thread
From: William Schmidt @ 2020-12-16 18:06 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:572c7716d4a0e06845f08681f57965e286831026
commit 572c7716d4a0e06845f08681f57965e286831026
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Nov 2 09:41:04 2020 -0500
rs6000: Add MMA builtins
2020-11-02 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Add MMA builtins; add
comments about Darwin CfString.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 405 +++++++++++++++++++++++++++++++
1 file changed, 405 insertions(+)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 6bda0aba4ec..ef1f34db778 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -3165,3 +3165,408 @@
const unsigned long long __builtin_pextd (unsigned long long, unsigned long long);
PEXTD pextd {}
+
+
+; TODO: Land-mine alert.
+;
+; The original built-in support has code that assumes the internal
+; copy of an MMA built-in function appears immediately after the
+; external copy in the built-in table. This is fragile. For the
+; new support, we should transition this to do a name lookup in
+; the built-in hash table, but to start with we will honor the
+; positioning of the built-ins in the table. Note that right now
+; there is going to be breakage with __builtin_mma_disassemble_{acc,pair}
+; since they each require a blank builtin to follow them with icode
+; CODE_FOR_nothing.
+[mma]
+ void __builtin_mma_assemble_acc (v512 *, vuc, vuc, vuc, vuc);
+ ASSEMBLE_ACC nothing {mma}
+
+ v512 __builtin_mma_assemble_acc_internal (vuc, vuc, vuc, vuc);
+ ASSEMBLE_ACC_INTERNAL mma_assemble_acc {mma}
+
+ void __builtin_mma_assemble_pair (v256 *, vuc, vuc);
+ ASSEMBLE_PAIR nothing {mma}
+
+ v256 __builtin_mma_assemble_pair_internal (vuc, vuc);
+ ASSEMBLE_PAIR_INTERNAL mma_assemble_pair {mma}
+
+ void __builtin_mma_disassemble_acc (void *, v512 *);
+ DISASSEMBLE_ACC nothing {mma,quad}
+
+ void __builtin_mma_disassemble_pair (void *, v256 *);
+ DISASSEMBLE_PAIR nothing {mma,pair}
+
+ void __builtin_mma_pmxvbf16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvbf16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2_INTERNAL mma_pmxvbf16ger2 {mma}
+
+ void __builtin_mma_pmxvbf16ger2nn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2nn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NN_INTERNAL mma_pmxvbf16ger2nn {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2np (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2np_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NP_INTERNAL mma_pmxvbf16ger2np {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2pn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2pn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PN_INTERNAL mma_pmxvbf16ger2pn {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PP_INTERNAL mma_pmxvbf16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvf16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2_INTERNAL mma_pmxvf16ger2 {mma}
+
+ void __builtin_mma_pmxvf16ger2nn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2nn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NN_INTERNAL mma_pmxvf16ger2nn {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2np (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2np_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NP_INTERNAL mma_pmxvf16ger2np {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2pn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2pn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PN_INTERNAL mma_pmxvf16ger2pn {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PP_INTERNAL mma_pmxvf16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvf32ger (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GER nothing {mma}
+
+ v512 __builtin_mma_pmxvf32ger_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GER_INTERNAL mma_pmxvf32ger {mma}
+
+ void __builtin_mma_pmxvf32gernn (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gernn_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNN_INTERNAL mma_pmxvf32gernn {mma,quad}
+
+ void __builtin_mma_pmxvf32gernp (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gernp_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNP_INTERNAL mma_pmxvf32gernp {mma,quad}
+
+ void __builtin_mma_pmxvf32gerpn (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gerpn_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPN_INTERNAL mma_pmxvf32gerpn {mma,quad}
+
+ void __builtin_mma_pmxvf32gerpp (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gerpp_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPP_INTERNAL mma_pmxvf32gerpp {mma,quad}
+
+ void __builtin_mma_pmxvf64ger (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GER nothing {mma,pair}
+
+ v512 __builtin_mma_pmxvf64ger_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GER_INTERNAL mma_pmxvf64ger {mma,pair}
+
+ void __builtin_mma_pmxvf64gernn (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gernn_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNN_INTERNAL mma_pmxvf64gernn {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gernp (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gernp_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNP_INTERNAL mma_pmxvf64gernp {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gerpn (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gerpn_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPN_INTERNAL mma_pmxvf64gerpn {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gerpp (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gerpp_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPP_INTERNAL mma_pmxvf64gerpp {mma,pair,quad}
+
+ void __builtin_mma_pmxvi16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvi16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2_INTERNAL mma_pmxvi16ger2 {mma}
+
+ void __builtin_mma_pmxvi16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2PP_INTERNAL mma_pmxvi16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvi16ger2s (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2S nothing {mma}
+
+ v512 __builtin_mma_pmxvi16ger2s_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2S_INTERNAL mma_pmxvi16ger2s {mma}
+
+ void __builtin_mma_pmxvi16ger2spp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2SPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi16ger2spp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2SPP_INTERNAL mma_pmxvi16ger2spp {mma,quad}
+
+ void __builtin_mma_pmxvi4ger8 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<8>);
+ PMXVI4GER8 nothing {mma}
+
+ v512 __builtin_mma_pmxvi4ger8_internal (vuc, vuc, const int<4>, const int<4>, const int<8>);
+ PMXVI4GER8_INTERNAL mma_pmxvi4ger8 {mma}
+
+ void __builtin_mma_pmxvi4ger8pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI4GER8PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi4ger8pp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI4GER8PP_INTERNAL mma_pmxvi4ger8pp {mma,quad}
+
+ void __builtin_mma_pmxvi8ger4 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4 nothing {mma}
+
+ v512 __builtin_mma_pmxvi8ger4_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4_INTERNAL mma_pmxvi8ger4 {mma}
+
+ void __builtin_mma_pmxvi8ger4pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi8ger4pp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4PP_INTERNAL mma_pmxvi8ger4pp {mma,quad}
+
+ void __builtin_mma_pmxvi8ger4spp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4SPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi8ger4spp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4SPP_INTERNAL mma_pmxvi8ger4spp {mma,quad}
+
+ void __builtin_mma_xvbf16ger2 (v512 *, vuc, vuc);
+ XVBF16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvbf16ger2_internal (vuc, vuc);
+ XVBF16GER2_INTERNAL mma_xvbf16ger2 {mma}
+
+ void __builtin_mma_xvbf16ger2nn (v512 *, vuc, vuc);
+ XVBF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2nn_internal (vuc, vuc);
+ XVBF16GER2NN_INTERNAL mma_xvbf16ger2nn {mma,quad}
+
+ void __builtin_mma_xvbf16ger2np (v512 *, vuc, vuc);
+ XVBF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2np_internal (vuc, vuc);
+ XVBF16GER2NP_INTERNAL mma_xvbf16ger2np {mma,quad}
+
+ void __builtin_mma_xvbf16ger2pn (v512 *, vuc, vuc);
+ XVBF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2pn_internal (vuc, vuc);
+ XVBF16GER2PN_INTERNAL mma_xvbf16ger2pn {mma,quad}
+
+ void __builtin_mma_xvbf16ger2pp (v512 *, vuc, vuc);
+ XVBF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2pp_internal (vuc, vuc);
+ XVBF16GER2PP_INTERNAL mma_xvbf16ger2pp {mma,quad}
+
+ void __builtin_mma_xvf16ger2 (v512 *, vuc, vuc);
+ XVF16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvf16ger2_internal (vuc, vuc);
+ XVF16GER2_INTERNAL mma_xvf16ger2 {mma}
+
+ void __builtin_mma_xvf16ger2nn (v512 *, vuc, vuc);
+ XVF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2nn_internal (vuc, vuc);
+ XVF16GER2NN_INTERNAL mma_xvf16ger2nn {mma,quad}
+
+ void __builtin_mma_xvf16ger2np (v512 *, vuc, vuc);
+ XVF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2np_internal (vuc, vuc);
+ XVF16GER2NP_INTERNAL mma_xvf16ger2np {mma,quad}
+
+ void __builtin_mma_xvf16ger2pn (v512 *, vuc, vuc);
+ XVF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2pn_internal (vuc, vuc);
+ XVF16GER2PN_INTERNAL mma_xvf16ger2pn {mma,quad}
+
+ void __builtin_mma_xvf16ger2pp (v512 *, vuc, vuc);
+ XVF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2pp_internal (vuc, vuc);
+ XVF16GER2PP_INTERNAL mma_xvf16ger2pp {mma,quad}
+
+ void __builtin_mma_xvf32ger (v512 *, vuc, vuc);
+ XVF32GER nothing {mma}
+
+ v512 __builtin_mma_xvf32ger_internal (vuc, vuc);
+ XVF32GER_INTERNAL mma_xvf32ger {mma}
+
+ void __builtin_mma_xvf32gernn (v512 *, vuc, vuc);
+ XVF32GERNN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gernn_internal (vuc, vuc);
+ XVF32GERNN_INTERNAL mma_xvf32gernn {mma,quad}
+
+ void __builtin_mma_xvf32gernp (v512 *, vuc, vuc);
+ XVF32GERNP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gernp_internal (vuc, vuc);
+ XVF32GERNP_INTERNAL mma_xvf32gernp {mma,quad}
+
+ void __builtin_mma_xvf32gerpn (v512 *, vuc, vuc);
+ XVF32GERPN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gerpn_internal (vuc, vuc);
+ XVF32GERPN_INTERNAL mma_xvf32gerpn {mma,quad}
+
+ void __builtin_mma_xvf32gerpp (v512 *, vuc, vuc);
+ XVF32GERPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gerpp_internal (vuc, vuc);
+ XVF32GERPP_INTERNAL mma_xvf32gerpp {mma,quad}
+
+ void __builtin_mma_xvf64ger (v512 *, v256, vuc);
+ XVF64GER nothing {mma,pair}
+
+ v512 __builtin_mma_xvf64ger_internal (v256, vuc);
+ XVF64GER_INTERNAL mma_xvf64ger {mma,pair}
+
+ void __builtin_mma_xvf64gernn (v512 *, v256, vuc);
+ XVF64GERNN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gernn_internal (v256, vuc);
+ XVF64GERNN_INTERNAL mma_xvf64gernn {mma,pair,quad}
+
+ void __builtin_mma_xvf64gernp (v512 *, v256, vuc);
+ XVF64GERNP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gernp_internal (v256, vuc);
+ XVF64GERNP_INTERNAL mma_xvf64gernp {mma,pair,quad}
+
+ void __builtin_mma_xvf64gerpn (v512 *, v256, vuc);
+ XVF64GERPN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gerpn_internal (v256, vuc);
+ XVF64GERPN_INTERNAL mma_xvf64gerpn {mma,pair,quad}
+
+ void __builtin_mma_xvf64gerpp (v512 *, v256, vuc);
+ XVF64GERPP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gerpp_internal (v256, vuc);
+ XVF64GERPP_INTERNAL mma_xvf64gerpp {mma,pair,quad}
+
+ void __builtin_mma_xvi16ger2 (v512 *, vuc, vuc);
+ XVI16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvi16ger2_internal (vuc, vuc);
+ XVI16GER2_INTERNAL mma_xvi16ger2 {mma}
+
+ void __builtin_mma_xvi16ger2pp (v512 *, vuc, vuc);
+ XVI16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi16ger2pp_internal (vuc, vuc);
+ XVI16GER2PP_INTERNAL mma_xvi16ger2pp {mma,quad}
+
+ void __builtin_mma_xvi16ger2s (v512 *, vuc, vuc);
+ XVI16GER2S nothing {mma}
+
+ v512 __builtin_mma_xvi16ger2s_internal (vuc, vuc);
+ XVI16GER2S_INTERNAL mma_xvi16ger2s {mma}
+
+ void __builtin_mma_xvi16ger2spp (v512 *, vuc, vuc);
+ XVI16GER2SPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi16ger2spp_internal (vuc, vuc);
+ XVI16GER2SPP_INTERNAL mma_xvi16ger2spp {mma,quad}
+
+ void __builtin_mma_xvi4ger8 (v512 *, vuc, vuc);
+ XVI4GER8 nothing {mma}
+
+ v512 __builtin_mma_xvi4ger8_internal (vuc, vuc);
+ XVI4GER8_INTERNAL mma_xvi4ger8 {mma}
+
+ void __builtin_mma_xvi4ger8pp (v512 *, vuc, vuc);
+ XVI4GER8PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi4ger8pp_internal (vuc, vuc);
+ XVI4GER8PP_INTERNAL mma_xvi4ger8pp {mma,quad}
+
+ void __builtin_mma_xvi8ger4 (v512 *, vuc, vuc);
+ XVI8GER4 nothing {mma}
+
+ v512 __builtin_mma_xvi8ger4_internal (vuc, vuc);
+ XVI8GER4_INTERNAL mma_xvi8ger4 {mma}
+
+ void __builtin_mma_xvi8ger4pp (v512 *, vuc, vuc);
+ XVI8GER4PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi8ger4pp_internal (vuc, vuc);
+ XVI8GER4PP_INTERNAL mma_xvi8ger4pp {mma,quad}
+
+ void __builtin_mma_xvi8ger4spp (v512 *, vuc, vuc);
+ XVI8GER4SPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi8ger4spp_internal (vuc, vuc);
+ XVI8GER4SPP_INTERNAL mma_xvi8ger4spp {mma,quad}
+
+ void __builtin_mma_xxmfacc (v512 *);
+ XXMFACC nothing {mma,quad}
+
+ v512 __builtin_mma_xxmfacc_internal ();
+ XXMFACC_INTERNAL mma_xxmfacc {mma,quad}
+
+ void __builtin_mma_xxmtacc (v512 *);
+ XXMTACC nothing {mma,quad}
+
+ v512 __builtin_mma_xxmtacc_internal ();
+ XXMTACC_INTERNAL mma_xxmtacc {mma,quad}
+
+ void __builtin_mma_xxsetaccz (v512 *);
+ XXSETACCZ nothing {mma}
+
+ v512 __builtin_mma_xxsetaccz_internal ();
+ XXSETACCZ_INTERNAL mma_xxsetaccz {mma}
+
+
+
+; #### We don't yet have the Darwin CfString builtin supported, but
+; that has its own special handling so it should go in there, I guess.
+;
+; BU_SPECIAL_X (RS6000_BUILTIN_CFSTRING, "__builtin_cfstring", RS6000_BTM_ALWAYS,
+; RS6000_BTC_MISC)
^ permalink raw reply [flat|nested] 4+ messages in thread
* [gcc(refs/users/wschmidt/heads/builtins4)] rs6000: Add MMA builtins
@ 2020-11-02 14:41 William Schmidt
0 siblings, 0 replies; 4+ messages in thread
From: William Schmidt @ 2020-11-02 14:41 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:d8712d659f39ff2d2376043a0bb35a1e9cdbbefc
commit d8712d659f39ff2d2376043a0bb35a1e9cdbbefc
Author: Bill Schmidt <wschmidt@linux.ibm.com>
Date: Mon Nov 2 09:41:04 2020 -0500
rs6000: Add MMA builtins
2020-11-02 Bill Schmidt <wschmidt@linux.ibm.com>
* config/rs6000/rs6000-builtin-new.def: Add MMA builtins; add
comments about Darwin CfString.
Diff:
---
gcc/config/rs6000/rs6000-builtin-new.def | 405 +++++++++++++++++++++++++++++++
1 file changed, 405 insertions(+)
diff --git a/gcc/config/rs6000/rs6000-builtin-new.def b/gcc/config/rs6000/rs6000-builtin-new.def
index 6bda0aba4ec..ef1f34db778 100644
--- a/gcc/config/rs6000/rs6000-builtin-new.def
+++ b/gcc/config/rs6000/rs6000-builtin-new.def
@@ -3165,3 +3165,408 @@
const unsigned long long __builtin_pextd (unsigned long long, unsigned long long);
PEXTD pextd {}
+
+
+; TODO: Land-mine alert.
+;
+; The original built-in support has code that assumes the internal
+; copy of an MMA built-in function appears immediately after the
+; external copy in the built-in table. This is fragile. For the
+; new support, we should transition this to do a name lookup in
+; the built-in hash table, but to start with we will honor the
+; positioning of the built-ins in the table. Note that right now
+; there is going to be breakage with __builtin_mma_disassemble_{acc,pair}
+; since they each require a blank builtin to follow them with icode
+; CODE_FOR_nothing.
+[mma]
+ void __builtin_mma_assemble_acc (v512 *, vuc, vuc, vuc, vuc);
+ ASSEMBLE_ACC nothing {mma}
+
+ v512 __builtin_mma_assemble_acc_internal (vuc, vuc, vuc, vuc);
+ ASSEMBLE_ACC_INTERNAL mma_assemble_acc {mma}
+
+ void __builtin_mma_assemble_pair (v256 *, vuc, vuc);
+ ASSEMBLE_PAIR nothing {mma}
+
+ v256 __builtin_mma_assemble_pair_internal (vuc, vuc);
+ ASSEMBLE_PAIR_INTERNAL mma_assemble_pair {mma}
+
+ void __builtin_mma_disassemble_acc (void *, v512 *);
+ DISASSEMBLE_ACC nothing {mma,quad}
+
+ void __builtin_mma_disassemble_pair (void *, v256 *);
+ DISASSEMBLE_PAIR nothing {mma,pair}
+
+ void __builtin_mma_pmxvbf16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvbf16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2_INTERNAL mma_pmxvbf16ger2 {mma}
+
+ void __builtin_mma_pmxvbf16ger2nn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2nn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NN_INTERNAL mma_pmxvbf16ger2nn {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2np (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2np_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2NP_INTERNAL mma_pmxvbf16ger2np {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2pn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2pn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PN_INTERNAL mma_pmxvbf16ger2pn {mma,quad}
+
+ void __builtin_mma_pmxvbf16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvbf16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVBF16GER2PP_INTERNAL mma_pmxvbf16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvf16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2_INTERNAL mma_pmxvf16ger2 {mma}
+
+ void __builtin_mma_pmxvf16ger2nn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2nn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NN_INTERNAL mma_pmxvf16ger2nn {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2np (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2np_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2NP_INTERNAL mma_pmxvf16ger2np {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2pn (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2pn_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PN_INTERNAL mma_pmxvf16ger2pn {mma,quad}
+
+ void __builtin_mma_pmxvf16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVF16GER2PP_INTERNAL mma_pmxvf16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvf32ger (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GER nothing {mma}
+
+ v512 __builtin_mma_pmxvf32ger_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GER_INTERNAL mma_pmxvf32ger {mma}
+
+ void __builtin_mma_pmxvf32gernn (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gernn_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNN_INTERNAL mma_pmxvf32gernn {mma,quad}
+
+ void __builtin_mma_pmxvf32gernp (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gernp_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERNP_INTERNAL mma_pmxvf32gernp {mma,quad}
+
+ void __builtin_mma_pmxvf32gerpn (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPN nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gerpn_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPN_INTERNAL mma_pmxvf32gerpn {mma,quad}
+
+ void __builtin_mma_pmxvf32gerpp (v512 *, vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvf32gerpp_internal (vuc, vuc, const int<4>, const int<4>);
+ PMXVF32GERPP_INTERNAL mma_pmxvf32gerpp {mma,quad}
+
+ void __builtin_mma_pmxvf64ger (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GER nothing {mma,pair}
+
+ v512 __builtin_mma_pmxvf64ger_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GER_INTERNAL mma_pmxvf64ger {mma,pair}
+
+ void __builtin_mma_pmxvf64gernn (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gernn_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNN_INTERNAL mma_pmxvf64gernn {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gernp (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gernp_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERNP_INTERNAL mma_pmxvf64gernp {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gerpn (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gerpn_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPN_INTERNAL mma_pmxvf64gerpn {mma,pair,quad}
+
+ void __builtin_mma_pmxvf64gerpp (v512 *, v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_pmxvf64gerpp_internal (v256, vuc, const int<4>, const int<2>);
+ PMXVF64GERPP_INTERNAL mma_pmxvf64gerpp {mma,pair,quad}
+
+ void __builtin_mma_pmxvi16ger2 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2 nothing {mma}
+
+ v512 __builtin_mma_pmxvi16ger2_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2_INTERNAL mma_pmxvi16ger2 {mma}
+
+ void __builtin_mma_pmxvi16ger2pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi16ger2pp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2PP_INTERNAL mma_pmxvi16ger2pp {mma,quad}
+
+ void __builtin_mma_pmxvi16ger2s (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2S nothing {mma}
+
+ v512 __builtin_mma_pmxvi16ger2s_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2S_INTERNAL mma_pmxvi16ger2s {mma}
+
+ void __builtin_mma_pmxvi16ger2spp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2SPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi16ger2spp_internal (vuc, vuc, const int<4>, const int<4>, const int<2>);
+ PMXVI16GER2SPP_INTERNAL mma_pmxvi16ger2spp {mma,quad}
+
+ void __builtin_mma_pmxvi4ger8 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<8>);
+ PMXVI4GER8 nothing {mma}
+
+ v512 __builtin_mma_pmxvi4ger8_internal (vuc, vuc, const int<4>, const int<4>, const int<8>);
+ PMXVI4GER8_INTERNAL mma_pmxvi4ger8 {mma}
+
+ void __builtin_mma_pmxvi4ger8pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI4GER8PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi4ger8pp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI4GER8PP_INTERNAL mma_pmxvi4ger8pp {mma,quad}
+
+ void __builtin_mma_pmxvi8ger4 (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4 nothing {mma}
+
+ v512 __builtin_mma_pmxvi8ger4_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4_INTERNAL mma_pmxvi8ger4 {mma}
+
+ void __builtin_mma_pmxvi8ger4pp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4PP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi8ger4pp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4PP_INTERNAL mma_pmxvi8ger4pp {mma,quad}
+
+ void __builtin_mma_pmxvi8ger4spp (v512 *, vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4SPP nothing {mma,quad}
+
+ v512 __builtin_mma_pmxvi8ger4spp_internal (vuc, vuc, const int<4>, const int<4>, const int<4>);
+ PMXVI8GER4SPP_INTERNAL mma_pmxvi8ger4spp {mma,quad}
+
+ void __builtin_mma_xvbf16ger2 (v512 *, vuc, vuc);
+ XVBF16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvbf16ger2_internal (vuc, vuc);
+ XVBF16GER2_INTERNAL mma_xvbf16ger2 {mma}
+
+ void __builtin_mma_xvbf16ger2nn (v512 *, vuc, vuc);
+ XVBF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2nn_internal (vuc, vuc);
+ XVBF16GER2NN_INTERNAL mma_xvbf16ger2nn {mma,quad}
+
+ void __builtin_mma_xvbf16ger2np (v512 *, vuc, vuc);
+ XVBF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2np_internal (vuc, vuc);
+ XVBF16GER2NP_INTERNAL mma_xvbf16ger2np {mma,quad}
+
+ void __builtin_mma_xvbf16ger2pn (v512 *, vuc, vuc);
+ XVBF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2pn_internal (vuc, vuc);
+ XVBF16GER2PN_INTERNAL mma_xvbf16ger2pn {mma,quad}
+
+ void __builtin_mma_xvbf16ger2pp (v512 *, vuc, vuc);
+ XVBF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvbf16ger2pp_internal (vuc, vuc);
+ XVBF16GER2PP_INTERNAL mma_xvbf16ger2pp {mma,quad}
+
+ void __builtin_mma_xvf16ger2 (v512 *, vuc, vuc);
+ XVF16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvf16ger2_internal (vuc, vuc);
+ XVF16GER2_INTERNAL mma_xvf16ger2 {mma}
+
+ void __builtin_mma_xvf16ger2nn (v512 *, vuc, vuc);
+ XVF16GER2NN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2nn_internal (vuc, vuc);
+ XVF16GER2NN_INTERNAL mma_xvf16ger2nn {mma,quad}
+
+ void __builtin_mma_xvf16ger2np (v512 *, vuc, vuc);
+ XVF16GER2NP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2np_internal (vuc, vuc);
+ XVF16GER2NP_INTERNAL mma_xvf16ger2np {mma,quad}
+
+ void __builtin_mma_xvf16ger2pn (v512 *, vuc, vuc);
+ XVF16GER2PN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2pn_internal (vuc, vuc);
+ XVF16GER2PN_INTERNAL mma_xvf16ger2pn {mma,quad}
+
+ void __builtin_mma_xvf16ger2pp (v512 *, vuc, vuc);
+ XVF16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf16ger2pp_internal (vuc, vuc);
+ XVF16GER2PP_INTERNAL mma_xvf16ger2pp {mma,quad}
+
+ void __builtin_mma_xvf32ger (v512 *, vuc, vuc);
+ XVF32GER nothing {mma}
+
+ v512 __builtin_mma_xvf32ger_internal (vuc, vuc);
+ XVF32GER_INTERNAL mma_xvf32ger {mma}
+
+ void __builtin_mma_xvf32gernn (v512 *, vuc, vuc);
+ XVF32GERNN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gernn_internal (vuc, vuc);
+ XVF32GERNN_INTERNAL mma_xvf32gernn {mma,quad}
+
+ void __builtin_mma_xvf32gernp (v512 *, vuc, vuc);
+ XVF32GERNP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gernp_internal (vuc, vuc);
+ XVF32GERNP_INTERNAL mma_xvf32gernp {mma,quad}
+
+ void __builtin_mma_xvf32gerpn (v512 *, vuc, vuc);
+ XVF32GERPN nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gerpn_internal (vuc, vuc);
+ XVF32GERPN_INTERNAL mma_xvf32gerpn {mma,quad}
+
+ void __builtin_mma_xvf32gerpp (v512 *, vuc, vuc);
+ XVF32GERPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvf32gerpp_internal (vuc, vuc);
+ XVF32GERPP_INTERNAL mma_xvf32gerpp {mma,quad}
+
+ void __builtin_mma_xvf64ger (v512 *, v256, vuc);
+ XVF64GER nothing {mma,pair}
+
+ v512 __builtin_mma_xvf64ger_internal (v256, vuc);
+ XVF64GER_INTERNAL mma_xvf64ger {mma,pair}
+
+ void __builtin_mma_xvf64gernn (v512 *, v256, vuc);
+ XVF64GERNN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gernn_internal (v256, vuc);
+ XVF64GERNN_INTERNAL mma_xvf64gernn {mma,pair,quad}
+
+ void __builtin_mma_xvf64gernp (v512 *, v256, vuc);
+ XVF64GERNP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gernp_internal (v256, vuc);
+ XVF64GERNP_INTERNAL mma_xvf64gernp {mma,pair,quad}
+
+ void __builtin_mma_xvf64gerpn (v512 *, v256, vuc);
+ XVF64GERPN nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gerpn_internal (v256, vuc);
+ XVF64GERPN_INTERNAL mma_xvf64gerpn {mma,pair,quad}
+
+ void __builtin_mma_xvf64gerpp (v512 *, v256, vuc);
+ XVF64GERPP nothing {mma,pair,quad}
+
+ v512 __builtin_mma_xvf64gerpp_internal (v256, vuc);
+ XVF64GERPP_INTERNAL mma_xvf64gerpp {mma,pair,quad}
+
+ void __builtin_mma_xvi16ger2 (v512 *, vuc, vuc);
+ XVI16GER2 nothing {mma}
+
+ v512 __builtin_mma_xvi16ger2_internal (vuc, vuc);
+ XVI16GER2_INTERNAL mma_xvi16ger2 {mma}
+
+ void __builtin_mma_xvi16ger2pp (v512 *, vuc, vuc);
+ XVI16GER2PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi16ger2pp_internal (vuc, vuc);
+ XVI16GER2PP_INTERNAL mma_xvi16ger2pp {mma,quad}
+
+ void __builtin_mma_xvi16ger2s (v512 *, vuc, vuc);
+ XVI16GER2S nothing {mma}
+
+ v512 __builtin_mma_xvi16ger2s_internal (vuc, vuc);
+ XVI16GER2S_INTERNAL mma_xvi16ger2s {mma}
+
+ void __builtin_mma_xvi16ger2spp (v512 *, vuc, vuc);
+ XVI16GER2SPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi16ger2spp_internal (vuc, vuc);
+ XVI16GER2SPP_INTERNAL mma_xvi16ger2spp {mma,quad}
+
+ void __builtin_mma_xvi4ger8 (v512 *, vuc, vuc);
+ XVI4GER8 nothing {mma}
+
+ v512 __builtin_mma_xvi4ger8_internal (vuc, vuc);
+ XVI4GER8_INTERNAL mma_xvi4ger8 {mma}
+
+ void __builtin_mma_xvi4ger8pp (v512 *, vuc, vuc);
+ XVI4GER8PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi4ger8pp_internal (vuc, vuc);
+ XVI4GER8PP_INTERNAL mma_xvi4ger8pp {mma,quad}
+
+ void __builtin_mma_xvi8ger4 (v512 *, vuc, vuc);
+ XVI8GER4 nothing {mma}
+
+ v512 __builtin_mma_xvi8ger4_internal (vuc, vuc);
+ XVI8GER4_INTERNAL mma_xvi8ger4 {mma}
+
+ void __builtin_mma_xvi8ger4pp (v512 *, vuc, vuc);
+ XVI8GER4PP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi8ger4pp_internal (vuc, vuc);
+ XVI8GER4PP_INTERNAL mma_xvi8ger4pp {mma,quad}
+
+ void __builtin_mma_xvi8ger4spp (v512 *, vuc, vuc);
+ XVI8GER4SPP nothing {mma,quad}
+
+ v512 __builtin_mma_xvi8ger4spp_internal (vuc, vuc);
+ XVI8GER4SPP_INTERNAL mma_xvi8ger4spp {mma,quad}
+
+ void __builtin_mma_xxmfacc (v512 *);
+ XXMFACC nothing {mma,quad}
+
+ v512 __builtin_mma_xxmfacc_internal ();
+ XXMFACC_INTERNAL mma_xxmfacc {mma,quad}
+
+ void __builtin_mma_xxmtacc (v512 *);
+ XXMTACC nothing {mma,quad}
+
+ v512 __builtin_mma_xxmtacc_internal ();
+ XXMTACC_INTERNAL mma_xxmtacc {mma,quad}
+
+ void __builtin_mma_xxsetaccz (v512 *);
+ XXSETACCZ nothing {mma}
+
+ v512 __builtin_mma_xxsetaccz_internal ();
+ XXSETACCZ_INTERNAL mma_xxsetaccz {mma}
+
+
+
+; #### We don't yet have the Darwin CfString builtin supported, but
+; that has its own special handling so it should go in there, I guess.
+;
+; BU_SPECIAL_X (RS6000_BUILTIN_CFSTRING, "__builtin_cfstring", RS6000_BTM_ALWAYS,
+; RS6000_BTC_MISC)
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-02-07 18:13 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-24 16:44 [gcc(refs/users/wschmidt/heads/builtins4)] rs6000: Add MMA builtins William Schmidt
-- strict thread matches above, loose matches on Subject: below --
2021-02-07 18:13 William Schmidt
2020-12-16 18:06 William Schmidt
2020-11-02 14:41 William Schmidt
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).