1 /* Arm Custom Datapath
Extension (CDE
) builtin definitions.
2 Copyright (C
) 2020-2025 Free Software Foundation
, Inc.
3 Contributed by Arm Ltd.
5 This file is part of GCC.
7 GCC is free software
; you can redistribute it and
/or modify it
8 under the terms of the GNU General Public License as published
9 by the Free Software Foundation
; either version
3, or (at your
10 option
) any later version.
12 GCC is distributed in the hope that it will be useful
, but WITHOUT
13 ANY WARRANTY
; without even the implied warranty of MERCHANTABILITY
14 or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GCC
; see the file COPYING3. If not see
19 <http
://www.gnu.org
/licenses
/>.
*/
22 #define
CDE_VAR2(T
, N
, A
, B
, IMM_MAX
, ECF_FLAG
) \
23 VAR1 (T
, N
, A
, IMM_MAX
, ECF_FLAG
) \
24 VAR1 (T
, N
, B
, IMM_MAX
, ECF_FLAG
)
26 CDE_VAR2 (CX_IMM
, cx1
, si
, di
, ARM_CCDE_CONST_1
, ECF_CONST
)
27 CDE_VAR2 (CX_UNARY
, cx1a
, si
, di
, ARM_CCDE_CONST_1
, ECF_CONST
)
28 CDE_VAR2 (CX_UNARY
, cx2
, si
, di
, ARM_CCDE_CONST_2
, ECF_CONST
)
29 CDE_VAR2 (CX_BINARY
, cx2a
, si
, di
, ARM_CCDE_CONST_2
, ECF_CONST
)
30 CDE_VAR2 (CX_BINARY
, cx3
, si
, di
, ARM_CCDE_CONST_3
, ECF_CONST
)
31 CDE_VAR2 (CX_TERNARY
, cx3a
, si
, di
, ARM_CCDE_CONST_3
, ECF_CONST
)
33 CDE_VAR2 (CX_IMM
, vcx1
, si
, di
, ARM_VCDE_CONST_1
, ECF_CONST
)
34 CDE_VAR2 (CX_UNARY
, vcx1a
, si
, di
, ARM_VCDE_CONST_1
, ECF_CONST
)
35 CDE_VAR2 (CX_UNARY
, vcx2
, si
, di
, ARM_VCDE_CONST_2
, ECF_CONST
)
36 CDE_VAR2 (CX_BINARY
, vcx2a
, si
, di
, ARM_VCDE_CONST_2
, ECF_CONST
)
37 CDE_VAR2 (CX_BINARY
, vcx3
, si
, di
, ARM_VCDE_CONST_3
, ECF_CONST
)
38 CDE_VAR2 (CX_TERNARY
, vcx3a
, si
, di
, ARM_VCDE_CONST_3
, ECF_CONST
)
40 /* NOTE
: The MVE intrinsics must be defined at the end of this file
, and with
41 vcx1q first. Amongst the MVE intrinsics
, the predicated ones are
43 These restrictions are relied on to determine which intrinsics need
44 overload resolution in `arm_resolve_overloaded_builtin`.
*/
45 VAR1 (CX_IMM
, vcx1q
, v16qi
, ARM_MVE_CDE_CONST_1
, ECF_CONST
)
46 VAR1 (CX_UNARY
, vcx1qa
, v16qi
, ARM_MVE_CDE_CONST_1
, ECF_CONST
)
47 VAR1 (CX_UNARY
, vcx2q
, v16qi
, ARM_MVE_CDE_CONST_2
, ECF_CONST
)
48 VAR1 (CX_BINARY
, vcx2qa
, v16qi
, ARM_MVE_CDE_CONST_2
, ECF_CONST
)
49 VAR1 (CX_BINARY
, vcx3q
, v16qi
, ARM_MVE_CDE_CONST_3
, ECF_CONST
)
50 VAR1 (CX_TERNARY
, vcx3qa
, v16qi
, ARM_MVE_CDE_CONST_3
, ECF_CONST
)
52 VAR1 (CX_UNARY_UNONE
, vcx1q_p_
, v16qi
, ARM_MVE_CDE_CONST_1
, ECF_CONST
)
53 VAR1 (CX_UNARY_UNONE
, vcx1qa_p_
, v16qi
, ARM_MVE_CDE_CONST_1
, ECF_CONST
)
54 VAR1 (CX_BINARY_UNONE
, vcx2q_p_
, v16qi
, ARM_MVE_CDE_CONST_2
, ECF_CONST
)
55 VAR1 (CX_BINARY_UNONE
, vcx2qa_p_
, v16qi
, ARM_MVE_CDE_CONST_2
, ECF_CONST
)
56 VAR1 (CX_TERNARY_UNONE
, vcx3q_p_
, v16qi
, ARM_MVE_CDE_CONST_3
, ECF_CONST
)
57 VAR1 (CX_TERNARY_UNONE
, vcx3qa_p_
, v16qi
, ARM_MVE_CDE_CONST_3
, ECF_CONST
)