1 /* Builtin lists for Arm MVE
2 Copyright (C
) 2021-2025 Free Software Foundation
, Inc.
4 This file is part of GCC.
6 GCC is free software
; you can redistribute it and
/or modify it
7 under the terms of the GNU General Public License as published by
8 the Free Software Foundation
; either version
3, or (at your option
)
11 GCC is distributed in the hope that it will be useful
, but
12 WITHOUT ANY WARRANTY
; without even the implied warranty of
13 MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with GCC
; see the file COPYING3. If not see
18 <http
://www.gnu.org
/licenses
/>.
*/
21 #define
DEF_MVE_MODE(A
, B
, C
, D
)
25 #define
DEF_MVE_TYPE(A
, B
)
28 #ifndef DEF_MVE_TYPE_SUFFIX
29 #define
DEF_MVE_TYPE_SUFFIX(A
, B
, C
, D
, E
)
32 #ifndef DEF_MVE_FUNCTION
33 #define
DEF_MVE_FUNCTION(A
, B
, C
, D
)
36 DEF_MVE_MODE (n
, none
, none
, none
)
37 DEF_MVE_MODE (offset
, none
, none
, bytes
)
38 DEF_MVE_MODE (r
, none
, none
, none
)
39 DEF_MVE_MODE (wb
, none
, none
, none
)
41 #define REQUIRES_FLOAT false
42 DEF_MVE_TYPE (mve_pred16_t
, boolean_type_node
)
43 DEF_MVE_TYPE (uint8x16_t
, get_typenode_from_name (UINT8_TYPE
))
44 DEF_MVE_TYPE (uint16x8_t
, get_typenode_from_name (UINT16_TYPE
))
45 DEF_MVE_TYPE (uint32x4_t
, get_typenode_from_name (UINT32_TYPE
))
46 DEF_MVE_TYPE (uint64x2_t
, get_typenode_from_name (UINT64_TYPE
))
47 DEF_MVE_TYPE (int8x16_t
, get_typenode_from_name (INT8_TYPE
))
48 DEF_MVE_TYPE (int16x8_t
, get_typenode_from_name (INT16_TYPE
))
49 DEF_MVE_TYPE (int32x4_t
, get_typenode_from_name (INT32_TYPE
))
50 DEF_MVE_TYPE (int64x2_t
, get_typenode_from_name (INT64_TYPE
))
53 #define REQUIRES_FLOAT true
54 DEF_MVE_TYPE (float16x8_t
, arm_fp16_type_node
)
55 DEF_MVE_TYPE (float32x4_t
, float_type_node
)
58 #define REQUIRES_FLOAT false
59 DEF_MVE_TYPE_SUFFIX (s8
, int8x16_t
, signed
, 8, V16QImode
)
60 DEF_MVE_TYPE_SUFFIX (s16
, int16x8_t
, signed
, 16, V8HImode
)
61 DEF_MVE_TYPE_SUFFIX (s32
, int32x4_t
, signed
, 32, V4SImode
)
62 DEF_MVE_TYPE_SUFFIX (s64
, int64x2_t
, signed
, 64, V2DImode
)
63 DEF_MVE_TYPE_SUFFIX (u8
, uint8x16_t
, unsigned
, 8, V16QImode
)
64 DEF_MVE_TYPE_SUFFIX (u16
, uint16x8_t
, unsigned
, 16, V8HImode
)
65 DEF_MVE_TYPE_SUFFIX (u32
, uint32x4_t
, unsigned
, 32, V4SImode
)
66 DEF_MVE_TYPE_SUFFIX (u64
, uint64x2_t
, unsigned
, 64, V2DImode
)
67 DEF_MVE_TYPE_SUFFIX (p8
, uint8x16_t
, poly
, 8, V16QImode
)
68 DEF_MVE_TYPE_SUFFIX (p16
, uint16x8_t
, poly
, 16, V8HImode
)
71 #define REQUIRES_FLOAT true
72 DEF_MVE_TYPE_SUFFIX (f16
, float16x8_t
, float
, 16, V8HFmode
)
73 DEF_MVE_TYPE_SUFFIX (f32
, float32x4_t
, float
, 32, V4SFmode
)
76 #include
"arm-mve-builtins-base.def"
79 #undef DEF_MVE_TYPE_SUFFIX
80 #undef DEF_MVE_FUNCTION