1 /* Builtin lists for Arm MVE
2 Copyright (C
) 2021-2023 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
)
40 #define REQUIRES_FLOAT false
41 DEF_MVE_TYPE (mve_pred16_t
, boolean_type_node
)
42 DEF_MVE_TYPE (uint8x16_t
, unsigned_intQI_type_node
)
43 DEF_MVE_TYPE (uint16x8_t
, unsigned_intHI_type_node
)
44 DEF_MVE_TYPE (uint32x4_t
, unsigned_intSI_type_node
)
45 DEF_MVE_TYPE (uint64x2_t
, unsigned_intDI_type_node
)
46 DEF_MVE_TYPE (int8x16_t
, intQI_type_node
)
47 DEF_MVE_TYPE (int16x8_t
, intHI_type_node
)
48 DEF_MVE_TYPE (int32x4_t
, intSI_type_node
)
49 DEF_MVE_TYPE (int64x2_t
, intDI_type_node
)
52 #define REQUIRES_FLOAT true
53 DEF_MVE_TYPE (float16x8_t
, arm_fp16_type_node
)
54 DEF_MVE_TYPE (float32x4_t
, float_type_node
)
57 #define REQUIRES_FLOAT false
58 DEF_MVE_TYPE_SUFFIX (s8
, int8x16_t
, signed
, 8, V16QImode
)
59 DEF_MVE_TYPE_SUFFIX (s16
, int16x8_t
, signed
, 16, V8HImode
)
60 DEF_MVE_TYPE_SUFFIX (s32
, int32x4_t
, signed
, 32, V4SImode
)
61 DEF_MVE_TYPE_SUFFIX (s64
, int64x2_t
, signed
, 64, V2DImode
)
62 DEF_MVE_TYPE_SUFFIX (u8
, uint8x16_t
, unsigned
, 8, V16QImode
)
63 DEF_MVE_TYPE_SUFFIX (u16
, uint16x8_t
, unsigned
, 16, V8HImode
)
64 DEF_MVE_TYPE_SUFFIX (u32
, uint32x4_t
, unsigned
, 32, V4SImode
)
65 DEF_MVE_TYPE_SUFFIX (u64
, uint64x2_t
, unsigned
, 64, V2DImode
)
66 DEF_MVE_TYPE_SUFFIX (p8
, uint8x16_t
, poly
, 8, V16QImode
)
67 DEF_MVE_TYPE_SUFFIX (p16
, uint16x8_t
, poly
, 16, V8HImode
)
70 #define REQUIRES_FLOAT true
71 DEF_MVE_TYPE_SUFFIX (f16
, float16x8_t
, float
, 16, V8HFmode
)
72 DEF_MVE_TYPE_SUFFIX (f32
, float32x4_t
, float
, 32, V4SFmode
)
75 #include
"arm-mve-builtins-base.def"
78 #undef DEF_MVE_TYPE_SUFFIX
79 #undef DEF_MVE_FUNCTION