1 /* Intrinsic define macros for RISC
-V
'V' Extension for GNU compiler.
2 Copyright (C
) 2022-2024 Free Software Foundation
, Inc.
3 Contributed by Juzhe
Zhong (juzhe.zhong@rivai.ai
), RiVAI Technologies Ltd.
5 This file is part of GCC.
7 GCC is free software
; you can redistribute it and
/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation
; either version
3, or (at your option
)
12 GCC is distributed in the hope that it will be useful
,
13 but WITHOUT ANY WARRANTY
; without even the implied warranty of
14 MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the
15 GNU General Public 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
/>.
*/
21 /* Use
"DEF_RVV_FUNCTION" macro to define RVV intrinsic functions.
23 - NAME not only describes the base_name of the functions
24 but also point to the name of the function_base class.
26 - SHAPE point to the function_shape class.
28 - PREDS describes the predication types that are supported in the
31 - OPS_INFO describes all information of return type and each
35 #ifndef DEF_RVV_FUNCTION
36 #define
DEF_RVV_FUNCTION(NAME
, SHAPE
, PREDS
, OPS_INFO
)
39 #define REQUIRED_EXTENSIONS VECTOR_EXT
40 /* Internal helper functions for gimple fold use.
*/
41 DEF_RVV_FUNCTION (read_vl
, read_vl
, none_preds
, p_none_void_ops
)
42 DEF_RVV_FUNCTION (vlenb
, vlenb
, none_preds
, ul_none_void_ops
)
44 /* 6. Configuration
-Setting Instructions.
*/
46 DEF_RVV_FUNCTION (vsetvl
, vsetvl
, none_preds
, i_none_size_size_ops
)
47 DEF_RVV_FUNCTION (vsetvlmax
, vsetvlmax
, none_preds
, i_none_size_void_ops
)
49 /* 7. Vector Loads and Stores.
*/
51 // 7.4. Vector Unit
-Stride Instructions
52 DEF_RVV_FUNCTION (vle
, loadstore
, full_preds
, all_v_scalar_const_ptr_ops
)
53 DEF_RVV_FUNCTION (vse
, loadstore
, none_m_preds
, all_v_scalar_ptr_ops
)
54 DEF_RVV_FUNCTION (vlm
, loadstore
, none_preds
, b_v_scalar_const_ptr_ops
)
55 DEF_RVV_FUNCTION (vsm
, loadstore
, none_preds
, b_v_scalar_ptr_ops
)
57 // 7.5. Vector Strided Instructions
58 DEF_RVV_FUNCTION (vlse
, loadstore
, full_preds
, all_v_scalar_const_ptr_ptrdiff_ops
)
59 DEF_RVV_FUNCTION (vsse
, loadstore
, none_m_preds
, all_v_scalar_ptr_ptrdiff_ops
)
61 // 7.6. Vector Indexed Instructions
62 DEF_RVV_FUNCTION (vluxei8
, indexed_loadstore
, full_preds
, all_v_scalar_const_ptr_eew8_index_ops
)
63 DEF_RVV_FUNCTION (vluxei16
, indexed_loadstore
, full_preds
, all_v_scalar_const_ptr_eew16_index_ops
)
64 DEF_RVV_FUNCTION (vluxei32
, indexed_loadstore
, full_preds
, all_v_scalar_const_ptr_eew32_index_ops
)
65 DEF_RVV_FUNCTION (vluxei64
, indexed_loadstore
, full_preds
, all_v_scalar_const_ptr_eew64_index_ops
)
66 DEF_RVV_FUNCTION (vloxei8
, indexed_loadstore
, full_preds
, all_v_scalar_const_ptr_eew8_index_ops
)
67 DEF_RVV_FUNCTION (vloxei16
, indexed_loadstore
, full_preds
, all_v_scalar_const_ptr_eew16_index_ops
)
68 DEF_RVV_FUNCTION (vloxei32
, indexed_loadstore
, full_preds
, all_v_scalar_const_ptr_eew32_index_ops
)
69 DEF_RVV_FUNCTION (vloxei64
, indexed_loadstore
, full_preds
, all_v_scalar_const_ptr_eew64_index_ops
)
70 DEF_RVV_FUNCTION (vsuxei8
, indexed_loadstore
, none_m_preds
, all_v_scalar_ptr_eew8_index_ops
)
71 DEF_RVV_FUNCTION (vsuxei16
, indexed_loadstore
, none_m_preds
, all_v_scalar_ptr_eew16_index_ops
)
72 DEF_RVV_FUNCTION (vsuxei32
, indexed_loadstore
, none_m_preds
, all_v_scalar_ptr_eew32_index_ops
)
73 DEF_RVV_FUNCTION (vsuxei64
, indexed_loadstore
, none_m_preds
, all_v_scalar_ptr_eew64_index_ops
)
74 DEF_RVV_FUNCTION (vsoxei8
, indexed_loadstore
, none_m_preds
, all_v_scalar_ptr_eew8_index_ops
)
75 DEF_RVV_FUNCTION (vsoxei16
, indexed_loadstore
, none_m_preds
, all_v_scalar_ptr_eew16_index_ops
)
76 DEF_RVV_FUNCTION (vsoxei32
, indexed_loadstore
, none_m_preds
, all_v_scalar_ptr_eew32_index_ops
)
77 DEF_RVV_FUNCTION (vsoxei64
, indexed_loadstore
, none_m_preds
, all_v_scalar_ptr_eew64_index_ops
)
79 // 7.7. Unit
-stride Fault
-Only
-First Loads
80 DEF_RVV_FUNCTION (vleff
, fault_load
, full_preds
, all_v_scalar_const_ptr_size_ptr_ops
)
82 /* 11. Vector Integer Arithmetic Instructions.
*/
84 // 11.1. Vector Single
-Width Integer Add and Subtract
85 DEF_RVV_FUNCTION (vadd
, alu
, full_preds
, iu_vvv_ops
)
86 DEF_RVV_FUNCTION (vadd
, alu
, full_preds
, iu_vvx_ops
)
87 DEF_RVV_FUNCTION (vsub
, alu
, full_preds
, iu_vvv_ops
)
88 DEF_RVV_FUNCTION (vsub
, alu
, full_preds
, iu_vvx_ops
)
89 DEF_RVV_FUNCTION (vrsub
, alu
, full_preds
, iu_vvx_ops
)
90 DEF_RVV_FUNCTION (vneg
, alu
, full_preds
, iu_v_ops
)
92 // 11.2. Vector Widening Integer Add
/Subtract
93 DEF_RVV_FUNCTION (vwaddu
, widen_alu
, full_preds
, u_wvv_ops
)
94 DEF_RVV_FUNCTION (vwaddu
, widen_alu
, full_preds
, u_wvx_ops
)
95 DEF_RVV_FUNCTION (vwsubu
, widen_alu
, full_preds
, u_wvv_ops
)
96 DEF_RVV_FUNCTION (vwsubu
, widen_alu
, full_preds
, u_wvx_ops
)
97 DEF_RVV_FUNCTION (vwadd
, widen_alu
, full_preds
, i_wvv_ops
)
98 DEF_RVV_FUNCTION (vwadd
, widen_alu
, full_preds
, i_wvx_ops
)
99 DEF_RVV_FUNCTION (vwsub
, widen_alu
, full_preds
, i_wvv_ops
)
100 DEF_RVV_FUNCTION (vwsub
, widen_alu
, full_preds
, i_wvx_ops
)
101 DEF_RVV_FUNCTION (vwaddu
, widen_alu
, full_preds
, u_wwv_ops
)
102 DEF_RVV_FUNCTION (vwaddu
, widen_alu
, full_preds
, u_wwx_ops
)
103 DEF_RVV_FUNCTION (vwsubu
, widen_alu
, full_preds
, u_wwv_ops
)
104 DEF_RVV_FUNCTION (vwsubu
, widen_alu
, full_preds
, u_wwx_ops
)
105 DEF_RVV_FUNCTION (vwadd
, widen_alu
, full_preds
, i_wwv_ops
)
106 DEF_RVV_FUNCTION (vwadd
, widen_alu
, full_preds
, i_wwx_ops
)
107 DEF_RVV_FUNCTION (vwsub
, widen_alu
, full_preds
, i_wwv_ops
)
108 DEF_RVV_FUNCTION (vwsub
, widen_alu
, full_preds
, i_wwx_ops
)
109 DEF_RVV_FUNCTION (vwcvt_x
, alu
, full_preds
, i_x_x_v_ops
)
110 DEF_RVV_FUNCTION (vwcvtu_x
, alu
, full_preds
, u_x_x_v_ops
)
112 // 11.3. Vector Integer Extension
113 DEF_RVV_FUNCTION (vzext
, widen_alu
, full_preds
, u_vf2_ops
)
114 DEF_RVV_FUNCTION (vzext
, widen_alu
, full_preds
, u_vf4_ops
)
115 DEF_RVV_FUNCTION (vzext
, widen_alu
, full_preds
, u_vf8_ops
)
116 DEF_RVV_FUNCTION (vsext
, widen_alu
, full_preds
, i_vf2_ops
)
117 DEF_RVV_FUNCTION (vsext
, widen_alu
, full_preds
, i_vf4_ops
)
118 DEF_RVV_FUNCTION (vsext
, widen_alu
, full_preds
, i_vf8_ops
)
120 // 11.4. Vector Integer Add
-with
-Carry
/Subtract
-with
-Borrow Instructions
121 DEF_RVV_FUNCTION (vadc
, no_mask_policy
, none_tu_preds
, iu_vvvm_ops
)
122 DEF_RVV_FUNCTION (vadc
, no_mask_policy
, none_tu_preds
, iu_vvxm_ops
)
123 DEF_RVV_FUNCTION (vmadc
, return_mask
, none_preds
, iu_mvvm_ops
)
124 DEF_RVV_FUNCTION (vmadc
, return_mask
, none_preds
, iu_mvxm_ops
)
125 DEF_RVV_FUNCTION (vmadc
, return_mask
, none_preds
, iu_mvv_ops
)
126 DEF_RVV_FUNCTION (vmadc
, return_mask
, none_preds
, iu_mvx_ops
)
127 DEF_RVV_FUNCTION (vsbc
, no_mask_policy
, none_tu_preds
, iu_vvvm_ops
)
128 DEF_RVV_FUNCTION (vsbc
, no_mask_policy
, none_tu_preds
, iu_vvxm_ops
)
129 DEF_RVV_FUNCTION (vmsbc
, return_mask
, none_preds
, iu_mvvm_ops
)
130 DEF_RVV_FUNCTION (vmsbc
, return_mask
, none_preds
, iu_mvxm_ops
)
131 DEF_RVV_FUNCTION (vmsbc
, return_mask
, none_preds
, iu_mvv_ops
)
132 DEF_RVV_FUNCTION (vmsbc
, return_mask
, none_preds
, iu_mvx_ops
)
134 // 11.5. Vector Bitwise Logical Instructions
135 DEF_RVV_FUNCTION (vand
, alu
, full_preds
, iu_vvv_ops
)
136 DEF_RVV_FUNCTION (vand
, alu
, full_preds
, iu_vvx_ops
)
137 DEF_RVV_FUNCTION (vor
, alu
, full_preds
, iu_vvv_ops
)
138 DEF_RVV_FUNCTION (vor
, alu
, full_preds
, iu_vvx_ops
)
139 DEF_RVV_FUNCTION (vxor
, alu
, full_preds
, iu_vvv_ops
)
140 DEF_RVV_FUNCTION (vxor
, alu
, full_preds
, iu_vvx_ops
)
141 DEF_RVV_FUNCTION (vnot
, alu
, full_preds
, iu_v_ops
)
143 // 11.6. Vector Single
-Width Shift Instructions
144 DEF_RVV_FUNCTION (vsll
, alu
, full_preds
, iu_shift_vvv_ops
)
145 DEF_RVV_FUNCTION (vsll
, alu
, full_preds
, iu_shift_vvx_ops
)
146 DEF_RVV_FUNCTION (vsra
, alu
, full_preds
, i_shift_vvv_ops
)
147 DEF_RVV_FUNCTION (vsra
, alu
, full_preds
, i_shift_vvx_ops
)
148 DEF_RVV_FUNCTION (vsrl
, alu
, full_preds
, u_shift_vvv_ops
)
149 DEF_RVV_FUNCTION (vsrl
, alu
, full_preds
, u_shift_vvx_ops
)
151 // 11.7. Vector Narrowing Integer Right Shift Instructions
152 DEF_RVV_FUNCTION (vnsrl
, narrow_alu
, full_preds
, u_narrow_shift_vwv_ops
)
153 DEF_RVV_FUNCTION (vnsrl
, narrow_alu
, full_preds
, u_narrow_shift_vwx_ops
)
154 DEF_RVV_FUNCTION (vnsra
, narrow_alu
, full_preds
, i_narrow_shift_vwv_ops
)
155 DEF_RVV_FUNCTION (vnsra
, narrow_alu
, full_preds
, i_narrow_shift_vwx_ops
)
156 DEF_RVV_FUNCTION (vncvt_x
, narrow_alu
, full_preds
, iu_trunc_ops
)
158 // 11.8. Vector Integer Compare Instructions
159 DEF_RVV_FUNCTION (vmseq
, return_mask
, none_m_mu_preds
, iu_mvv_ops
)
160 DEF_RVV_FUNCTION (vmseq
, return_mask
, none_m_mu_preds
, iu_mvx_ops
)
161 DEF_RVV_FUNCTION (vmsne
, return_mask
, none_m_mu_preds
, iu_mvv_ops
)
162 DEF_RVV_FUNCTION (vmsne
, return_mask
, none_m_mu_preds
, iu_mvx_ops
)
163 DEF_RVV_FUNCTION (vmsltu
, return_mask
, none_m_mu_preds
, u_mvv_ops
)
164 DEF_RVV_FUNCTION (vmsltu
, return_mask
, none_m_mu_preds
, u_mvx_ops
)
165 DEF_RVV_FUNCTION (vmslt
, return_mask
, none_m_mu_preds
, i_mvv_ops
)
166 DEF_RVV_FUNCTION (vmslt
, return_mask
, none_m_mu_preds
, i_mvx_ops
)
167 DEF_RVV_FUNCTION (vmsleu
, return_mask
, none_m_mu_preds
, u_mvv_ops
)
168 DEF_RVV_FUNCTION (vmsleu
, return_mask
, none_m_mu_preds
, u_mvx_ops
)
169 DEF_RVV_FUNCTION (vmsle
, return_mask
, none_m_mu_preds
, i_mvv_ops
)
170 DEF_RVV_FUNCTION (vmsle
, return_mask
, none_m_mu_preds
, i_mvx_ops
)
171 DEF_RVV_FUNCTION (vmsgtu
, return_mask
, none_m_mu_preds
, u_mvv_ops
)
172 DEF_RVV_FUNCTION (vmsgtu
, return_mask
, none_m_mu_preds
, u_mvx_ops
)
173 DEF_RVV_FUNCTION (vmsgt
, return_mask
, none_m_mu_preds
, i_mvv_ops
)
174 DEF_RVV_FUNCTION (vmsgt
, return_mask
, none_m_mu_preds
, i_mvx_ops
)
175 DEF_RVV_FUNCTION (vmsgeu
, return_mask
, none_m_mu_preds
, u_mvv_ops
)
176 DEF_RVV_FUNCTION (vmsgeu
, return_mask
, none_m_mu_preds
, u_mvx_ops
)
177 DEF_RVV_FUNCTION (vmsge
, return_mask
, none_m_mu_preds
, i_mvv_ops
)
178 DEF_RVV_FUNCTION (vmsge
, return_mask
, none_m_mu_preds
, i_mvx_ops
)
180 // 11.9. Vector Integer Min
/Max Instructions
181 DEF_RVV_FUNCTION (vminu
, alu
, full_preds
, u_vvv_ops
)
182 DEF_RVV_FUNCTION (vminu
, alu
, full_preds
, u_vvx_ops
)
183 DEF_RVV_FUNCTION (vmin
, alu
, full_preds
, i_vvv_ops
)
184 DEF_RVV_FUNCTION (vmin
, alu
, full_preds
, i_vvx_ops
)
185 DEF_RVV_FUNCTION (vmaxu
, alu
, full_preds
, u_vvv_ops
)
186 DEF_RVV_FUNCTION (vmaxu
, alu
, full_preds
, u_vvx_ops
)
187 DEF_RVV_FUNCTION (vmax
, alu
, full_preds
, i_vvv_ops
)
188 DEF_RVV_FUNCTION (vmax
, alu
, full_preds
, i_vvx_ops
)
190 // 11.10. Vector Single
-Width Integer Multiply Instructions
191 DEF_RVV_FUNCTION (vmul
, alu
, full_preds
, iu_vvv_ops
)
192 DEF_RVV_FUNCTION (vmul
, alu
, full_preds
, iu_vvx_ops
)
193 DEF_RVV_FUNCTION (vmulh
, alu
, full_preds
, full_v_i_vvv_ops
)
194 DEF_RVV_FUNCTION (vmulh
, alu
, full_preds
, full_v_i_vvx_ops
)
195 DEF_RVV_FUNCTION (vmulhu
, alu
, full_preds
, full_v_u_vvv_ops
)
196 DEF_RVV_FUNCTION (vmulhu
, alu
, full_preds
, full_v_u_vvx_ops
)
197 DEF_RVV_FUNCTION (vmulhsu
, alu
, full_preds
, full_v_i_su_vvv_ops
)
198 DEF_RVV_FUNCTION (vmulhsu
, alu
, full_preds
, full_v_i_su_vvx_ops
)
200 // 11.11. Vector Integer Divide Instructions
201 DEF_RVV_FUNCTION (vdivu
, alu
, full_preds
, u_vvv_ops
)
202 DEF_RVV_FUNCTION (vdivu
, alu
, full_preds
, u_vvx_ops
)
203 DEF_RVV_FUNCTION (vdiv
, alu
, full_preds
, i_vvv_ops
)
204 DEF_RVV_FUNCTION (vdiv
, alu
, full_preds
, i_vvx_ops
)
205 DEF_RVV_FUNCTION (vremu
, alu
, full_preds
, u_vvv_ops
)
206 DEF_RVV_FUNCTION (vremu
, alu
, full_preds
, u_vvx_ops
)
207 DEF_RVV_FUNCTION (vrem
, alu
, full_preds
, i_vvv_ops
)
208 DEF_RVV_FUNCTION (vrem
, alu
, full_preds
, i_vvx_ops
)
210 // 11.12. Vector Widening Integer Multiply Instructions
211 DEF_RVV_FUNCTION (vwmul
, alu
, full_preds
, i_wvv_ops
)
212 DEF_RVV_FUNCTION (vwmul
, alu
, full_preds
, i_wvx_ops
)
213 DEF_RVV_FUNCTION (vwmulu
, alu
, full_preds
, u_wvv_ops
)
214 DEF_RVV_FUNCTION (vwmulu
, alu
, full_preds
, u_wvx_ops
)
215 DEF_RVV_FUNCTION (vwmulsu
, alu
, full_preds
, i_su_wvv_ops
)
216 DEF_RVV_FUNCTION (vwmulsu
, alu
, full_preds
, i_su_wvx_ops
)
218 // 11.13. Vector Single
-Width Integer Multiply
-Add Instructions
219 DEF_RVV_FUNCTION (vmacc
, alu
, full_preds
, iu_vvvv_ops
)
220 DEF_RVV_FUNCTION (vmacc
, alu
, full_preds
, iu_vvxv_ops
)
221 DEF_RVV_FUNCTION (vnmsac
, alu
, full_preds
, iu_vvvv_ops
)
222 DEF_RVV_FUNCTION (vnmsac
, alu
, full_preds
, iu_vvxv_ops
)
223 DEF_RVV_FUNCTION (vmadd
, alu
, full_preds
, iu_vvvv_ops
)
224 DEF_RVV_FUNCTION (vmadd
, alu
, full_preds
, iu_vvxv_ops
)
225 DEF_RVV_FUNCTION (vnmsub
, alu
, full_preds
, iu_vvvv_ops
)
226 DEF_RVV_FUNCTION (vnmsub
, alu
, full_preds
, iu_vvxv_ops
)
228 // 11.14. Vector Widening Integer Multiply
-Add Instructions
229 DEF_RVV_FUNCTION (vwmaccu
, alu
, full_preds
, u_wwvv_ops
)
230 DEF_RVV_FUNCTION (vwmaccu
, alu
, full_preds
, u_wwxv_ops
)
231 DEF_RVV_FUNCTION (vwmacc
, alu
, full_preds
, i_wwvv_ops
)
232 DEF_RVV_FUNCTION (vwmacc
, alu
, full_preds
, i_wwxv_ops
)
233 DEF_RVV_FUNCTION (vwmaccsu
, alu
, full_preds
, i_su_wwvv_ops
)
234 DEF_RVV_FUNCTION (vwmaccsu
, alu
, full_preds
, i_su_wwxv_ops
)
235 DEF_RVV_FUNCTION (vwmaccus
, alu
, full_preds
, i_us_wwxv_ops
)
237 // 11.15. Vector Integer Merge Instructions
238 DEF_RVV_FUNCTION (vmerge
, no_mask_policy
, none_tu_preds
, all_vvvm_ops
)
239 DEF_RVV_FUNCTION (vmerge
, no_mask_policy
, none_tu_preds
, iu_vvxm_ops
)
241 // 11.16 Vector Integer Move Instructions
242 DEF_RVV_FUNCTION (vmv_v
, move
, none_tu_preds
, all_v_ops
)
243 DEF_RVV_FUNCTION (vmv_v
, move
, none_tu_preds
, iu_x_ops
)
245 /* 12. Vector Fixed
-Point Arithmetic Instructions.
*/
247 // 12.1. Vector Single
-Width Saturating Add and Subtract
248 DEF_RVV_FUNCTION (vsaddu
, alu
, full_preds
, u_vvv_ops
)
249 DEF_RVV_FUNCTION (vsaddu
, alu
, full_preds
, u_vvx_ops
)
250 DEF_RVV_FUNCTION (vsadd
, alu
, full_preds
, i_vvv_ops
)
251 DEF_RVV_FUNCTION (vsadd
, alu
, full_preds
, i_vvx_ops
)
252 DEF_RVV_FUNCTION (vssubu
, alu
, full_preds
, u_vvv_ops
)
253 DEF_RVV_FUNCTION (vssubu
, alu
, full_preds
, u_vvx_ops
)
254 DEF_RVV_FUNCTION (vssub
, alu
, full_preds
, i_vvv_ops
)
255 DEF_RVV_FUNCTION (vssub
, alu
, full_preds
, i_vvx_ops
)
257 // 12.2. Vector Single
-Width Averaging Add and Subtract
258 DEF_RVV_FUNCTION (vaaddu
, alu
, full_preds
, u_vvv_ops
)
259 DEF_RVV_FUNCTION (vaaddu
, alu
, full_preds
, u_vvx_ops
)
260 DEF_RVV_FUNCTION (vaadd
, alu
, full_preds
, i_vvv_ops
)
261 DEF_RVV_FUNCTION (vaadd
, alu
, full_preds
, i_vvx_ops
)
262 DEF_RVV_FUNCTION (vasubu
, alu
, full_preds
, u_vvv_ops
)
263 DEF_RVV_FUNCTION (vasubu
, alu
, full_preds
, u_vvx_ops
)
264 DEF_RVV_FUNCTION (vasub
, alu
, full_preds
, i_vvv_ops
)
265 DEF_RVV_FUNCTION (vasub
, alu
, full_preds
, i_vvx_ops
)
267 // 12.3. Vector Single
-Width Fractional Multiply with Rounding and Saturation
268 DEF_RVV_FUNCTION (vsmul
, alu
, full_preds
, full_v_i_vvv_ops
)
269 DEF_RVV_FUNCTION (vsmul
, alu
, full_preds
, full_v_i_vvx_ops
)
271 // 12.4. Vector Single
-Width Scaling Shift Instructions
272 DEF_RVV_FUNCTION (vssrl
, alu
, full_preds
, u_shift_vvv_ops
)
273 DEF_RVV_FUNCTION (vssrl
, alu
, full_preds
, u_shift_vvx_ops
)
274 DEF_RVV_FUNCTION (vssra
, alu
, full_preds
, i_shift_vvv_ops
)
275 DEF_RVV_FUNCTION (vssra
, alu
, full_preds
, i_shift_vvx_ops
)
277 // 12.5. Vector Narrowing Fixed
-Point Clip Instructions
278 DEF_RVV_FUNCTION (vnclipu
, narrow_alu
, full_preds
, u_narrow_shift_vwv_ops
)
279 DEF_RVV_FUNCTION (vnclipu
, narrow_alu
, full_preds
, u_narrow_shift_vwx_ops
)
280 DEF_RVV_FUNCTION (vnclip
, narrow_alu
, full_preds
, i_narrow_shift_vwv_ops
)
281 DEF_RVV_FUNCTION (vnclip
, narrow_alu
, full_preds
, i_narrow_shift_vwx_ops
)
283 /* 13. Vector Floating
-Point Instructions.
*/
285 // 13.2. Vector Single
-Width Floating
-Point Add
/Subtract Instructions
286 DEF_RVV_FUNCTION (vfadd
, alu
, full_preds
, f_vvv_ops
)
287 DEF_RVV_FUNCTION (vfadd
, alu
, full_preds
, f_vvf_ops
)
288 DEF_RVV_FUNCTION (vfsub
, alu
, full_preds
, f_vvv_ops
)
289 DEF_RVV_FUNCTION (vfsub
, alu
, full_preds
, f_vvf_ops
)
290 DEF_RVV_FUNCTION (vfrsub
, alu
, full_preds
, f_vvf_ops
)
291 DEF_RVV_FUNCTION (vfadd_frm
, alu_frm
, full_preds
, f_vvv_ops
)
292 DEF_RVV_FUNCTION (vfadd_frm
, alu_frm
, full_preds
, f_vvf_ops
)
293 DEF_RVV_FUNCTION (vfsub_frm
, alu_frm
, full_preds
, f_vvv_ops
)
294 DEF_RVV_FUNCTION (vfsub_frm
, alu_frm
, full_preds
, f_vvf_ops
)
295 DEF_RVV_FUNCTION (vfrsub_frm
, alu_frm
, full_preds
, f_vvf_ops
)
297 // 13.3. Vector Widening Floating
-Point Add
/Subtract Instructions
298 DEF_RVV_FUNCTION (vfwadd
, widen_alu
, full_preds
, f_wvv_ops
)
299 DEF_RVV_FUNCTION (vfwadd
, widen_alu
, full_preds
, f_wvf_ops
)
300 DEF_RVV_FUNCTION (vfwsub
, widen_alu
, full_preds
, f_wvv_ops
)
301 DEF_RVV_FUNCTION (vfwsub
, widen_alu
, full_preds
, f_wvf_ops
)
302 DEF_RVV_FUNCTION (vfwadd
, widen_alu
, full_preds
, f_wwv_ops
)
303 DEF_RVV_FUNCTION (vfwadd
, widen_alu
, full_preds
, f_wwf_ops
)
304 DEF_RVV_FUNCTION (vfwsub
, widen_alu
, full_preds
, f_wwv_ops
)
305 DEF_RVV_FUNCTION (vfwsub
, widen_alu
, full_preds
, f_wwf_ops
)
306 DEF_RVV_FUNCTION (vfwadd_frm
, widen_alu_frm
, full_preds
, f_wvv_ops
)
307 DEF_RVV_FUNCTION (vfwadd_frm
, widen_alu_frm
, full_preds
, f_wvf_ops
)
308 DEF_RVV_FUNCTION (vfwsub_frm
, widen_alu_frm
, full_preds
, f_wvv_ops
)
309 DEF_RVV_FUNCTION (vfwsub_frm
, widen_alu_frm
, full_preds
, f_wvf_ops
)
310 DEF_RVV_FUNCTION (vfwadd_frm
, widen_alu_frm
, full_preds
, f_wwv_ops
)
311 DEF_RVV_FUNCTION (vfwadd_frm
, widen_alu_frm
, full_preds
, f_wwf_ops
)
312 DEF_RVV_FUNCTION (vfwsub_frm
, widen_alu_frm
, full_preds
, f_wwv_ops
)
313 DEF_RVV_FUNCTION (vfwsub_frm
, widen_alu_frm
, full_preds
, f_wwf_ops
)
315 // 13.4. Vector Single
-Width Floating
-Point Multiply
/Divide Instructions
316 DEF_RVV_FUNCTION (vfmul
, alu
, full_preds
, f_vvv_ops
)
317 DEF_RVV_FUNCTION (vfmul
, alu
, full_preds
, f_vvf_ops
)
318 DEF_RVV_FUNCTION (vfdiv
, alu
, full_preds
, f_vvv_ops
)
319 DEF_RVV_FUNCTION (vfdiv
, alu
, full_preds
, f_vvf_ops
)
320 DEF_RVV_FUNCTION (vfrdiv
, alu
, full_preds
, f_vvf_ops
)
321 DEF_RVV_FUNCTION (vfmul_frm
, alu_frm
, full_preds
, f_vvv_ops
)
322 DEF_RVV_FUNCTION (vfmul_frm
, alu_frm
, full_preds
, f_vvf_ops
)
323 DEF_RVV_FUNCTION (vfdiv_frm
, alu_frm
, full_preds
, f_vvv_ops
)
324 DEF_RVV_FUNCTION (vfdiv_frm
, alu_frm
, full_preds
, f_vvf_ops
)
325 DEF_RVV_FUNCTION (vfrdiv_frm
, alu_frm
, full_preds
, f_vvf_ops
)
327 // 13.5. Vector Widening Floating
-Point Multiply
328 DEF_RVV_FUNCTION (vfwmul
, alu
, full_preds
, f_wvv_ops
)
329 DEF_RVV_FUNCTION (vfwmul
, alu
, full_preds
, f_wvf_ops
)
330 DEF_RVV_FUNCTION (vfwmul_frm
, alu_frm
, full_preds
, f_wvv_ops
)
331 DEF_RVV_FUNCTION (vfwmul_frm
, alu_frm
, full_preds
, f_wvf_ops
)
333 // 13.6. Vector Single
-Width Floating
-Point Fused Multiply
-Add Instructions
334 DEF_RVV_FUNCTION (vfmacc
, alu
, full_preds
, f_vvvv_ops
)
335 DEF_RVV_FUNCTION (vfmacc
, alu
, full_preds
, f_vvfv_ops
)
336 DEF_RVV_FUNCTION (vfnmsac
, alu
, full_preds
, f_vvvv_ops
)
337 DEF_RVV_FUNCTION (vfnmsac
, alu
, full_preds
, f_vvfv_ops
)
338 DEF_RVV_FUNCTION (vfmadd
, alu
, full_preds
, f_vvvv_ops
)
339 DEF_RVV_FUNCTION (vfmadd
, alu
, full_preds
, f_vvfv_ops
)
340 DEF_RVV_FUNCTION (vfnmsub
, alu
, full_preds
, f_vvvv_ops
)
341 DEF_RVV_FUNCTION (vfnmsub
, alu
, full_preds
, f_vvfv_ops
)
342 DEF_RVV_FUNCTION (vfnmacc
, alu
, full_preds
, f_vvvv_ops
)
343 DEF_RVV_FUNCTION (vfnmacc
, alu
, full_preds
, f_vvfv_ops
)
344 DEF_RVV_FUNCTION (vfmsac
, alu
, full_preds
, f_vvvv_ops
)
345 DEF_RVV_FUNCTION (vfmsac
, alu
, full_preds
, f_vvfv_ops
)
346 DEF_RVV_FUNCTION (vfnmadd
, alu
, full_preds
, f_vvvv_ops
)
347 DEF_RVV_FUNCTION (vfnmadd
, alu
, full_preds
, f_vvfv_ops
)
348 DEF_RVV_FUNCTION (vfmsub
, alu
, full_preds
, f_vvvv_ops
)
349 DEF_RVV_FUNCTION (vfmsub
, alu
, full_preds
, f_vvfv_ops
)
351 DEF_RVV_FUNCTION (vfmacc_frm
, alu_frm
, full_preds
, f_vvvv_ops
)
352 DEF_RVV_FUNCTION (vfmacc_frm
, alu_frm
, full_preds
, f_vvfv_ops
)
353 DEF_RVV_FUNCTION (vfnmacc_frm
, alu_frm
, full_preds
, f_vvvv_ops
)
354 DEF_RVV_FUNCTION (vfnmacc_frm
, alu_frm
, full_preds
, f_vvfv_ops
)
355 DEF_RVV_FUNCTION (vfmsac_frm
, alu_frm
, full_preds
, f_vvvv_ops
)
356 DEF_RVV_FUNCTION (vfmsac_frm
, alu_frm
, full_preds
, f_vvfv_ops
)
357 DEF_RVV_FUNCTION (vfnmsac_frm
, alu_frm
, full_preds
, f_vvvv_ops
)
358 DEF_RVV_FUNCTION (vfnmsac_frm
, alu_frm
, full_preds
, f_vvfv_ops
)
359 DEF_RVV_FUNCTION (vfmadd_frm
, alu_frm
, full_preds
, f_vvvv_ops
)
360 DEF_RVV_FUNCTION (vfmadd_frm
, alu_frm
, full_preds
, f_vvfv_ops
)
361 DEF_RVV_FUNCTION (vfnmadd_frm
, alu_frm
, full_preds
, f_vvvv_ops
)
362 DEF_RVV_FUNCTION (vfnmadd_frm
, alu_frm
, full_preds
, f_vvfv_ops
)
363 DEF_RVV_FUNCTION (vfmsub_frm
, alu_frm
, full_preds
, f_vvvv_ops
)
364 DEF_RVV_FUNCTION (vfmsub_frm
, alu_frm
, full_preds
, f_vvfv_ops
)
365 DEF_RVV_FUNCTION (vfnmsub_frm
, alu_frm
, full_preds
, f_vvvv_ops
)
366 DEF_RVV_FUNCTION (vfnmsub_frm
, alu_frm
, full_preds
, f_vvfv_ops
)
368 // 13.7. Vector Widening Floating
-Point Fused Multiply
-Add Instructions
369 DEF_RVV_FUNCTION (vfwmacc
, alu
, full_preds
, f_wwvv_ops
)
370 DEF_RVV_FUNCTION (vfwmacc
, alu
, full_preds
, f_wwfv_ops
)
371 DEF_RVV_FUNCTION (vfwnmacc
, alu
, full_preds
, f_wwvv_ops
)
372 DEF_RVV_FUNCTION (vfwnmacc
, alu
, full_preds
, f_wwfv_ops
)
373 DEF_RVV_FUNCTION (vfwmsac
, alu
, full_preds
, f_wwvv_ops
)
374 DEF_RVV_FUNCTION (vfwmsac
, alu
, full_preds
, f_wwfv_ops
)
375 DEF_RVV_FUNCTION (vfwnmsac
, alu
, full_preds
, f_wwvv_ops
)
376 DEF_RVV_FUNCTION (vfwnmsac
, alu
, full_preds
, f_wwfv_ops
)
378 DEF_RVV_FUNCTION (vfwmacc_frm
, alu_frm
, full_preds
, f_wwvv_ops
)
379 DEF_RVV_FUNCTION (vfwmacc_frm
, alu_frm
, full_preds
, f_wwfv_ops
)
380 DEF_RVV_FUNCTION (vfwnmacc_frm
, alu_frm
, full_preds
, f_wwvv_ops
)
381 DEF_RVV_FUNCTION (vfwnmacc_frm
, alu_frm
, full_preds
, f_wwfv_ops
)
382 DEF_RVV_FUNCTION (vfwmsac_frm
, alu_frm
, full_preds
, f_wwvv_ops
)
383 DEF_RVV_FUNCTION (vfwmsac_frm
, alu_frm
, full_preds
, f_wwfv_ops
)
384 DEF_RVV_FUNCTION (vfwnmsac_frm
, alu_frm
, full_preds
, f_wwvv_ops
)
385 DEF_RVV_FUNCTION (vfwnmsac_frm
, alu_frm
, full_preds
, f_wwfv_ops
)
387 // 13.8. Vector Floating
-Point Square
-Root Instruction
388 DEF_RVV_FUNCTION (vfsqrt
, alu
, full_preds
, f_v_ops
)
390 DEF_RVV_FUNCTION (vfsqrt_frm
, alu_frm
, full_preds
, f_v_ops
)
392 // 13.9. Vector Floating
-Point Reciprocal Square
-Root Estimate Instruction
393 DEF_RVV_FUNCTION (vfrsqrt7
, alu
, full_preds
, f_v_ops
)
395 // 13.10. Vector Floating
-Point Reciprocal Estimate Instruction
396 DEF_RVV_FUNCTION (vfrec7
, alu
, full_preds
, f_v_ops
)
398 DEF_RVV_FUNCTION (vfrec7_frm
, alu_frm
, full_preds
, f_v_ops
)
400 // 13.11. Vector Floating
-Point
MIN/MAX Instructions
401 DEF_RVV_FUNCTION (vfmin
, alu
, full_preds
, f_vvv_ops
)
402 DEF_RVV_FUNCTION (vfmin
, alu
, full_preds
, f_vvf_ops
)
403 DEF_RVV_FUNCTION (vfmax
, alu
, full_preds
, f_vvv_ops
)
404 DEF_RVV_FUNCTION (vfmax
, alu
, full_preds
, f_vvf_ops
)
406 // 13.12. Vector Floating
-Point Sign
-Injection Instructions
407 DEF_RVV_FUNCTION (vfsgnj
, alu
, full_preds
, f_vvv_ops
)
408 DEF_RVV_FUNCTION (vfsgnj
, alu
, full_preds
, f_vvf_ops
)
409 DEF_RVV_FUNCTION (vfsgnjn
, alu
, full_preds
, f_vvv_ops
)
410 DEF_RVV_FUNCTION (vfsgnjn
, alu
, full_preds
, f_vvf_ops
)
411 DEF_RVV_FUNCTION (vfsgnjx
, alu
, full_preds
, f_vvv_ops
)
412 DEF_RVV_FUNCTION (vfsgnjx
, alu
, full_preds
, f_vvf_ops
)
413 DEF_RVV_FUNCTION (vfneg
, alu
, full_preds
, f_v_ops
)
414 DEF_RVV_FUNCTION (vfabs
, alu
, full_preds
, f_v_ops
)
416 // 13.13. Vector Floating
-Point Compare Instructions
417 DEF_RVV_FUNCTION (vmfeq
, return_mask
, none_m_mu_preds
, f_mvv_ops
)
418 DEF_RVV_FUNCTION (vmfeq
, return_mask
, none_m_mu_preds
, f_mvf_ops
)
419 DEF_RVV_FUNCTION (vmfne
, return_mask
, none_m_mu_preds
, f_mvv_ops
)
420 DEF_RVV_FUNCTION (vmfne
, return_mask
, none_m_mu_preds
, f_mvf_ops
)
421 DEF_RVV_FUNCTION (vmflt
, return_mask
, none_m_mu_preds
, f_mvv_ops
)
422 DEF_RVV_FUNCTION (vmflt
, return_mask
, none_m_mu_preds
, f_mvf_ops
)
423 DEF_RVV_FUNCTION (vmfle
, return_mask
, none_m_mu_preds
, f_mvv_ops
)
424 DEF_RVV_FUNCTION (vmfle
, return_mask
, none_m_mu_preds
, f_mvf_ops
)
425 DEF_RVV_FUNCTION (vmfgt
, return_mask
, none_m_mu_preds
, f_mvv_ops
)
426 DEF_RVV_FUNCTION (vmfgt
, return_mask
, none_m_mu_preds
, f_mvf_ops
)
427 DEF_RVV_FUNCTION (vmfge
, return_mask
, none_m_mu_preds
, f_mvv_ops
)
428 DEF_RVV_FUNCTION (vmfge
, return_mask
, none_m_mu_preds
, f_mvf_ops
)
430 // 13.14. Vector Floating
-Point Classify Instruction
431 DEF_RVV_FUNCTION (vfclass
, alu
, full_preds
, f_to_u_v_ops
)
433 // 13.15. Vector Floating
-Point Merge Instruction
434 DEF_RVV_FUNCTION (vfmerge
, no_mask_policy
, none_tu_preds
, f_vvfm_ops
)
436 // 13.16. Vector Floating
-Point Move Instruction
437 DEF_RVV_FUNCTION (vfmv_v
, move
, none_tu_preds
, f_f_ops
)
439 // 13.17. Single
-Width Floating
-Point
/Integer Type
-Convert Instructions
440 DEF_RVV_FUNCTION (vfcvt_x
, alu
, full_preds
, f_to_i_f_v_ops
)
441 DEF_RVV_FUNCTION (vfcvt_xu
, alu
, full_preds
, f_to_u_f_v_ops
)
442 DEF_RVV_FUNCTION (vfcvt_rtz_x
, alu
, full_preds
, f_to_i_f_v_ops
)
443 DEF_RVV_FUNCTION (vfcvt_rtz_xu
, alu
, full_preds
, f_to_u_f_v_ops
)
444 DEF_RVV_FUNCTION (vfcvt_f
, alu
, full_preds
, i_to_f_x_v_ops
)
445 DEF_RVV_FUNCTION (vfcvt_f
, alu
, full_preds
, u_to_f_xu_v_ops
)
447 DEF_RVV_FUNCTION (vfcvt_x_frm
, alu_frm
, full_preds
, f_to_i_f_v_ops
)
448 DEF_RVV_FUNCTION (vfcvt_xu_frm
, alu_frm
, full_preds
, f_to_u_f_v_ops
)
449 DEF_RVV_FUNCTION (vfcvt_f_frm
, alu_frm
, full_preds
, i_to_f_x_v_ops
)
450 DEF_RVV_FUNCTION (vfcvt_f_frm
, alu_frm
, full_preds
, u_to_f_xu_v_ops
)
452 // 13.18. Widening Floating
-Point
/Integer Type
-Convert Instructions
453 DEF_RVV_FUNCTION (vfwcvt_x
, alu
, full_preds
, f_to_wi_f_v_ops
)
454 DEF_RVV_FUNCTION (vfwcvt_xu
, alu
, full_preds
, f_to_wu_f_v_ops
)
455 DEF_RVV_FUNCTION (vfwcvt_rtz_x
, alu
, full_preds
, f_to_wi_f_v_ops
)
456 DEF_RVV_FUNCTION (vfwcvt_rtz_xu
, alu
, full_preds
, f_to_wu_f_v_ops
)
457 DEF_RVV_FUNCTION (vfwcvt_f
, alu
, full_preds
, i_to_wf_x_v_ops
)
458 DEF_RVV_FUNCTION (vfwcvt_f
, alu
, full_preds
, u_to_wf_xu_v_ops
)
459 DEF_RVV_FUNCTION (vfwcvt_f
, alu
, full_preds
, f_to_wf_f_v_ops
)
461 DEF_RVV_FUNCTION (vfwcvt_x_frm
, alu_frm
, full_preds
, f_to_wi_f_v_ops
)
462 DEF_RVV_FUNCTION (vfwcvt_xu_frm
, alu_frm
, full_preds
, f_to_wu_f_v_ops
)
464 // 13.19. Narrowing Floating
-Point
/Integer Type
-Convert Instructions
465 DEF_RVV_FUNCTION (vfncvt_x
, narrow_alu
, full_preds
, f_to_ni_f_w_ops
)
466 DEF_RVV_FUNCTION (vfncvt_xu
, narrow_alu
, full_preds
, f_to_nu_f_w_ops
)
467 DEF_RVV_FUNCTION (vfncvt_rtz_x
, narrow_alu
, full_preds
, f_to_ni_f_w_ops
)
468 DEF_RVV_FUNCTION (vfncvt_rtz_xu
, narrow_alu
, full_preds
, f_to_nu_f_w_ops
)
469 DEF_RVV_FUNCTION (vfncvt_f
, narrow_alu
, full_preds
, i_to_nf_x_w_ops
)
470 DEF_RVV_FUNCTION (vfncvt_f
, narrow_alu
, full_preds
, u_to_nf_xu_w_ops
)
471 DEF_RVV_FUNCTION (vfncvt_f
, narrow_alu
, full_preds
, f_to_nf_f_w_ops
)
472 DEF_RVV_FUNCTION (vfncvt_rod_f
, narrow_alu
, full_preds
, f_to_nf_f_w_ops
)
474 DEF_RVV_FUNCTION (vfncvt_x_frm
, narrow_alu_frm
, full_preds
, f_to_ni_f_w_ops
)
475 DEF_RVV_FUNCTION (vfncvt_xu_frm
, narrow_alu_frm
, full_preds
, f_to_nu_f_w_ops
)
476 DEF_RVV_FUNCTION (vfncvt_f_frm
, narrow_alu_frm
, full_preds
, i_to_nf_x_w_ops
)
477 DEF_RVV_FUNCTION (vfncvt_f_frm
, narrow_alu_frm
, full_preds
, u_to_nf_xu_w_ops
)
478 DEF_RVV_FUNCTION (vfncvt_f_frm
, narrow_alu_frm
, full_preds
, f_to_nf_f_w_ops
)
480 /* 14. Vector Reduction Operations.
*/
482 // 14.1. Vector Single
-Width Integer Reduction Instructions
483 DEF_RVV_FUNCTION (vredsum
, reduc_alu
, no_mu_preds
, iu_vs_ops
)
484 DEF_RVV_FUNCTION (vredmaxu
, reduc_alu
, no_mu_preds
, iu_vs_ops
)
485 DEF_RVV_FUNCTION (vredmax
, reduc_alu
, no_mu_preds
, iu_vs_ops
)
486 DEF_RVV_FUNCTION (vredminu
, reduc_alu
, no_mu_preds
, iu_vs_ops
)
487 DEF_RVV_FUNCTION (vredmin
, reduc_alu
, no_mu_preds
, iu_vs_ops
)
488 DEF_RVV_FUNCTION (vredand
, reduc_alu
, no_mu_preds
, iu_vs_ops
)
489 DEF_RVV_FUNCTION (vredor
, reduc_alu
, no_mu_preds
, iu_vs_ops
)
490 DEF_RVV_FUNCTION (vredxor
, reduc_alu
, no_mu_preds
, iu_vs_ops
)
492 // 14.2. Vector Widening Integer Reduction Instructions
493 DEF_RVV_FUNCTION (vwredsum
, reduc_alu
, no_mu_preds
, wi_vs_ops
)
494 DEF_RVV_FUNCTION (vwredsumu
, reduc_alu
, no_mu_preds
, wu_vs_ops
)
496 // 14.3. Vector Single
-Width Floating
-Point Reduction Instructions
497 DEF_RVV_FUNCTION (vfredusum
, reduc_alu
, no_mu_preds
, f_vs_ops
)
498 DEF_RVV_FUNCTION (vfredosum
, reduc_alu
, no_mu_preds
, f_vs_ops
)
499 DEF_RVV_FUNCTION (vfredmax
, reduc_alu
, no_mu_preds
, f_vs_ops
)
500 DEF_RVV_FUNCTION (vfredmin
, reduc_alu
, no_mu_preds
, f_vs_ops
)
502 DEF_RVV_FUNCTION (vfredusum_frm
, reduc_alu_frm
, no_mu_preds
, f_vs_ops
)
503 DEF_RVV_FUNCTION (vfredosum_frm
, reduc_alu_frm
, no_mu_preds
, f_vs_ops
)
505 // 14.4. Vector Widening Floating
-Point Reduction Instructions
506 DEF_RVV_FUNCTION (vfwredosum
, reduc_alu
, no_mu_preds
, wf_vs_ops
)
507 DEF_RVV_FUNCTION (vfwredusum
, reduc_alu
, no_mu_preds
, wf_vs_ops
)
509 DEF_RVV_FUNCTION (vfwredosum_frm
, reduc_alu_frm
, no_mu_preds
, wf_vs_ops
)
510 DEF_RVV_FUNCTION (vfwredusum_frm
, reduc_alu_frm
, no_mu_preds
, wf_vs_ops
)
512 /* 15. Vector Mask Instructions.
*/
514 // 15.1. Vector Mask
-Register Logical Instructions
515 DEF_RVV_FUNCTION (vmand
, mask_alu
, none_preds
, b_mmm_ops
)
516 DEF_RVV_FUNCTION (vmnand
, mask_alu
, none_preds
, b_mmm_ops
)
517 DEF_RVV_FUNCTION (vmandn
, mask_alu
, none_preds
, b_mmm_ops
)
518 DEF_RVV_FUNCTION (vmxor
, mask_alu
, none_preds
, b_mmm_ops
)
519 DEF_RVV_FUNCTION (vmor
, mask_alu
, none_preds
, b_mmm_ops
)
520 DEF_RVV_FUNCTION (vmnor
, mask_alu
, none_preds
, b_mmm_ops
)
521 DEF_RVV_FUNCTION (vmorn
, mask_alu
, none_preds
, b_mmm_ops
)
522 DEF_RVV_FUNCTION (vmxnor
, mask_alu
, none_preds
, b_mmm_ops
)
523 DEF_RVV_FUNCTION (vmmv
, mask_alu
, none_preds
, b_mm_ops
)
524 DEF_RVV_FUNCTION (vmclr
, mask_alu
, none_preds
, b_m_ops
)
525 DEF_RVV_FUNCTION (vmset
, mask_alu
, none_preds
, b_m_ops
)
526 DEF_RVV_FUNCTION (vmnot
, mask_alu
, none_preds
, b_mm_ops
)
527 // 15.2. Vector count population in mask vcpop.m
528 DEF_RVV_FUNCTION (vcpop
, mask_alu
, none_m_preds
, b_ulong_m_ops
)
529 // 15.3. vfirst find
-first
-set mask bit
530 DEF_RVV_FUNCTION (vfirst
, mask_alu
, none_m_preds
, b_long_m_ops
)
531 // 15.4. vmsbf.m set
-before
-first mask bit
532 DEF_RVV_FUNCTION (vmsbf
, mask_alu
, none_m_mu_preds
, b_mm_ops
)
533 // 15.5. vmsif.m set
-including
-first mask bit
534 DEF_RVV_FUNCTION (vmsif
, mask_alu
, none_m_mu_preds
, b_mm_ops
)
535 // 15.6. vmsof.m set
-only
-first mask bit
536 DEF_RVV_FUNCTION (vmsof
, mask_alu
, none_m_mu_preds
, b_mm_ops
)
537 // 15.8. Vector Iota Instruction
538 DEF_RVV_FUNCTION (viota
, mask_alu
, full_preds
, u_vm_ops
)
539 // 15.9. Vector Element Index Instruction
540 DEF_RVV_FUNCTION (vid
, alu
, full_preds
, u_v_ops
)
542 /* 16. Vector Permutation Instructions.
*/
544 // 16.1. Integer Scalar Move Instructions
545 DEF_RVV_FUNCTION (vmv_x
, scalar_move
, none_preds
, iu_x_s_ops
)
546 DEF_RVV_FUNCTION (vmv_s
, move
, none_tu_preds
, iu_s_x_ops
)
548 // 16.2. Floating
-Point Scalar Move Instructions
549 DEF_RVV_FUNCTION (vfmv_f
, scalar_move
, none_preds
, f_f_s_ops
)
550 DEF_RVV_FUNCTION (vfmv_s
, move
, none_tu_preds
, f_s_f_ops
)
552 // 16.3. Vector Slide Instructions
553 DEF_RVV_FUNCTION (vslideup
, alu
, full_preds
, all_vvvx_ops
)
554 DEF_RVV_FUNCTION (vslidedown
, alu
, full_preds
, all_vvx_ops
)
555 DEF_RVV_FUNCTION (vslide1up
, alu
, full_preds
, iu_vvx_ops
)
556 DEF_RVV_FUNCTION (vslide1down
, alu
, full_preds
, iu_vvx_ops
)
557 DEF_RVV_FUNCTION (vfslide1up
, alu
, full_preds
, f_vvf_ops
)
558 DEF_RVV_FUNCTION (vfslide1down
, alu
, full_preds
, f_vvf_ops
)
560 // 16.4. Vector Register Gather Instructions
561 DEF_RVV_FUNCTION (vrgather
, alu
, full_preds
, all_gather_vvv_ops
)
562 DEF_RVV_FUNCTION (vrgather
, alu
, full_preds
, all_gather_vvx_ops
)
563 DEF_RVV_FUNCTION (vrgatherei16
, alu
, full_preds
, all_gatherei16_vvv_ops
)
565 // 16.5. Vector Compress Instruction
566 DEF_RVV_FUNCTION (vcompress
, alu
, none_tu_preds
, all_vvm_ops
)
568 /* Miscellaneous Vector Functions.
*/
569 DEF_RVV_FUNCTION (vundefined
, vundefined
, none_preds
, all_none_void_ops
)
570 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, i_v_u_ops
)
571 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, u_v_i_ops
)
572 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, f_v_i_ops
)
573 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, f_v_u_ops
)
574 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, i_v_f_ops
)
575 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, u_v_f_ops
)
576 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, iu_v_eew8_interpret_ops
)
577 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, iu_v_eew16_interpret_ops
)
578 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, iu_v_eew32_interpret_ops
)
579 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, iu_v_eew64_interpret_ops
)
580 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, iu_v_bool1_interpret_ops
)
581 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, iu_v_bool2_interpret_ops
)
582 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, iu_v_bool4_interpret_ops
)
583 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, iu_v_bool8_interpret_ops
)
584 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, iu_v_bool16_interpret_ops
)
585 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, iu_v_bool32_interpret_ops
)
586 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, iu_v_bool64_interpret_ops
)
587 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, b_v_signed_eew8_lmul1_interpret_ops
)
588 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, b_v_signed_eew16_lmul1_interpret_ops
)
589 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, b_v_signed_eew32_lmul1_interpret_ops
)
590 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, b_v_signed_eew64_lmul1_interpret_ops
)
591 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, b_v_unsigned_eew8_lmul1_interpret_ops
)
592 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, b_v_unsigned_eew16_lmul1_interpret_ops
)
593 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, b_v_unsigned_eew32_lmul1_interpret_ops
)
594 DEF_RVV_FUNCTION (vreinterpret
, misc
, none_preds
, b_v_unsigned_eew64_lmul1_interpret_ops
)
595 DEF_RVV_FUNCTION (vlmul_ext
, misc
, none_preds
, all_v_vlmul_ext_x2_ops
)
596 DEF_RVV_FUNCTION (vlmul_ext
, misc
, none_preds
, all_v_vlmul_ext_x4_ops
)
597 DEF_RVV_FUNCTION (vlmul_ext
, misc
, none_preds
, all_v_vlmul_ext_x8_ops
)
598 DEF_RVV_FUNCTION (vlmul_ext
, misc
, none_preds
, all_v_vlmul_ext_x16_ops
)
599 DEF_RVV_FUNCTION (vlmul_ext
, misc
, none_preds
, all_v_vlmul_ext_x32_ops
)
600 DEF_RVV_FUNCTION (vlmul_ext
, misc
, none_preds
, all_v_vlmul_ext_x64_ops
)
601 DEF_RVV_FUNCTION (vlmul_trunc
, misc
, none_preds
, all_v_vlmul_trunc_x2_ops
)
602 DEF_RVV_FUNCTION (vlmul_trunc
, misc
, none_preds
, all_v_vlmul_trunc_x4_ops
)
603 DEF_RVV_FUNCTION (vlmul_trunc
, misc
, none_preds
, all_v_vlmul_trunc_x8_ops
)
604 DEF_RVV_FUNCTION (vlmul_trunc
, misc
, none_preds
, all_v_vlmul_trunc_x16_ops
)
605 DEF_RVV_FUNCTION (vlmul_trunc
, misc
, none_preds
, all_v_vlmul_trunc_x32_ops
)
606 DEF_RVV_FUNCTION (vlmul_trunc
, misc
, none_preds
, all_v_vlmul_trunc_x64_ops
)
607 DEF_RVV_FUNCTION (vset
, vset
, none_preds
, all_v_vset_lmul1_x2_ops
)
608 DEF_RVV_FUNCTION (vset
, vset
, none_preds
, all_v_vset_lmul1_x4_ops
)
609 DEF_RVV_FUNCTION (vset
, vset
, none_preds
, all_v_vset_lmul1_x8_ops
)
610 DEF_RVV_FUNCTION (vset
, vset
, none_preds
, all_v_vset_lmul2_x2_ops
)
611 DEF_RVV_FUNCTION (vset
, vset
, none_preds
, all_v_vset_lmul2_x4_ops
)
612 DEF_RVV_FUNCTION (vset
, vset
, none_preds
, all_v_vset_lmul4_x2_ops
)
613 DEF_RVV_FUNCTION (vget
, vget
, none_preds
, all_v_vget_lmul1_x2_ops
)
614 DEF_RVV_FUNCTION (vget
, vget
, none_preds
, all_v_vget_lmul1_x4_ops
)
615 DEF_RVV_FUNCTION (vget
, vget
, none_preds
, all_v_vget_lmul1_x8_ops
)
616 DEF_RVV_FUNCTION (vget
, vget
, none_preds
, all_v_vget_lmul2_x2_ops
)
617 DEF_RVV_FUNCTION (vget
, vget
, none_preds
, all_v_vget_lmul2_x4_ops
)
618 DEF_RVV_FUNCTION (vget
, vget
, none_preds
, all_v_vget_lmul4_x2_ops
)
619 DEF_RVV_FUNCTION (vcreate
, vcreate
, none_preds
, all_v_vcreate_lmul1_x2_ops
)
620 DEF_RVV_FUNCTION (vcreate
, vcreate
, none_preds
, all_v_vcreate_lmul1_x4_ops
)
621 DEF_RVV_FUNCTION (vcreate
, vcreate
, none_preds
, all_v_vcreate_lmul1_x8_ops
)
622 DEF_RVV_FUNCTION (vcreate
, vcreate
, none_preds
, all_v_vcreate_lmul2_x2_ops
)
623 DEF_RVV_FUNCTION (vcreate
, vcreate
, none_preds
, all_v_vcreate_lmul2_x4_ops
)
624 DEF_RVV_FUNCTION (vcreate
, vcreate
, none_preds
, all_v_vcreate_lmul4_x2_ops
)
627 DEF_RVV_FUNCTION (vset
, vset
, none_preds
, all_v_vset_tuple_ops
)
628 DEF_RVV_FUNCTION (vget
, vget
, none_preds
, all_v_vget_tuple_ops
)
629 DEF_RVV_FUNCTION (vcreate
, vcreate
, none_preds
, all_v_vcreate_tuple_ops
)
630 DEF_RVV_FUNCTION (vundefined
, vundefined
, none_preds
, all_none_void_tuple_ops
)
632 // 7.8. Vector Load
/Store Segment Instructions
633 DEF_RVV_FUNCTION (vlseg
, seg_loadstore
, full_preds
, tuple_v_scalar_const_ptr_ops
)
634 DEF_RVV_FUNCTION (vsseg
, seg_loadstore
, none_m_preds
, tuple_v_scalar_ptr_ops
)
635 DEF_RVV_FUNCTION (vlsseg
, seg_loadstore
, full_preds
, tuple_v_scalar_const_ptr_ptrdiff_ops
)
636 DEF_RVV_FUNCTION (vssseg
, seg_loadstore
, none_m_preds
, tuple_v_scalar_ptr_ptrdiff_ops
)
637 DEF_RVV_FUNCTION (vluxseg
, seg_indexed_loadstore
, full_preds
, tuple_v_scalar_const_ptr_eew8_index_ops
)
638 DEF_RVV_FUNCTION (vluxseg
, seg_indexed_loadstore
, full_preds
, tuple_v_scalar_const_ptr_eew16_index_ops
)
639 DEF_RVV_FUNCTION (vluxseg
, seg_indexed_loadstore
, full_preds
, tuple_v_scalar_const_ptr_eew32_index_ops
)
640 DEF_RVV_FUNCTION (vluxseg
, seg_indexed_loadstore
, full_preds
, tuple_v_scalar_const_ptr_eew64_index_ops
)
641 DEF_RVV_FUNCTION (vloxseg
, seg_indexed_loadstore
, full_preds
, tuple_v_scalar_const_ptr_eew8_index_ops
)
642 DEF_RVV_FUNCTION (vloxseg
, seg_indexed_loadstore
, full_preds
, tuple_v_scalar_const_ptr_eew16_index_ops
)
643 DEF_RVV_FUNCTION (vloxseg
, seg_indexed_loadstore
, full_preds
, tuple_v_scalar_const_ptr_eew32_index_ops
)
644 DEF_RVV_FUNCTION (vloxseg
, seg_indexed_loadstore
, full_preds
, tuple_v_scalar_const_ptr_eew64_index_ops
)
645 DEF_RVV_FUNCTION (vsuxseg
, seg_indexed_loadstore
, none_m_preds
, tuple_v_scalar_ptr_eew8_index_ops
)
646 DEF_RVV_FUNCTION (vsuxseg
, seg_indexed_loadstore
, none_m_preds
, tuple_v_scalar_ptr_eew16_index_ops
)
647 DEF_RVV_FUNCTION (vsuxseg
, seg_indexed_loadstore
, none_m_preds
, tuple_v_scalar_ptr_eew32_index_ops
)
648 DEF_RVV_FUNCTION (vsuxseg
, seg_indexed_loadstore
, none_m_preds
, tuple_v_scalar_ptr_eew64_index_ops
)
649 DEF_RVV_FUNCTION (vsoxseg
, seg_indexed_loadstore
, none_m_preds
, tuple_v_scalar_ptr_eew8_index_ops
)
650 DEF_RVV_FUNCTION (vsoxseg
, seg_indexed_loadstore
, none_m_preds
, tuple_v_scalar_ptr_eew16_index_ops
)
651 DEF_RVV_FUNCTION (vsoxseg
, seg_indexed_loadstore
, none_m_preds
, tuple_v_scalar_ptr_eew32_index_ops
)
652 DEF_RVV_FUNCTION (vsoxseg
, seg_indexed_loadstore
, none_m_preds
, tuple_v_scalar_ptr_eew64_index_ops
)
653 DEF_RVV_FUNCTION (vlsegff
, seg_fault_load
, full_preds
, tuple_v_scalar_const_ptr_size_ptr_ops
)
654 #undef REQUIRED_EXTENSIONS
656 /* Definition of crypto vector intrinsic functions
*/
658 #define REQUIRED_EXTENSIONS ZVBB_EXT
659 DEF_RVV_FUNCTION (vbrev
, alu
, full_preds
, u_vv_ops
)
660 DEF_RVV_FUNCTION (vclz
, alu
, none_m_preds
, u_vv_ops
)
661 DEF_RVV_FUNCTION (vctz
, alu
, none_m_preds
, u_vv_ops
)
662 DEF_RVV_FUNCTION (vwsll
, alu
, full_preds
, u_wvv_ops
)
663 DEF_RVV_FUNCTION (vwsll
, alu
, full_preds
, u_shift_wvx_ops
)
664 #undef REQUIRED_EXTENSIONS
666 #define REQUIRED_EXTENSIONS ZVBB_OR_ZVKB_EXT
667 DEF_RVV_FUNCTION (vandn
, alu
, full_preds
, u_vvv_ops
)
668 DEF_RVV_FUNCTION (vandn
, alu
, full_preds
, u_vvx_ops
)
669 DEF_RVV_FUNCTION (vbrev8
, alu
, full_preds
, u_vv_ops
)
670 DEF_RVV_FUNCTION (vrev8
, alu
, full_preds
, u_vv_ops
)
671 DEF_RVV_FUNCTION (vrol
, alu
, full_preds
, u_vvv_ops
)
672 DEF_RVV_FUNCTION (vror
, alu
, full_preds
, u_vvv_ops
)
673 DEF_RVV_FUNCTION (vror
, alu
, full_preds
, u_shift_vvx_ops
)
674 DEF_RVV_FUNCTION (vrol
, alu
, full_preds
, u_shift_vvx_ops
)
675 #undef REQUIRED_EXTENSIONS
677 #define REQUIRED_EXTENSIONS ZVBC_EXT
678 DEF_RVV_FUNCTION (vclmul
, alu
, full_preds
, u_vvv_crypto_sew64_ops
)
679 DEF_RVV_FUNCTION (vclmul
, alu
, full_preds
, u_vvx_crypto_sew64_ops
)
680 DEF_RVV_FUNCTION (vclmulh
, alu
, full_preds
, u_vvv_crypto_sew64_ops
)
681 DEF_RVV_FUNCTION (vclmulh
, alu
, full_preds
, u_vvx_crypto_sew64_ops
)
682 #undef REQUIRED_EXTENSIONS
684 #define REQUIRED_EXTENSIONS ZVKG_EXT
685 DEF_RVV_FUNCTION(vghsh
, no_mask_policy
, none_tu_preds
, u_vvvv_crypto_sew32_ops
)
686 DEF_RVV_FUNCTION(vgmul
, no_mask_policy
, none_tu_preds
, u_vvv_crypto_sew32_ops
)
687 #undef REQUIRED_EXTENSIONS
689 #define REQUIRED_EXTENSIONS ZVKNED_EXT
690 DEF_RVV_FUNCTION (vaesef
, crypto_vv
, none_tu_preds
, u_vvv_crypto_sew32_ops
)
691 DEF_RVV_FUNCTION (vaesef
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_ops
)
692 DEF_RVV_FUNCTION (vaesef
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x2_ops
)
693 DEF_RVV_FUNCTION (vaesef
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x4_ops
)
694 DEF_RVV_FUNCTION (vaesef
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x8_ops
)
695 DEF_RVV_FUNCTION (vaesef
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x16_ops
)
696 DEF_RVV_FUNCTION (vaesem
, crypto_vv
, none_tu_preds
, u_vvv_crypto_sew32_ops
)
697 DEF_RVV_FUNCTION (vaesem
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_ops
)
698 DEF_RVV_FUNCTION (vaesem
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x2_ops
)
699 DEF_RVV_FUNCTION (vaesem
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x4_ops
)
700 DEF_RVV_FUNCTION (vaesem
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x8_ops
)
701 DEF_RVV_FUNCTION (vaesem
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x16_ops
)
702 DEF_RVV_FUNCTION (vaesdf
, crypto_vv
, none_tu_preds
, u_vvv_crypto_sew32_ops
)
703 DEF_RVV_FUNCTION (vaesdf
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_ops
)
704 DEF_RVV_FUNCTION (vaesdf
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x2_ops
)
705 DEF_RVV_FUNCTION (vaesdf
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x4_ops
)
706 DEF_RVV_FUNCTION (vaesdf
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x8_ops
)
707 DEF_RVV_FUNCTION (vaesdf
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x16_ops
)
708 DEF_RVV_FUNCTION (vaesdm
, crypto_vv
, none_tu_preds
, u_vvv_crypto_sew32_ops
)
709 DEF_RVV_FUNCTION (vaesdm
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_ops
)
710 DEF_RVV_FUNCTION (vaesdm
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x2_ops
)
711 DEF_RVV_FUNCTION (vaesdm
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x4_ops
)
712 DEF_RVV_FUNCTION (vaesdm
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x8_ops
)
713 DEF_RVV_FUNCTION (vaesdm
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x16_ops
)
714 DEF_RVV_FUNCTION (vaesz
, crypto_vv_no_op_type
, none_tu_preds
, u_vvs_crypto_sew32_ops
)
715 DEF_RVV_FUNCTION (vaesz
, crypto_vv_no_op_type
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x2_ops
)
716 DEF_RVV_FUNCTION (vaesz
, crypto_vv_no_op_type
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x4_ops
)
717 DEF_RVV_FUNCTION (vaesz
, crypto_vv_no_op_type
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x8_ops
)
718 DEF_RVV_FUNCTION (vaesz
, crypto_vv_no_op_type
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x16_ops
)
719 DEF_RVV_FUNCTION (vaeskf1
, crypto_vi
, none_tu_preds
, u_vv_size_crypto_sew32_ops
)
720 DEF_RVV_FUNCTION (vaeskf2
, crypto_vi
, none_tu_preds
, u_vvv_size_crypto_sew32_ops
)
721 #undef REQUIRED_EXTENSIONS
724 #define REQUIRED_EXTENSIONS ZVKNHA_OR_ZVKNHB_EXT
725 DEF_RVV_FUNCTION (vsha2ms
, no_mask_policy
, none_tu_preds
, u_vvvv_crypto_sew32_ops
)
726 DEF_RVV_FUNCTION (vsha2ch
, no_mask_policy
, none_tu_preds
, u_vvvv_crypto_sew32_ops
)
727 DEF_RVV_FUNCTION (vsha2cl
, no_mask_policy
, none_tu_preds
, u_vvvv_crypto_sew32_ops
)
728 #undef REQUIRED_EXTENSIONS
730 #define REQUIRED_EXTENSIONS ZVKNHB_EXT
731 DEF_RVV_FUNCTION (vsha2ms
, no_mask_policy
, none_tu_preds
, u_vvvv_crypto_sew64_ops
)
732 DEF_RVV_FUNCTION (vsha2ch
, no_mask_policy
, none_tu_preds
, u_vvvv_crypto_sew64_ops
)
733 DEF_RVV_FUNCTION (vsha2cl
, no_mask_policy
, none_tu_preds
, u_vvvv_crypto_sew64_ops
)
734 #undef REQUIRED_EXTENSIONS
736 #define REQUIRED_EXTENSIONS ZVKSED_EXT
737 DEF_RVV_FUNCTION (vsm4k
, crypto_vi
, none_tu_preds
, u_vv_size_crypto_sew32_ops
)
738 DEF_RVV_FUNCTION (vsm4r
, crypto_vv
, none_tu_preds
, u_vvv_crypto_sew32_ops
)
739 DEF_RVV_FUNCTION (vsm4r
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_ops
)
740 DEF_RVV_FUNCTION (vsm4r
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x2_ops
)
741 DEF_RVV_FUNCTION (vsm4r
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x4_ops
)
742 DEF_RVV_FUNCTION (vsm4r
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x8_ops
)
743 DEF_RVV_FUNCTION (vsm4r
, crypto_vv
, none_tu_preds
, u_vvs_crypto_sew32_lmul_x16_ops
)
744 #undef REQUIRED_EXTENSIONS
746 #define REQUIRED_EXTENSIONS ZVKSH_EXT
747 DEF_RVV_FUNCTION (vsm3me
, no_mask_policy
, none_tu_preds
, u_vvv_crypto_sew32_ops
)
748 DEF_RVV_FUNCTION (vsm3c
, crypto_vi
, none_tu_preds
, u_vvv_size_crypto_sew32_ops
)
749 #undef REQUIRED_EXTENSIONS
752 #define REQUIRED_EXTENSIONS ZVFBFMIN_EXT
753 DEF_RVV_FUNCTION (vfncvtbf16_f
, narrow_alu
, full_preds
, f32_to_bf16_f_w_ops
)
754 DEF_RVV_FUNCTION (vfncvtbf16_f_frm
, narrow_alu_frm
, full_preds
, f32_to_bf16_f_w_ops
)
755 DEF_RVV_FUNCTION (vfwcvtbf16_f
, alu
, full_preds
, bf16_to_f32_f_v_ops
)
756 #undef REQUIRED_EXTENSIONS
759 #define REQUIRED_EXTENSIONS ZVFBFWMA_EXT
760 DEF_RVV_FUNCTION (vfwmaccbf16
, alu
, full_preds
, f32_wwvv_ops
)
761 DEF_RVV_FUNCTION (vfwmaccbf16
, alu
, full_preds
, f32_wwfv_ops
)
762 DEF_RVV_FUNCTION (vfwmaccbf16_frm
, alu_frm
, full_preds
, f32_wwvv_ops
)
763 DEF_RVV_FUNCTION (vfwmaccbf16_frm
, alu_frm
, full_preds
, f32_wwfv_ops
)
764 #undef REQUIRED_EXTENSIONS
765 #undef DEF_RVV_FUNCTION