1 //===----------------------------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // Automatically generated file, do not edit! 9 //===----------------------------------------------------------------------===// 10 11 12 #ifndef _HVX_HEXAGON_PROTOS_H_ 13 #define _HVX_HEXAGON_PROTOS_H_ 1 14 15 #ifdef __HVX__ 16 #if __HVX_LENGTH__ == 128 17 #define __BUILTIN_VECTOR_WRAP(a) a ## _128B 18 #else 19 #define __BUILTIN_VECTOR_WRAP(a) a 20 #endif 21 22 #if __HVX_ARCH__ >= 60 23 /* ========================================================================== 24 Assembly Syntax: Rd32=vextract(Vu32,Rs32) 25 C Intrinsic Prototype: Word32 Q6_R_vextract_VR(HVX_Vector Vu, Word32 Rs) 26 Instruction Type: LD 27 Execution Slots: SLOT0 28 ========================================================================== */ 29 30 #define Q6_R_vextract_VR(Vu,Rs) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_extractw)(Vu,Rs) 31 #endif /* __HEXAGON_ARCH___ >= 60 */ 32 33 #if __HVX_ARCH__ >= 60 34 /* ========================================================================== 35 Assembly Syntax: Vd32=hi(Vss32) 36 C Intrinsic Prototype: HVX_Vector Q6_V_hi_W(HVX_VectorPair Vss) 37 Instruction Type: CVI_VA 38 Execution Slots: SLOT0123 39 ========================================================================== */ 40 41 #define Q6_V_hi_W(Vss) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_hi)(Vss) 42 #endif /* __HEXAGON_ARCH___ >= 60 */ 43 44 #if __HVX_ARCH__ >= 60 45 /* ========================================================================== 46 Assembly Syntax: Vd32=lo(Vss32) 47 C Intrinsic Prototype: HVX_Vector Q6_V_lo_W(HVX_VectorPair Vss) 48 Instruction Type: CVI_VA 49 Execution Slots: SLOT0123 50 ========================================================================== */ 51 52 #define Q6_V_lo_W(Vss) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_lo)(Vss) 53 #endif /* __HEXAGON_ARCH___ >= 60 */ 54 55 #if __HVX_ARCH__ >= 60 56 /* ========================================================================== 57 Assembly Syntax: Vd32=vsplat(Rt32) 58 C Intrinsic Prototype: HVX_Vector Q6_V_vsplat_R(Word32 Rt) 59 Instruction Type: CVI_VX_LATE 60 Execution Slots: SLOT23 61 ========================================================================== */ 62 63 #define Q6_V_vsplat_R(Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_lvsplatw)(Rt) 64 #endif /* __HEXAGON_ARCH___ >= 60 */ 65 66 #if __HVX_ARCH__ >= 60 67 /* ========================================================================== 68 Assembly Syntax: Qd4=and(Qs4,Qt4) 69 C Intrinsic Prototype: HVX_VectorPred Q6_Q_and_QQ(HVX_VectorPred Qs, HVX_VectorPred Qt) 70 Instruction Type: CVI_VA_DV 71 Execution Slots: SLOT0123 72 ========================================================================== */ 73 74 #define Q6_Q_and_QQ(Qs,Qt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qt),-1))),-1) 75 #endif /* __HEXAGON_ARCH___ >= 60 */ 76 77 #if __HVX_ARCH__ >= 60 78 /* ========================================================================== 79 Assembly Syntax: Qd4=and(Qs4,!Qt4) 80 C Intrinsic Prototype: HVX_VectorPred Q6_Q_and_QQn(HVX_VectorPred Qs, HVX_VectorPred Qt) 81 Instruction Type: CVI_VA_DV 82 Execution Slots: SLOT0123 83 ========================================================================== */ 84 85 #define Q6_Q_and_QQn(Qs,Qt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_and_n)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qt),-1))),-1) 86 #endif /* __HEXAGON_ARCH___ >= 60 */ 87 88 #if __HVX_ARCH__ >= 60 89 /* ========================================================================== 90 Assembly Syntax: Qd4=not(Qs4) 91 C Intrinsic Prototype: HVX_VectorPred Q6_Q_not_Q(HVX_VectorPred Qs) 92 Instruction Type: CVI_VA 93 Execution Slots: SLOT0123 94 ========================================================================== */ 95 96 #define Q6_Q_not_Q(Qs) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_not)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1))),-1) 97 #endif /* __HEXAGON_ARCH___ >= 60 */ 98 99 #if __HVX_ARCH__ >= 60 100 /* ========================================================================== 101 Assembly Syntax: Qd4=or(Qs4,Qt4) 102 C Intrinsic Prototype: HVX_VectorPred Q6_Q_or_QQ(HVX_VectorPred Qs, HVX_VectorPred Qt) 103 Instruction Type: CVI_VA_DV 104 Execution Slots: SLOT0123 105 ========================================================================== */ 106 107 #define Q6_Q_or_QQ(Qs,Qt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qt),-1))),-1) 108 #endif /* __HEXAGON_ARCH___ >= 60 */ 109 110 #if __HVX_ARCH__ >= 60 111 /* ========================================================================== 112 Assembly Syntax: Qd4=or(Qs4,!Qt4) 113 C Intrinsic Prototype: HVX_VectorPred Q6_Q_or_QQn(HVX_VectorPred Qs, HVX_VectorPred Qt) 114 Instruction Type: CVI_VA_DV 115 Execution Slots: SLOT0123 116 ========================================================================== */ 117 118 #define Q6_Q_or_QQn(Qs,Qt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_or_n)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qt),-1))),-1) 119 #endif /* __HEXAGON_ARCH___ >= 60 */ 120 121 #if __HVX_ARCH__ >= 60 122 /* ========================================================================== 123 Assembly Syntax: Qd4=vsetq(Rt32) 124 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vsetq_R(Word32 Rt) 125 Instruction Type: CVI_VP 126 Execution Slots: SLOT0123 127 ========================================================================== */ 128 129 #define Q6_Q_vsetq_R(Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_scalar2)(Rt)),-1) 130 #endif /* __HEXAGON_ARCH___ >= 60 */ 131 132 #if __HVX_ARCH__ >= 60 133 /* ========================================================================== 134 Assembly Syntax: Qd4=xor(Qs4,Qt4) 135 C Intrinsic Prototype: HVX_VectorPred Q6_Q_xor_QQ(HVX_VectorPred Qs, HVX_VectorPred Qt) 136 Instruction Type: CVI_VA_DV 137 Execution Slots: SLOT0123 138 ========================================================================== */ 139 140 #define Q6_Q_xor_QQ(Qs,Qt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qt),-1))),-1) 141 #endif /* __HEXAGON_ARCH___ >= 60 */ 142 143 #if __HVX_ARCH__ >= 60 144 /* ========================================================================== 145 Assembly Syntax: if (!Qv4) vmem(Rt32+#s4)=Vs32 146 C Intrinsic Prototype: void Q6_vmem_QnRIV(HVX_VectorPred Qv, HVX_Vector* Rt, HVX_Vector Vs) 147 Instruction Type: CVI_VM_ST 148 Execution Slots: SLOT0 149 ========================================================================== */ 150 151 #define Q6_vmem_QnRIV(Qv,Rt,Vs) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vS32b_nqpred_ai)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Rt,Vs) 152 #endif /* __HEXAGON_ARCH___ >= 60 */ 153 154 #if __HVX_ARCH__ >= 60 155 /* ========================================================================== 156 Assembly Syntax: if (!Qv4) vmem(Rt32+#s4):nt=Vs32 157 C Intrinsic Prototype: void Q6_vmem_QnRIV_nt(HVX_VectorPred Qv, HVX_Vector* Rt, HVX_Vector Vs) 158 Instruction Type: CVI_VM_ST 159 Execution Slots: SLOT0 160 ========================================================================== */ 161 162 #define Q6_vmem_QnRIV_nt(Qv,Rt,Vs) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vS32b_nt_nqpred_ai)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Rt,Vs) 163 #endif /* __HEXAGON_ARCH___ >= 60 */ 164 165 #if __HVX_ARCH__ >= 60 166 /* ========================================================================== 167 Assembly Syntax: if (Qv4) vmem(Rt32+#s4):nt=Vs32 168 C Intrinsic Prototype: void Q6_vmem_QRIV_nt(HVX_VectorPred Qv, HVX_Vector* Rt, HVX_Vector Vs) 169 Instruction Type: CVI_VM_ST 170 Execution Slots: SLOT0 171 ========================================================================== */ 172 173 #define Q6_vmem_QRIV_nt(Qv,Rt,Vs) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vS32b_nt_qpred_ai)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Rt,Vs) 174 #endif /* __HEXAGON_ARCH___ >= 60 */ 175 176 #if __HVX_ARCH__ >= 60 177 /* ========================================================================== 178 Assembly Syntax: if (Qv4) vmem(Rt32+#s4)=Vs32 179 C Intrinsic Prototype: void Q6_vmem_QRIV(HVX_VectorPred Qv, HVX_Vector* Rt, HVX_Vector Vs) 180 Instruction Type: CVI_VM_ST 181 Execution Slots: SLOT0 182 ========================================================================== */ 183 184 #define Q6_vmem_QRIV(Qv,Rt,Vs) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vS32b_qpred_ai)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Rt,Vs) 185 #endif /* __HEXAGON_ARCH___ >= 60 */ 186 187 #if __HVX_ARCH__ >= 60 188 /* ========================================================================== 189 Assembly Syntax: Vd32.uh=vabsdiff(Vu32.h,Vv32.h) 190 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vabsdiff_VhVh(HVX_Vector Vu, HVX_Vector Vv) 191 Instruction Type: CVI_VX 192 Execution Slots: SLOT23 193 ========================================================================== */ 194 195 #define Q6_Vuh_vabsdiff_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsdiffh)(Vu,Vv) 196 #endif /* __HEXAGON_ARCH___ >= 60 */ 197 198 #if __HVX_ARCH__ >= 60 199 /* ========================================================================== 200 Assembly Syntax: Vd32.ub=vabsdiff(Vu32.ub,Vv32.ub) 201 C Intrinsic Prototype: HVX_Vector Q6_Vub_vabsdiff_VubVub(HVX_Vector Vu, HVX_Vector Vv) 202 Instruction Type: CVI_VX 203 Execution Slots: SLOT23 204 ========================================================================== */ 205 206 #define Q6_Vub_vabsdiff_VubVub(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsdiffub)(Vu,Vv) 207 #endif /* __HEXAGON_ARCH___ >= 60 */ 208 209 #if __HVX_ARCH__ >= 60 210 /* ========================================================================== 211 Assembly Syntax: Vd32.uh=vabsdiff(Vu32.uh,Vv32.uh) 212 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vabsdiff_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 213 Instruction Type: CVI_VX 214 Execution Slots: SLOT23 215 ========================================================================== */ 216 217 #define Q6_Vuh_vabsdiff_VuhVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsdiffuh)(Vu,Vv) 218 #endif /* __HEXAGON_ARCH___ >= 60 */ 219 220 #if __HVX_ARCH__ >= 60 221 /* ========================================================================== 222 Assembly Syntax: Vd32.uw=vabsdiff(Vu32.w,Vv32.w) 223 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vabsdiff_VwVw(HVX_Vector Vu, HVX_Vector Vv) 224 Instruction Type: CVI_VX 225 Execution Slots: SLOT23 226 ========================================================================== */ 227 228 #define Q6_Vuw_vabsdiff_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsdiffw)(Vu,Vv) 229 #endif /* __HEXAGON_ARCH___ >= 60 */ 230 231 #if __HVX_ARCH__ >= 60 232 /* ========================================================================== 233 Assembly Syntax: Vd32.h=vabs(Vu32.h) 234 C Intrinsic Prototype: HVX_Vector Q6_Vh_vabs_Vh(HVX_Vector Vu) 235 Instruction Type: CVI_VA 236 Execution Slots: SLOT0123 237 ========================================================================== */ 238 239 #define Q6_Vh_vabs_Vh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsh)(Vu) 240 #endif /* __HEXAGON_ARCH___ >= 60 */ 241 242 #if __HVX_ARCH__ >= 60 243 /* ========================================================================== 244 Assembly Syntax: Vd32.h=vabs(Vu32.h):sat 245 C Intrinsic Prototype: HVX_Vector Q6_Vh_vabs_Vh_sat(HVX_Vector Vu) 246 Instruction Type: CVI_VA 247 Execution Slots: SLOT0123 248 ========================================================================== */ 249 250 #define Q6_Vh_vabs_Vh_sat(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsh_sat)(Vu) 251 #endif /* __HEXAGON_ARCH___ >= 60 */ 252 253 #if __HVX_ARCH__ >= 60 254 /* ========================================================================== 255 Assembly Syntax: Vd32.w=vabs(Vu32.w) 256 C Intrinsic Prototype: HVX_Vector Q6_Vw_vabs_Vw(HVX_Vector Vu) 257 Instruction Type: CVI_VA 258 Execution Slots: SLOT0123 259 ========================================================================== */ 260 261 #define Q6_Vw_vabs_Vw(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsw)(Vu) 262 #endif /* __HEXAGON_ARCH___ >= 60 */ 263 264 #if __HVX_ARCH__ >= 60 265 /* ========================================================================== 266 Assembly Syntax: Vd32.w=vabs(Vu32.w):sat 267 C Intrinsic Prototype: HVX_Vector Q6_Vw_vabs_Vw_sat(HVX_Vector Vu) 268 Instruction Type: CVI_VA 269 Execution Slots: SLOT0123 270 ========================================================================== */ 271 272 #define Q6_Vw_vabs_Vw_sat(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsw_sat)(Vu) 273 #endif /* __HEXAGON_ARCH___ >= 60 */ 274 275 #if __HVX_ARCH__ >= 60 276 /* ========================================================================== 277 Assembly Syntax: Vd32.b=vadd(Vu32.b,Vv32.b) 278 C Intrinsic Prototype: HVX_Vector Q6_Vb_vadd_VbVb(HVX_Vector Vu, HVX_Vector Vv) 279 Instruction Type: CVI_VA 280 Execution Slots: SLOT0123 281 ========================================================================== */ 282 283 #define Q6_Vb_vadd_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddb)(Vu,Vv) 284 #endif /* __HEXAGON_ARCH___ >= 60 */ 285 286 #if __HVX_ARCH__ >= 60 287 /* ========================================================================== 288 Assembly Syntax: Vdd32.b=vadd(Vuu32.b,Vvv32.b) 289 C Intrinsic Prototype: HVX_VectorPair Q6_Wb_vadd_WbWb(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 290 Instruction Type: CVI_VA_DV 291 Execution Slots: SLOT0123 292 ========================================================================== */ 293 294 #define Q6_Wb_vadd_WbWb(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddb_dv)(Vuu,Vvv) 295 #endif /* __HEXAGON_ARCH___ >= 60 */ 296 297 #if __HVX_ARCH__ >= 60 298 /* ========================================================================== 299 Assembly Syntax: if (!Qv4) Vx32.b+=Vu32.b 300 C Intrinsic Prototype: HVX_Vector Q6_Vb_condacc_QnVbVb(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 301 Instruction Type: CVI_VA 302 Execution Slots: SLOT0123 303 ========================================================================== */ 304 305 #define Q6_Vb_condacc_QnVbVb(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddbnq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 306 #endif /* __HEXAGON_ARCH___ >= 60 */ 307 308 #if __HVX_ARCH__ >= 60 309 /* ========================================================================== 310 Assembly Syntax: if (Qv4) Vx32.b+=Vu32.b 311 C Intrinsic Prototype: HVX_Vector Q6_Vb_condacc_QVbVb(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 312 Instruction Type: CVI_VA 313 Execution Slots: SLOT0123 314 ========================================================================== */ 315 316 #define Q6_Vb_condacc_QVbVb(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddbq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 317 #endif /* __HEXAGON_ARCH___ >= 60 */ 318 319 #if __HVX_ARCH__ >= 60 320 /* ========================================================================== 321 Assembly Syntax: Vd32.h=vadd(Vu32.h,Vv32.h) 322 C Intrinsic Prototype: HVX_Vector Q6_Vh_vadd_VhVh(HVX_Vector Vu, HVX_Vector Vv) 323 Instruction Type: CVI_VA 324 Execution Slots: SLOT0123 325 ========================================================================== */ 326 327 #define Q6_Vh_vadd_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddh)(Vu,Vv) 328 #endif /* __HEXAGON_ARCH___ >= 60 */ 329 330 #if __HVX_ARCH__ >= 60 331 /* ========================================================================== 332 Assembly Syntax: Vdd32.h=vadd(Vuu32.h,Vvv32.h) 333 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vadd_WhWh(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 334 Instruction Type: CVI_VA_DV 335 Execution Slots: SLOT0123 336 ========================================================================== */ 337 338 #define Q6_Wh_vadd_WhWh(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddh_dv)(Vuu,Vvv) 339 #endif /* __HEXAGON_ARCH___ >= 60 */ 340 341 #if __HVX_ARCH__ >= 60 342 /* ========================================================================== 343 Assembly Syntax: if (!Qv4) Vx32.h+=Vu32.h 344 C Intrinsic Prototype: HVX_Vector Q6_Vh_condacc_QnVhVh(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 345 Instruction Type: CVI_VA 346 Execution Slots: SLOT0123 347 ========================================================================== */ 348 349 #define Q6_Vh_condacc_QnVhVh(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhnq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 350 #endif /* __HEXAGON_ARCH___ >= 60 */ 351 352 #if __HVX_ARCH__ >= 60 353 /* ========================================================================== 354 Assembly Syntax: if (Qv4) Vx32.h+=Vu32.h 355 C Intrinsic Prototype: HVX_Vector Q6_Vh_condacc_QVhVh(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 356 Instruction Type: CVI_VA 357 Execution Slots: SLOT0123 358 ========================================================================== */ 359 360 #define Q6_Vh_condacc_QVhVh(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 361 #endif /* __HEXAGON_ARCH___ >= 60 */ 362 363 #if __HVX_ARCH__ >= 60 364 /* ========================================================================== 365 Assembly Syntax: Vd32.h=vadd(Vu32.h,Vv32.h):sat 366 C Intrinsic Prototype: HVX_Vector Q6_Vh_vadd_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 367 Instruction Type: CVI_VA 368 Execution Slots: SLOT0123 369 ========================================================================== */ 370 371 #define Q6_Vh_vadd_VhVh_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhsat)(Vu,Vv) 372 #endif /* __HEXAGON_ARCH___ >= 60 */ 373 374 #if __HVX_ARCH__ >= 60 375 /* ========================================================================== 376 Assembly Syntax: Vdd32.h=vadd(Vuu32.h,Vvv32.h):sat 377 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vadd_WhWh_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 378 Instruction Type: CVI_VA_DV 379 Execution Slots: SLOT0123 380 ========================================================================== */ 381 382 #define Q6_Wh_vadd_WhWh_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhsat_dv)(Vuu,Vvv) 383 #endif /* __HEXAGON_ARCH___ >= 60 */ 384 385 #if __HVX_ARCH__ >= 60 386 /* ========================================================================== 387 Assembly Syntax: Vdd32.w=vadd(Vu32.h,Vv32.h) 388 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vadd_VhVh(HVX_Vector Vu, HVX_Vector Vv) 389 Instruction Type: CVI_VX_DV 390 Execution Slots: SLOT23 391 ========================================================================== */ 392 393 #define Q6_Ww_vadd_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhw)(Vu,Vv) 394 #endif /* __HEXAGON_ARCH___ >= 60 */ 395 396 #if __HVX_ARCH__ >= 60 397 /* ========================================================================== 398 Assembly Syntax: Vdd32.h=vadd(Vu32.ub,Vv32.ub) 399 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vadd_VubVub(HVX_Vector Vu, HVX_Vector Vv) 400 Instruction Type: CVI_VX_DV 401 Execution Slots: SLOT23 402 ========================================================================== */ 403 404 #define Q6_Wh_vadd_VubVub(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddubh)(Vu,Vv) 405 #endif /* __HEXAGON_ARCH___ >= 60 */ 406 407 #if __HVX_ARCH__ >= 60 408 /* ========================================================================== 409 Assembly Syntax: Vd32.ub=vadd(Vu32.ub,Vv32.ub):sat 410 C Intrinsic Prototype: HVX_Vector Q6_Vub_vadd_VubVub_sat(HVX_Vector Vu, HVX_Vector Vv) 411 Instruction Type: CVI_VA 412 Execution Slots: SLOT0123 413 ========================================================================== */ 414 415 #define Q6_Vub_vadd_VubVub_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddubsat)(Vu,Vv) 416 #endif /* __HEXAGON_ARCH___ >= 60 */ 417 418 #if __HVX_ARCH__ >= 60 419 /* ========================================================================== 420 Assembly Syntax: Vdd32.ub=vadd(Vuu32.ub,Vvv32.ub):sat 421 C Intrinsic Prototype: HVX_VectorPair Q6_Wub_vadd_WubWub_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 422 Instruction Type: CVI_VA_DV 423 Execution Slots: SLOT0123 424 ========================================================================== */ 425 426 #define Q6_Wub_vadd_WubWub_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddubsat_dv)(Vuu,Vvv) 427 #endif /* __HEXAGON_ARCH___ >= 60 */ 428 429 #if __HVX_ARCH__ >= 60 430 /* ========================================================================== 431 Assembly Syntax: Vd32.uh=vadd(Vu32.uh,Vv32.uh):sat 432 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vadd_VuhVuh_sat(HVX_Vector Vu, HVX_Vector Vv) 433 Instruction Type: CVI_VA 434 Execution Slots: SLOT0123 435 ========================================================================== */ 436 437 #define Q6_Vuh_vadd_VuhVuh_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduhsat)(Vu,Vv) 438 #endif /* __HEXAGON_ARCH___ >= 60 */ 439 440 #if __HVX_ARCH__ >= 60 441 /* ========================================================================== 442 Assembly Syntax: Vdd32.uh=vadd(Vuu32.uh,Vvv32.uh):sat 443 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vadd_WuhWuh_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 444 Instruction Type: CVI_VA_DV 445 Execution Slots: SLOT0123 446 ========================================================================== */ 447 448 #define Q6_Wuh_vadd_WuhWuh_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduhsat_dv)(Vuu,Vvv) 449 #endif /* __HEXAGON_ARCH___ >= 60 */ 450 451 #if __HVX_ARCH__ >= 60 452 /* ========================================================================== 453 Assembly Syntax: Vdd32.w=vadd(Vu32.uh,Vv32.uh) 454 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vadd_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 455 Instruction Type: CVI_VX_DV 456 Execution Slots: SLOT23 457 ========================================================================== */ 458 459 #define Q6_Ww_vadd_VuhVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduhw)(Vu,Vv) 460 #endif /* __HEXAGON_ARCH___ >= 60 */ 461 462 #if __HVX_ARCH__ >= 60 463 /* ========================================================================== 464 Assembly Syntax: Vd32.w=vadd(Vu32.w,Vv32.w) 465 C Intrinsic Prototype: HVX_Vector Q6_Vw_vadd_VwVw(HVX_Vector Vu, HVX_Vector Vv) 466 Instruction Type: CVI_VA 467 Execution Slots: SLOT0123 468 ========================================================================== */ 469 470 #define Q6_Vw_vadd_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddw)(Vu,Vv) 471 #endif /* __HEXAGON_ARCH___ >= 60 */ 472 473 #if __HVX_ARCH__ >= 60 474 /* ========================================================================== 475 Assembly Syntax: Vdd32.w=vadd(Vuu32.w,Vvv32.w) 476 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vadd_WwWw(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 477 Instruction Type: CVI_VA_DV 478 Execution Slots: SLOT0123 479 ========================================================================== */ 480 481 #define Q6_Ww_vadd_WwWw(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddw_dv)(Vuu,Vvv) 482 #endif /* __HEXAGON_ARCH___ >= 60 */ 483 484 #if __HVX_ARCH__ >= 60 485 /* ========================================================================== 486 Assembly Syntax: if (!Qv4) Vx32.w+=Vu32.w 487 C Intrinsic Prototype: HVX_Vector Q6_Vw_condacc_QnVwVw(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 488 Instruction Type: CVI_VA 489 Execution Slots: SLOT0123 490 ========================================================================== */ 491 492 #define Q6_Vw_condacc_QnVwVw(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddwnq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 493 #endif /* __HEXAGON_ARCH___ >= 60 */ 494 495 #if __HVX_ARCH__ >= 60 496 /* ========================================================================== 497 Assembly Syntax: if (Qv4) Vx32.w+=Vu32.w 498 C Intrinsic Prototype: HVX_Vector Q6_Vw_condacc_QVwVw(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 499 Instruction Type: CVI_VA 500 Execution Slots: SLOT0123 501 ========================================================================== */ 502 503 #define Q6_Vw_condacc_QVwVw(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddwq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 504 #endif /* __HEXAGON_ARCH___ >= 60 */ 505 506 #if __HVX_ARCH__ >= 60 507 /* ========================================================================== 508 Assembly Syntax: Vd32.w=vadd(Vu32.w,Vv32.w):sat 509 C Intrinsic Prototype: HVX_Vector Q6_Vw_vadd_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 510 Instruction Type: CVI_VA 511 Execution Slots: SLOT0123 512 ========================================================================== */ 513 514 #define Q6_Vw_vadd_VwVw_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddwsat)(Vu,Vv) 515 #endif /* __HEXAGON_ARCH___ >= 60 */ 516 517 #if __HVX_ARCH__ >= 60 518 /* ========================================================================== 519 Assembly Syntax: Vdd32.w=vadd(Vuu32.w,Vvv32.w):sat 520 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vadd_WwWw_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 521 Instruction Type: CVI_VA_DV 522 Execution Slots: SLOT0123 523 ========================================================================== */ 524 525 #define Q6_Ww_vadd_WwWw_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddwsat_dv)(Vuu,Vvv) 526 #endif /* __HEXAGON_ARCH___ >= 60 */ 527 528 #if __HVX_ARCH__ >= 60 529 /* ========================================================================== 530 Assembly Syntax: Vd32=valign(Vu32,Vv32,Rt8) 531 C Intrinsic Prototype: HVX_Vector Q6_V_valign_VVR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 532 Instruction Type: CVI_VP 533 Execution Slots: SLOT0123 534 ========================================================================== */ 535 536 #define Q6_V_valign_VVR(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_valignb)(Vu,Vv,Rt) 537 #endif /* __HEXAGON_ARCH___ >= 60 */ 538 539 #if __HVX_ARCH__ >= 60 540 /* ========================================================================== 541 Assembly Syntax: Vd32=valign(Vu32,Vv32,#u3) 542 C Intrinsic Prototype: HVX_Vector Q6_V_valign_VVI(HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 543 Instruction Type: CVI_VP 544 Execution Slots: SLOT0123 545 ========================================================================== */ 546 547 #define Q6_V_valign_VVI(Vu,Vv,Iu3) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_valignbi)(Vu,Vv,Iu3) 548 #endif /* __HEXAGON_ARCH___ >= 60 */ 549 550 #if __HVX_ARCH__ >= 60 551 /* ========================================================================== 552 Assembly Syntax: Vd32=vand(Vu32,Vv32) 553 C Intrinsic Prototype: HVX_Vector Q6_V_vand_VV(HVX_Vector Vu, HVX_Vector Vv) 554 Instruction Type: CVI_VA 555 Execution Slots: SLOT0123 556 ========================================================================== */ 557 558 #define Q6_V_vand_VV(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vand)(Vu,Vv) 559 #endif /* __HEXAGON_ARCH___ >= 60 */ 560 561 #if __HVX_ARCH__ >= 60 562 /* ========================================================================== 563 Assembly Syntax: Vd32=vand(Qu4,Rt32) 564 C Intrinsic Prototype: HVX_Vector Q6_V_vand_QR(HVX_VectorPred Qu, Word32 Rt) 565 Instruction Type: CVI_VX_LATE 566 Execution Slots: SLOT23 567 ========================================================================== */ 568 569 #define Q6_V_vand_QR(Qu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qu),-1),Rt) 570 #endif /* __HEXAGON_ARCH___ >= 60 */ 571 572 #if __HVX_ARCH__ >= 60 573 /* ========================================================================== 574 Assembly Syntax: Vx32|=vand(Qu4,Rt32) 575 C Intrinsic Prototype: HVX_Vector Q6_V_vandor_VQR(HVX_Vector Vx, HVX_VectorPred Qu, Word32 Rt) 576 Instruction Type: CVI_VX_LATE 577 Execution Slots: SLOT23 578 ========================================================================== */ 579 580 #define Q6_V_vandor_VQR(Vx,Qu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt_acc)(Vx,__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qu),-1),Rt) 581 #endif /* __HEXAGON_ARCH___ >= 60 */ 582 583 #if __HVX_ARCH__ >= 60 584 /* ========================================================================== 585 Assembly Syntax: Qd4=vand(Vu32,Rt32) 586 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vand_VR(HVX_Vector Vu, Word32 Rt) 587 Instruction Type: CVI_VX_LATE 588 Execution Slots: SLOT23 589 ========================================================================== */ 590 591 #define Q6_Q_vand_VR(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)(Vu,Rt)),-1) 592 #endif /* __HEXAGON_ARCH___ >= 60 */ 593 594 #if __HVX_ARCH__ >= 60 595 /* ========================================================================== 596 Assembly Syntax: Qx4|=vand(Vu32,Rt32) 597 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vandor_QVR(HVX_VectorPred Qx, HVX_Vector Vu, Word32 Rt) 598 Instruction Type: CVI_VX_LATE 599 Execution Slots: SLOT23 600 ========================================================================== */ 601 602 #define Q6_Q_vandor_QVR(Qx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt_acc)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Rt)),-1) 603 #endif /* __HEXAGON_ARCH___ >= 60 */ 604 605 #if __HVX_ARCH__ >= 60 606 /* ========================================================================== 607 Assembly Syntax: Vd32.h=vasl(Vu32.h,Rt32) 608 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasl_VhR(HVX_Vector Vu, Word32 Rt) 609 Instruction Type: CVI_VS 610 Execution Slots: SLOT0123 611 ========================================================================== */ 612 613 #define Q6_Vh_vasl_VhR(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslh)(Vu,Rt) 614 #endif /* __HEXAGON_ARCH___ >= 60 */ 615 616 #if __HVX_ARCH__ >= 60 617 /* ========================================================================== 618 Assembly Syntax: Vd32.h=vasl(Vu32.h,Vv32.h) 619 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasl_VhVh(HVX_Vector Vu, HVX_Vector Vv) 620 Instruction Type: CVI_VS 621 Execution Slots: SLOT0123 622 ========================================================================== */ 623 624 #define Q6_Vh_vasl_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslhv)(Vu,Vv) 625 #endif /* __HEXAGON_ARCH___ >= 60 */ 626 627 #if __HVX_ARCH__ >= 60 628 /* ========================================================================== 629 Assembly Syntax: Vd32.w=vasl(Vu32.w,Rt32) 630 C Intrinsic Prototype: HVX_Vector Q6_Vw_vasl_VwR(HVX_Vector Vu, Word32 Rt) 631 Instruction Type: CVI_VS 632 Execution Slots: SLOT0123 633 ========================================================================== */ 634 635 #define Q6_Vw_vasl_VwR(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslw)(Vu,Rt) 636 #endif /* __HEXAGON_ARCH___ >= 60 */ 637 638 #if __HVX_ARCH__ >= 60 639 /* ========================================================================== 640 Assembly Syntax: Vx32.w+=vasl(Vu32.w,Rt32) 641 C Intrinsic Prototype: HVX_Vector Q6_Vw_vaslacc_VwVwR(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 642 Instruction Type: CVI_VS 643 Execution Slots: SLOT0123 644 ========================================================================== */ 645 646 #define Q6_Vw_vaslacc_VwVwR(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslw_acc)(Vx,Vu,Rt) 647 #endif /* __HEXAGON_ARCH___ >= 60 */ 648 649 #if __HVX_ARCH__ >= 60 650 /* ========================================================================== 651 Assembly Syntax: Vd32.w=vasl(Vu32.w,Vv32.w) 652 C Intrinsic Prototype: HVX_Vector Q6_Vw_vasl_VwVw(HVX_Vector Vu, HVX_Vector Vv) 653 Instruction Type: CVI_VS 654 Execution Slots: SLOT0123 655 ========================================================================== */ 656 657 #define Q6_Vw_vasl_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslwv)(Vu,Vv) 658 #endif /* __HEXAGON_ARCH___ >= 60 */ 659 660 #if __HVX_ARCH__ >= 60 661 /* ========================================================================== 662 Assembly Syntax: Vd32.h=vasr(Vu32.h,Rt32) 663 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasr_VhR(HVX_Vector Vu, Word32 Rt) 664 Instruction Type: CVI_VS 665 Execution Slots: SLOT0123 666 ========================================================================== */ 667 668 #define Q6_Vh_vasr_VhR(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrh)(Vu,Rt) 669 #endif /* __HEXAGON_ARCH___ >= 60 */ 670 671 #if __HVX_ARCH__ >= 60 672 /* ========================================================================== 673 Assembly Syntax: Vd32.b=vasr(Vu32.h,Vv32.h,Rt8):rnd:sat 674 C Intrinsic Prototype: HVX_Vector Q6_Vb_vasr_VhVhR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 675 Instruction Type: CVI_VS 676 Execution Slots: SLOT0123 677 ========================================================================== */ 678 679 #define Q6_Vb_vasr_VhVhR_rnd_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrhbrndsat)(Vu,Vv,Rt) 680 #endif /* __HEXAGON_ARCH___ >= 60 */ 681 682 #if __HVX_ARCH__ >= 60 683 /* ========================================================================== 684 Assembly Syntax: Vd32.ub=vasr(Vu32.h,Vv32.h,Rt8):rnd:sat 685 C Intrinsic Prototype: HVX_Vector Q6_Vub_vasr_VhVhR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 686 Instruction Type: CVI_VS 687 Execution Slots: SLOT0123 688 ========================================================================== */ 689 690 #define Q6_Vub_vasr_VhVhR_rnd_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrhubrndsat)(Vu,Vv,Rt) 691 #endif /* __HEXAGON_ARCH___ >= 60 */ 692 693 #if __HVX_ARCH__ >= 60 694 /* ========================================================================== 695 Assembly Syntax: Vd32.ub=vasr(Vu32.h,Vv32.h,Rt8):sat 696 C Intrinsic Prototype: HVX_Vector Q6_Vub_vasr_VhVhR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 697 Instruction Type: CVI_VS 698 Execution Slots: SLOT0123 699 ========================================================================== */ 700 701 #define Q6_Vub_vasr_VhVhR_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrhubsat)(Vu,Vv,Rt) 702 #endif /* __HEXAGON_ARCH___ >= 60 */ 703 704 #if __HVX_ARCH__ >= 60 705 /* ========================================================================== 706 Assembly Syntax: Vd32.h=vasr(Vu32.h,Vv32.h) 707 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasr_VhVh(HVX_Vector Vu, HVX_Vector Vv) 708 Instruction Type: CVI_VS 709 Execution Slots: SLOT0123 710 ========================================================================== */ 711 712 #define Q6_Vh_vasr_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrhv)(Vu,Vv) 713 #endif /* __HEXAGON_ARCH___ >= 60 */ 714 715 #if __HVX_ARCH__ >= 60 716 /* ========================================================================== 717 Assembly Syntax: Vd32.w=vasr(Vu32.w,Rt32) 718 C Intrinsic Prototype: HVX_Vector Q6_Vw_vasr_VwR(HVX_Vector Vu, Word32 Rt) 719 Instruction Type: CVI_VS 720 Execution Slots: SLOT0123 721 ========================================================================== */ 722 723 #define Q6_Vw_vasr_VwR(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrw)(Vu,Rt) 724 #endif /* __HEXAGON_ARCH___ >= 60 */ 725 726 #if __HVX_ARCH__ >= 60 727 /* ========================================================================== 728 Assembly Syntax: Vx32.w+=vasr(Vu32.w,Rt32) 729 C Intrinsic Prototype: HVX_Vector Q6_Vw_vasracc_VwVwR(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 730 Instruction Type: CVI_VS 731 Execution Slots: SLOT0123 732 ========================================================================== */ 733 734 #define Q6_Vw_vasracc_VwVwR(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrw_acc)(Vx,Vu,Rt) 735 #endif /* __HEXAGON_ARCH___ >= 60 */ 736 737 #if __HVX_ARCH__ >= 60 738 /* ========================================================================== 739 Assembly Syntax: Vd32.h=vasr(Vu32.w,Vv32.w,Rt8) 740 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasr_VwVwR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 741 Instruction Type: CVI_VS 742 Execution Slots: SLOT0123 743 ========================================================================== */ 744 745 #define Q6_Vh_vasr_VwVwR(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwh)(Vu,Vv,Rt) 746 #endif /* __HEXAGON_ARCH___ >= 60 */ 747 748 #if __HVX_ARCH__ >= 60 749 /* ========================================================================== 750 Assembly Syntax: Vd32.h=vasr(Vu32.w,Vv32.w,Rt8):rnd:sat 751 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasr_VwVwR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 752 Instruction Type: CVI_VS 753 Execution Slots: SLOT0123 754 ========================================================================== */ 755 756 #define Q6_Vh_vasr_VwVwR_rnd_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwhrndsat)(Vu,Vv,Rt) 757 #endif /* __HEXAGON_ARCH___ >= 60 */ 758 759 #if __HVX_ARCH__ >= 60 760 /* ========================================================================== 761 Assembly Syntax: Vd32.h=vasr(Vu32.w,Vv32.w,Rt8):sat 762 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasr_VwVwR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 763 Instruction Type: CVI_VS 764 Execution Slots: SLOT0123 765 ========================================================================== */ 766 767 #define Q6_Vh_vasr_VwVwR_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwhsat)(Vu,Vv,Rt) 768 #endif /* __HEXAGON_ARCH___ >= 60 */ 769 770 #if __HVX_ARCH__ >= 60 771 /* ========================================================================== 772 Assembly Syntax: Vd32.uh=vasr(Vu32.w,Vv32.w,Rt8):sat 773 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vasr_VwVwR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 774 Instruction Type: CVI_VS 775 Execution Slots: SLOT0123 776 ========================================================================== */ 777 778 #define Q6_Vuh_vasr_VwVwR_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwuhsat)(Vu,Vv,Rt) 779 #endif /* __HEXAGON_ARCH___ >= 60 */ 780 781 #if __HVX_ARCH__ >= 60 782 /* ========================================================================== 783 Assembly Syntax: Vd32.w=vasr(Vu32.w,Vv32.w) 784 C Intrinsic Prototype: HVX_Vector Q6_Vw_vasr_VwVw(HVX_Vector Vu, HVX_Vector Vv) 785 Instruction Type: CVI_VS 786 Execution Slots: SLOT0123 787 ========================================================================== */ 788 789 #define Q6_Vw_vasr_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwv)(Vu,Vv) 790 #endif /* __HEXAGON_ARCH___ >= 60 */ 791 792 #if __HVX_ARCH__ >= 60 793 /* ========================================================================== 794 Assembly Syntax: Vd32=Vu32 795 C Intrinsic Prototype: HVX_Vector Q6_V_equals_V(HVX_Vector Vu) 796 Instruction Type: CVI_VA 797 Execution Slots: SLOT0123 798 ========================================================================== */ 799 800 #define Q6_V_equals_V(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vassign)(Vu) 801 #endif /* __HEXAGON_ARCH___ >= 60 */ 802 803 #if __HVX_ARCH__ >= 60 804 /* ========================================================================== 805 Assembly Syntax: Vdd32=Vuu32 806 C Intrinsic Prototype: HVX_VectorPair Q6_W_equals_W(HVX_VectorPair Vuu) 807 Instruction Type: CVI_VA_DV 808 Execution Slots: SLOT0123 809 ========================================================================== */ 810 811 #define Q6_W_equals_W(Vuu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vassignp)(Vuu) 812 #endif /* __HEXAGON_ARCH___ >= 60 */ 813 814 #if __HVX_ARCH__ >= 60 815 /* ========================================================================== 816 Assembly Syntax: Vd32.h=vavg(Vu32.h,Vv32.h) 817 C Intrinsic Prototype: HVX_Vector Q6_Vh_vavg_VhVh(HVX_Vector Vu, HVX_Vector Vv) 818 Instruction Type: CVI_VA 819 Execution Slots: SLOT0123 820 ========================================================================== */ 821 822 #define Q6_Vh_vavg_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgh)(Vu,Vv) 823 #endif /* __HEXAGON_ARCH___ >= 60 */ 824 825 #if __HVX_ARCH__ >= 60 826 /* ========================================================================== 827 Assembly Syntax: Vd32.h=vavg(Vu32.h,Vv32.h):rnd 828 C Intrinsic Prototype: HVX_Vector Q6_Vh_vavg_VhVh_rnd(HVX_Vector Vu, HVX_Vector Vv) 829 Instruction Type: CVI_VA 830 Execution Slots: SLOT0123 831 ========================================================================== */ 832 833 #define Q6_Vh_vavg_VhVh_rnd(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavghrnd)(Vu,Vv) 834 #endif /* __HEXAGON_ARCH___ >= 60 */ 835 836 #if __HVX_ARCH__ >= 60 837 /* ========================================================================== 838 Assembly Syntax: Vd32.ub=vavg(Vu32.ub,Vv32.ub) 839 C Intrinsic Prototype: HVX_Vector Q6_Vub_vavg_VubVub(HVX_Vector Vu, HVX_Vector Vv) 840 Instruction Type: CVI_VA 841 Execution Slots: SLOT0123 842 ========================================================================== */ 843 844 #define Q6_Vub_vavg_VubVub(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgub)(Vu,Vv) 845 #endif /* __HEXAGON_ARCH___ >= 60 */ 846 847 #if __HVX_ARCH__ >= 60 848 /* ========================================================================== 849 Assembly Syntax: Vd32.ub=vavg(Vu32.ub,Vv32.ub):rnd 850 C Intrinsic Prototype: HVX_Vector Q6_Vub_vavg_VubVub_rnd(HVX_Vector Vu, HVX_Vector Vv) 851 Instruction Type: CVI_VA 852 Execution Slots: SLOT0123 853 ========================================================================== */ 854 855 #define Q6_Vub_vavg_VubVub_rnd(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgubrnd)(Vu,Vv) 856 #endif /* __HEXAGON_ARCH___ >= 60 */ 857 858 #if __HVX_ARCH__ >= 60 859 /* ========================================================================== 860 Assembly Syntax: Vd32.uh=vavg(Vu32.uh,Vv32.uh) 861 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vavg_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 862 Instruction Type: CVI_VA 863 Execution Slots: SLOT0123 864 ========================================================================== */ 865 866 #define Q6_Vuh_vavg_VuhVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavguh)(Vu,Vv) 867 #endif /* __HEXAGON_ARCH___ >= 60 */ 868 869 #if __HVX_ARCH__ >= 60 870 /* ========================================================================== 871 Assembly Syntax: Vd32.uh=vavg(Vu32.uh,Vv32.uh):rnd 872 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vavg_VuhVuh_rnd(HVX_Vector Vu, HVX_Vector Vv) 873 Instruction Type: CVI_VA 874 Execution Slots: SLOT0123 875 ========================================================================== */ 876 877 #define Q6_Vuh_vavg_VuhVuh_rnd(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavguhrnd)(Vu,Vv) 878 #endif /* __HEXAGON_ARCH___ >= 60 */ 879 880 #if __HVX_ARCH__ >= 60 881 /* ========================================================================== 882 Assembly Syntax: Vd32.w=vavg(Vu32.w,Vv32.w) 883 C Intrinsic Prototype: HVX_Vector Q6_Vw_vavg_VwVw(HVX_Vector Vu, HVX_Vector Vv) 884 Instruction Type: CVI_VA 885 Execution Slots: SLOT0123 886 ========================================================================== */ 887 888 #define Q6_Vw_vavg_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgw)(Vu,Vv) 889 #endif /* __HEXAGON_ARCH___ >= 60 */ 890 891 #if __HVX_ARCH__ >= 60 892 /* ========================================================================== 893 Assembly Syntax: Vd32.w=vavg(Vu32.w,Vv32.w):rnd 894 C Intrinsic Prototype: HVX_Vector Q6_Vw_vavg_VwVw_rnd(HVX_Vector Vu, HVX_Vector Vv) 895 Instruction Type: CVI_VA 896 Execution Slots: SLOT0123 897 ========================================================================== */ 898 899 #define Q6_Vw_vavg_VwVw_rnd(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgwrnd)(Vu,Vv) 900 #endif /* __HEXAGON_ARCH___ >= 60 */ 901 902 #if __HVX_ARCH__ >= 60 903 /* ========================================================================== 904 Assembly Syntax: Vd32.uh=vcl0(Vu32.uh) 905 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vcl0_Vuh(HVX_Vector Vu) 906 Instruction Type: CVI_VS 907 Execution Slots: SLOT0123 908 ========================================================================== */ 909 910 #define Q6_Vuh_vcl0_Vuh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcl0h)(Vu) 911 #endif /* __HEXAGON_ARCH___ >= 60 */ 912 913 #if __HVX_ARCH__ >= 60 914 /* ========================================================================== 915 Assembly Syntax: Vd32.uw=vcl0(Vu32.uw) 916 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vcl0_Vuw(HVX_Vector Vu) 917 Instruction Type: CVI_VS 918 Execution Slots: SLOT0123 919 ========================================================================== */ 920 921 #define Q6_Vuw_vcl0_Vuw(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcl0w)(Vu) 922 #endif /* __HEXAGON_ARCH___ >= 60 */ 923 924 #if __HVX_ARCH__ >= 60 925 /* ========================================================================== 926 Assembly Syntax: Vdd32=vcombine(Vu32,Vv32) 927 C Intrinsic Prototype: HVX_VectorPair Q6_W_vcombine_VV(HVX_Vector Vu, HVX_Vector Vv) 928 Instruction Type: CVI_VA_DV 929 Execution Slots: SLOT0123 930 ========================================================================== */ 931 932 #define Q6_W_vcombine_VV(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcombine)(Vu,Vv) 933 #endif /* __HEXAGON_ARCH___ >= 60 */ 934 935 #if __HVX_ARCH__ >= 60 936 /* ========================================================================== 937 Assembly Syntax: Vd32=#0 938 C Intrinsic Prototype: HVX_Vector Q6_V_vzero() 939 Instruction Type: CVI_VA 940 Execution Slots: SLOT0123 941 ========================================================================== */ 942 943 #define Q6_V_vzero() __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vd0)() 944 #endif /* __HEXAGON_ARCH___ >= 60 */ 945 946 #if __HVX_ARCH__ >= 60 947 /* ========================================================================== 948 Assembly Syntax: Vd32.b=vdeal(Vu32.b) 949 C Intrinsic Prototype: HVX_Vector Q6_Vb_vdeal_Vb(HVX_Vector Vu) 950 Instruction Type: CVI_VP 951 Execution Slots: SLOT0123 952 ========================================================================== */ 953 954 #define Q6_Vb_vdeal_Vb(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdealb)(Vu) 955 #endif /* __HEXAGON_ARCH___ >= 60 */ 956 957 #if __HVX_ARCH__ >= 60 958 /* ========================================================================== 959 Assembly Syntax: Vd32.b=vdeale(Vu32.b,Vv32.b) 960 C Intrinsic Prototype: HVX_Vector Q6_Vb_vdeale_VbVb(HVX_Vector Vu, HVX_Vector Vv) 961 Instruction Type: CVI_VP 962 Execution Slots: SLOT0123 963 ========================================================================== */ 964 965 #define Q6_Vb_vdeale_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdealb4w)(Vu,Vv) 966 #endif /* __HEXAGON_ARCH___ >= 60 */ 967 968 #if __HVX_ARCH__ >= 60 969 /* ========================================================================== 970 Assembly Syntax: Vd32.h=vdeal(Vu32.h) 971 C Intrinsic Prototype: HVX_Vector Q6_Vh_vdeal_Vh(HVX_Vector Vu) 972 Instruction Type: CVI_VP 973 Execution Slots: SLOT0123 974 ========================================================================== */ 975 976 #define Q6_Vh_vdeal_Vh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdealh)(Vu) 977 #endif /* __HEXAGON_ARCH___ >= 60 */ 978 979 #if __HVX_ARCH__ >= 60 980 /* ========================================================================== 981 Assembly Syntax: Vdd32=vdeal(Vu32,Vv32,Rt8) 982 C Intrinsic Prototype: HVX_VectorPair Q6_W_vdeal_VVR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 983 Instruction Type: CVI_VP_VS 984 Execution Slots: SLOT0123 985 ========================================================================== */ 986 987 #define Q6_W_vdeal_VVR(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdealvdd)(Vu,Vv,Rt) 988 #endif /* __HEXAGON_ARCH___ >= 60 */ 989 990 #if __HVX_ARCH__ >= 60 991 /* ========================================================================== 992 Assembly Syntax: Vd32=vdelta(Vu32,Vv32) 993 C Intrinsic Prototype: HVX_Vector Q6_V_vdelta_VV(HVX_Vector Vu, HVX_Vector Vv) 994 Instruction Type: CVI_VP 995 Execution Slots: SLOT0123 996 ========================================================================== */ 997 998 #define Q6_V_vdelta_VV(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdelta)(Vu,Vv) 999 #endif /* __HEXAGON_ARCH___ >= 60 */ 1000 1001 #if __HVX_ARCH__ >= 60 1002 /* ========================================================================== 1003 Assembly Syntax: Vd32.h=vdmpy(Vu32.ub,Rt32.b) 1004 C Intrinsic Prototype: HVX_Vector Q6_Vh_vdmpy_VubRb(HVX_Vector Vu, Word32 Rt) 1005 Instruction Type: CVI_VX 1006 Execution Slots: SLOT23 1007 ========================================================================== */ 1008 1009 #define Q6_Vh_vdmpy_VubRb(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpybus)(Vu,Rt) 1010 #endif /* __HEXAGON_ARCH___ >= 60 */ 1011 1012 #if __HVX_ARCH__ >= 60 1013 /* ========================================================================== 1014 Assembly Syntax: Vx32.h+=vdmpy(Vu32.ub,Rt32.b) 1015 C Intrinsic Prototype: HVX_Vector Q6_Vh_vdmpyacc_VhVubRb(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 1016 Instruction Type: CVI_VX 1017 Execution Slots: SLOT23 1018 ========================================================================== */ 1019 1020 #define Q6_Vh_vdmpyacc_VhVubRb(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpybus_acc)(Vx,Vu,Rt) 1021 #endif /* __HEXAGON_ARCH___ >= 60 */ 1022 1023 #if __HVX_ARCH__ >= 60 1024 /* ========================================================================== 1025 Assembly Syntax: Vdd32.h=vdmpy(Vuu32.ub,Rt32.b) 1026 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vdmpy_WubRb(HVX_VectorPair Vuu, Word32 Rt) 1027 Instruction Type: CVI_VX_DV 1028 Execution Slots: SLOT23 1029 ========================================================================== */ 1030 1031 #define Q6_Wh_vdmpy_WubRb(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpybus_dv)(Vuu,Rt) 1032 #endif /* __HEXAGON_ARCH___ >= 60 */ 1033 1034 #if __HVX_ARCH__ >= 60 1035 /* ========================================================================== 1036 Assembly Syntax: Vxx32.h+=vdmpy(Vuu32.ub,Rt32.b) 1037 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vdmpyacc_WhWubRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 1038 Instruction Type: CVI_VX_DV 1039 Execution Slots: SLOT23 1040 ========================================================================== */ 1041 1042 #define Q6_Wh_vdmpyacc_WhWubRb(Vxx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpybus_dv_acc)(Vxx,Vuu,Rt) 1043 #endif /* __HEXAGON_ARCH___ >= 60 */ 1044 1045 #if __HVX_ARCH__ >= 60 1046 /* ========================================================================== 1047 Assembly Syntax: Vd32.w=vdmpy(Vu32.h,Rt32.b) 1048 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_VhRb(HVX_Vector Vu, Word32 Rt) 1049 Instruction Type: CVI_VX 1050 Execution Slots: SLOT23 1051 ========================================================================== */ 1052 1053 #define Q6_Vw_vdmpy_VhRb(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhb)(Vu,Rt) 1054 #endif /* __HEXAGON_ARCH___ >= 60 */ 1055 1056 #if __HVX_ARCH__ >= 60 1057 /* ========================================================================== 1058 Assembly Syntax: Vx32.w+=vdmpy(Vu32.h,Rt32.b) 1059 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwVhRb(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 1060 Instruction Type: CVI_VX 1061 Execution Slots: SLOT23 1062 ========================================================================== */ 1063 1064 #define Q6_Vw_vdmpyacc_VwVhRb(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhb_acc)(Vx,Vu,Rt) 1065 #endif /* __HEXAGON_ARCH___ >= 60 */ 1066 1067 #if __HVX_ARCH__ >= 60 1068 /* ========================================================================== 1069 Assembly Syntax: Vdd32.w=vdmpy(Vuu32.h,Rt32.b) 1070 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vdmpy_WhRb(HVX_VectorPair Vuu, Word32 Rt) 1071 Instruction Type: CVI_VX_DV 1072 Execution Slots: SLOT23 1073 ========================================================================== */ 1074 1075 #define Q6_Ww_vdmpy_WhRb(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhb_dv)(Vuu,Rt) 1076 #endif /* __HEXAGON_ARCH___ >= 60 */ 1077 1078 #if __HVX_ARCH__ >= 60 1079 /* ========================================================================== 1080 Assembly Syntax: Vxx32.w+=vdmpy(Vuu32.h,Rt32.b) 1081 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vdmpyacc_WwWhRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 1082 Instruction Type: CVI_VX_DV 1083 Execution Slots: SLOT23 1084 ========================================================================== */ 1085 1086 #define Q6_Ww_vdmpyacc_WwWhRb(Vxx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhb_dv_acc)(Vxx,Vuu,Rt) 1087 #endif /* __HEXAGON_ARCH___ >= 60 */ 1088 1089 #if __HVX_ARCH__ >= 60 1090 /* ========================================================================== 1091 Assembly Syntax: Vd32.w=vdmpy(Vuu32.h,Rt32.h):sat 1092 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_WhRh_sat(HVX_VectorPair Vuu, Word32 Rt) 1093 Instruction Type: CVI_VX_DV 1094 Execution Slots: SLOT23 1095 ========================================================================== */ 1096 1097 #define Q6_Vw_vdmpy_WhRh_sat(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhisat)(Vuu,Rt) 1098 #endif /* __HEXAGON_ARCH___ >= 60 */ 1099 1100 #if __HVX_ARCH__ >= 60 1101 /* ========================================================================== 1102 Assembly Syntax: Vx32.w+=vdmpy(Vuu32.h,Rt32.h):sat 1103 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwWhRh_sat(HVX_Vector Vx, HVX_VectorPair Vuu, Word32 Rt) 1104 Instruction Type: CVI_VX_DV 1105 Execution Slots: SLOT23 1106 ========================================================================== */ 1107 1108 #define Q6_Vw_vdmpyacc_VwWhRh_sat(Vx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhisat_acc)(Vx,Vuu,Rt) 1109 #endif /* __HEXAGON_ARCH___ >= 60 */ 1110 1111 #if __HVX_ARCH__ >= 60 1112 /* ========================================================================== 1113 Assembly Syntax: Vd32.w=vdmpy(Vu32.h,Rt32.h):sat 1114 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_VhRh_sat(HVX_Vector Vu, Word32 Rt) 1115 Instruction Type: CVI_VX 1116 Execution Slots: SLOT23 1117 ========================================================================== */ 1118 1119 #define Q6_Vw_vdmpy_VhRh_sat(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsat)(Vu,Rt) 1120 #endif /* __HEXAGON_ARCH___ >= 60 */ 1121 1122 #if __HVX_ARCH__ >= 60 1123 /* ========================================================================== 1124 Assembly Syntax: Vx32.w+=vdmpy(Vu32.h,Rt32.h):sat 1125 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwVhRh_sat(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 1126 Instruction Type: CVI_VX 1127 Execution Slots: SLOT23 1128 ========================================================================== */ 1129 1130 #define Q6_Vw_vdmpyacc_VwVhRh_sat(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsat_acc)(Vx,Vu,Rt) 1131 #endif /* __HEXAGON_ARCH___ >= 60 */ 1132 1133 #if __HVX_ARCH__ >= 60 1134 /* ========================================================================== 1135 Assembly Syntax: Vd32.w=vdmpy(Vuu32.h,Rt32.uh,#1):sat 1136 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_WhRuh_sat(HVX_VectorPair Vuu, Word32 Rt) 1137 Instruction Type: CVI_VX_DV 1138 Execution Slots: SLOT23 1139 ========================================================================== */ 1140 1141 #define Q6_Vw_vdmpy_WhRuh_sat(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsuisat)(Vuu,Rt) 1142 #endif /* __HEXAGON_ARCH___ >= 60 */ 1143 1144 #if __HVX_ARCH__ >= 60 1145 /* ========================================================================== 1146 Assembly Syntax: Vx32.w+=vdmpy(Vuu32.h,Rt32.uh,#1):sat 1147 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwWhRuh_sat(HVX_Vector Vx, HVX_VectorPair Vuu, Word32 Rt) 1148 Instruction Type: CVI_VX_DV 1149 Execution Slots: SLOT23 1150 ========================================================================== */ 1151 1152 #define Q6_Vw_vdmpyacc_VwWhRuh_sat(Vx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsuisat_acc)(Vx,Vuu,Rt) 1153 #endif /* __HEXAGON_ARCH___ >= 60 */ 1154 1155 #if __HVX_ARCH__ >= 60 1156 /* ========================================================================== 1157 Assembly Syntax: Vd32.w=vdmpy(Vu32.h,Rt32.uh):sat 1158 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_VhRuh_sat(HVX_Vector Vu, Word32 Rt) 1159 Instruction Type: CVI_VX 1160 Execution Slots: SLOT23 1161 ========================================================================== */ 1162 1163 #define Q6_Vw_vdmpy_VhRuh_sat(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsusat)(Vu,Rt) 1164 #endif /* __HEXAGON_ARCH___ >= 60 */ 1165 1166 #if __HVX_ARCH__ >= 60 1167 /* ========================================================================== 1168 Assembly Syntax: Vx32.w+=vdmpy(Vu32.h,Rt32.uh):sat 1169 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwVhRuh_sat(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 1170 Instruction Type: CVI_VX 1171 Execution Slots: SLOT23 1172 ========================================================================== */ 1173 1174 #define Q6_Vw_vdmpyacc_VwVhRuh_sat(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsusat_acc)(Vx,Vu,Rt) 1175 #endif /* __HEXAGON_ARCH___ >= 60 */ 1176 1177 #if __HVX_ARCH__ >= 60 1178 /* ========================================================================== 1179 Assembly Syntax: Vd32.w=vdmpy(Vu32.h,Vv32.h):sat 1180 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 1181 Instruction Type: CVI_VX 1182 Execution Slots: SLOT23 1183 ========================================================================== */ 1184 1185 #define Q6_Vw_vdmpy_VhVh_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhvsat)(Vu,Vv) 1186 #endif /* __HEXAGON_ARCH___ >= 60 */ 1187 1188 #if __HVX_ARCH__ >= 60 1189 /* ========================================================================== 1190 Assembly Syntax: Vx32.w+=vdmpy(Vu32.h,Vv32.h):sat 1191 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwVhVh_sat(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 1192 Instruction Type: CVI_VX_DV 1193 Execution Slots: SLOT23 1194 ========================================================================== */ 1195 1196 #define Q6_Vw_vdmpyacc_VwVhVh_sat(Vx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhvsat_acc)(Vx,Vu,Vv) 1197 #endif /* __HEXAGON_ARCH___ >= 60 */ 1198 1199 #if __HVX_ARCH__ >= 60 1200 /* ========================================================================== 1201 Assembly Syntax: Vdd32.uw=vdsad(Vuu32.uh,Rt32.uh) 1202 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vdsad_WuhRuh(HVX_VectorPair Vuu, Word32 Rt) 1203 Instruction Type: CVI_VX_DV 1204 Execution Slots: SLOT23 1205 ========================================================================== */ 1206 1207 #define Q6_Wuw_vdsad_WuhRuh(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdsaduh)(Vuu,Rt) 1208 #endif /* __HEXAGON_ARCH___ >= 60 */ 1209 1210 #if __HVX_ARCH__ >= 60 1211 /* ========================================================================== 1212 Assembly Syntax: Vxx32.uw+=vdsad(Vuu32.uh,Rt32.uh) 1213 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vdsadacc_WuwWuhRuh(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 1214 Instruction Type: CVI_VX_DV 1215 Execution Slots: SLOT23 1216 ========================================================================== */ 1217 1218 #define Q6_Wuw_vdsadacc_WuwWuhRuh(Vxx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdsaduh_acc)(Vxx,Vuu,Rt) 1219 #endif /* __HEXAGON_ARCH___ >= 60 */ 1220 1221 #if __HVX_ARCH__ >= 60 1222 /* ========================================================================== 1223 Assembly Syntax: Qd4=vcmp.eq(Vu32.b,Vv32.b) 1224 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eq_VbVb(HVX_Vector Vu, HVX_Vector Vv) 1225 Instruction Type: CVI_VA 1226 Execution Slots: SLOT0123 1227 ========================================================================== */ 1228 1229 #define Q6_Q_vcmp_eq_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqb)(Vu,Vv)),-1) 1230 #endif /* __HEXAGON_ARCH___ >= 60 */ 1231 1232 #if __HVX_ARCH__ >= 60 1233 /* ========================================================================== 1234 Assembly Syntax: Qx4&=vcmp.eq(Vu32.b,Vv32.b) 1235 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqand_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1236 Instruction Type: CVI_VA 1237 Execution Slots: SLOT0123 1238 ========================================================================== */ 1239 1240 #define Q6_Q_vcmp_eqand_QVbVb(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqb_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1241 #endif /* __HEXAGON_ARCH___ >= 60 */ 1242 1243 #if __HVX_ARCH__ >= 60 1244 /* ========================================================================== 1245 Assembly Syntax: Qx4|=vcmp.eq(Vu32.b,Vv32.b) 1246 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqor_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1247 Instruction Type: CVI_VA 1248 Execution Slots: SLOT0123 1249 ========================================================================== */ 1250 1251 #define Q6_Q_vcmp_eqor_QVbVb(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqb_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1252 #endif /* __HEXAGON_ARCH___ >= 60 */ 1253 1254 #if __HVX_ARCH__ >= 60 1255 /* ========================================================================== 1256 Assembly Syntax: Qx4^=vcmp.eq(Vu32.b,Vv32.b) 1257 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqxacc_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1258 Instruction Type: CVI_VA 1259 Execution Slots: SLOT0123 1260 ========================================================================== */ 1261 1262 #define Q6_Q_vcmp_eqxacc_QVbVb(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqb_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1263 #endif /* __HEXAGON_ARCH___ >= 60 */ 1264 1265 #if __HVX_ARCH__ >= 60 1266 /* ========================================================================== 1267 Assembly Syntax: Qd4=vcmp.eq(Vu32.h,Vv32.h) 1268 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eq_VhVh(HVX_Vector Vu, HVX_Vector Vv) 1269 Instruction Type: CVI_VA 1270 Execution Slots: SLOT0123 1271 ========================================================================== */ 1272 1273 #define Q6_Q_vcmp_eq_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqh)(Vu,Vv)),-1) 1274 #endif /* __HEXAGON_ARCH___ >= 60 */ 1275 1276 #if __HVX_ARCH__ >= 60 1277 /* ========================================================================== 1278 Assembly Syntax: Qx4&=vcmp.eq(Vu32.h,Vv32.h) 1279 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqand_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1280 Instruction Type: CVI_VA 1281 Execution Slots: SLOT0123 1282 ========================================================================== */ 1283 1284 #define Q6_Q_vcmp_eqand_QVhVh(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqh_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1285 #endif /* __HEXAGON_ARCH___ >= 60 */ 1286 1287 #if __HVX_ARCH__ >= 60 1288 /* ========================================================================== 1289 Assembly Syntax: Qx4|=vcmp.eq(Vu32.h,Vv32.h) 1290 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqor_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1291 Instruction Type: CVI_VA 1292 Execution Slots: SLOT0123 1293 ========================================================================== */ 1294 1295 #define Q6_Q_vcmp_eqor_QVhVh(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqh_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1296 #endif /* __HEXAGON_ARCH___ >= 60 */ 1297 1298 #if __HVX_ARCH__ >= 60 1299 /* ========================================================================== 1300 Assembly Syntax: Qx4^=vcmp.eq(Vu32.h,Vv32.h) 1301 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqxacc_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1302 Instruction Type: CVI_VA 1303 Execution Slots: SLOT0123 1304 ========================================================================== */ 1305 1306 #define Q6_Q_vcmp_eqxacc_QVhVh(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqh_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1307 #endif /* __HEXAGON_ARCH___ >= 60 */ 1308 1309 #if __HVX_ARCH__ >= 60 1310 /* ========================================================================== 1311 Assembly Syntax: Qd4=vcmp.eq(Vu32.w,Vv32.w) 1312 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eq_VwVw(HVX_Vector Vu, HVX_Vector Vv) 1313 Instruction Type: CVI_VA 1314 Execution Slots: SLOT0123 1315 ========================================================================== */ 1316 1317 #define Q6_Q_vcmp_eq_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqw)(Vu,Vv)),-1) 1318 #endif /* __HEXAGON_ARCH___ >= 60 */ 1319 1320 #if __HVX_ARCH__ >= 60 1321 /* ========================================================================== 1322 Assembly Syntax: Qx4&=vcmp.eq(Vu32.w,Vv32.w) 1323 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqand_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1324 Instruction Type: CVI_VA 1325 Execution Slots: SLOT0123 1326 ========================================================================== */ 1327 1328 #define Q6_Q_vcmp_eqand_QVwVw(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqw_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1329 #endif /* __HEXAGON_ARCH___ >= 60 */ 1330 1331 #if __HVX_ARCH__ >= 60 1332 /* ========================================================================== 1333 Assembly Syntax: Qx4|=vcmp.eq(Vu32.w,Vv32.w) 1334 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqor_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1335 Instruction Type: CVI_VA 1336 Execution Slots: SLOT0123 1337 ========================================================================== */ 1338 1339 #define Q6_Q_vcmp_eqor_QVwVw(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqw_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1340 #endif /* __HEXAGON_ARCH___ >= 60 */ 1341 1342 #if __HVX_ARCH__ >= 60 1343 /* ========================================================================== 1344 Assembly Syntax: Qx4^=vcmp.eq(Vu32.w,Vv32.w) 1345 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqxacc_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1346 Instruction Type: CVI_VA 1347 Execution Slots: SLOT0123 1348 ========================================================================== */ 1349 1350 #define Q6_Q_vcmp_eqxacc_QVwVw(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqw_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1351 #endif /* __HEXAGON_ARCH___ >= 60 */ 1352 1353 #if __HVX_ARCH__ >= 60 1354 /* ========================================================================== 1355 Assembly Syntax: Qd4=vcmp.gt(Vu32.b,Vv32.b) 1356 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VbVb(HVX_Vector Vu, HVX_Vector Vv) 1357 Instruction Type: CVI_VA 1358 Execution Slots: SLOT0123 1359 ========================================================================== */ 1360 1361 #define Q6_Q_vcmp_gt_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtb)(Vu,Vv)),-1) 1362 #endif /* __HEXAGON_ARCH___ >= 60 */ 1363 1364 #if __HVX_ARCH__ >= 60 1365 /* ========================================================================== 1366 Assembly Syntax: Qx4&=vcmp.gt(Vu32.b,Vv32.b) 1367 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1368 Instruction Type: CVI_VA 1369 Execution Slots: SLOT0123 1370 ========================================================================== */ 1371 1372 #define Q6_Q_vcmp_gtand_QVbVb(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtb_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1373 #endif /* __HEXAGON_ARCH___ >= 60 */ 1374 1375 #if __HVX_ARCH__ >= 60 1376 /* ========================================================================== 1377 Assembly Syntax: Qx4|=vcmp.gt(Vu32.b,Vv32.b) 1378 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1379 Instruction Type: CVI_VA 1380 Execution Slots: SLOT0123 1381 ========================================================================== */ 1382 1383 #define Q6_Q_vcmp_gtor_QVbVb(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtb_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1384 #endif /* __HEXAGON_ARCH___ >= 60 */ 1385 1386 #if __HVX_ARCH__ >= 60 1387 /* ========================================================================== 1388 Assembly Syntax: Qx4^=vcmp.gt(Vu32.b,Vv32.b) 1389 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1390 Instruction Type: CVI_VA 1391 Execution Slots: SLOT0123 1392 ========================================================================== */ 1393 1394 #define Q6_Q_vcmp_gtxacc_QVbVb(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtb_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1395 #endif /* __HEXAGON_ARCH___ >= 60 */ 1396 1397 #if __HVX_ARCH__ >= 60 1398 /* ========================================================================== 1399 Assembly Syntax: Qd4=vcmp.gt(Vu32.h,Vv32.h) 1400 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VhVh(HVX_Vector Vu, HVX_Vector Vv) 1401 Instruction Type: CVI_VA 1402 Execution Slots: SLOT0123 1403 ========================================================================== */ 1404 1405 #define Q6_Q_vcmp_gt_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgth)(Vu,Vv)),-1) 1406 #endif /* __HEXAGON_ARCH___ >= 60 */ 1407 1408 #if __HVX_ARCH__ >= 60 1409 /* ========================================================================== 1410 Assembly Syntax: Qx4&=vcmp.gt(Vu32.h,Vv32.h) 1411 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1412 Instruction Type: CVI_VA 1413 Execution Slots: SLOT0123 1414 ========================================================================== */ 1415 1416 #define Q6_Q_vcmp_gtand_QVhVh(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgth_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1417 #endif /* __HEXAGON_ARCH___ >= 60 */ 1418 1419 #if __HVX_ARCH__ >= 60 1420 /* ========================================================================== 1421 Assembly Syntax: Qx4|=vcmp.gt(Vu32.h,Vv32.h) 1422 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1423 Instruction Type: CVI_VA 1424 Execution Slots: SLOT0123 1425 ========================================================================== */ 1426 1427 #define Q6_Q_vcmp_gtor_QVhVh(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgth_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1428 #endif /* __HEXAGON_ARCH___ >= 60 */ 1429 1430 #if __HVX_ARCH__ >= 60 1431 /* ========================================================================== 1432 Assembly Syntax: Qx4^=vcmp.gt(Vu32.h,Vv32.h) 1433 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1434 Instruction Type: CVI_VA 1435 Execution Slots: SLOT0123 1436 ========================================================================== */ 1437 1438 #define Q6_Q_vcmp_gtxacc_QVhVh(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgth_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1439 #endif /* __HEXAGON_ARCH___ >= 60 */ 1440 1441 #if __HVX_ARCH__ >= 60 1442 /* ========================================================================== 1443 Assembly Syntax: Qd4=vcmp.gt(Vu32.ub,Vv32.ub) 1444 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VubVub(HVX_Vector Vu, HVX_Vector Vv) 1445 Instruction Type: CVI_VA 1446 Execution Slots: SLOT0123 1447 ========================================================================== */ 1448 1449 #define Q6_Q_vcmp_gt_VubVub(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtub)(Vu,Vv)),-1) 1450 #endif /* __HEXAGON_ARCH___ >= 60 */ 1451 1452 #if __HVX_ARCH__ >= 60 1453 /* ========================================================================== 1454 Assembly Syntax: Qx4&=vcmp.gt(Vu32.ub,Vv32.ub) 1455 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVubVub(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1456 Instruction Type: CVI_VA 1457 Execution Slots: SLOT0123 1458 ========================================================================== */ 1459 1460 #define Q6_Q_vcmp_gtand_QVubVub(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtub_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1461 #endif /* __HEXAGON_ARCH___ >= 60 */ 1462 1463 #if __HVX_ARCH__ >= 60 1464 /* ========================================================================== 1465 Assembly Syntax: Qx4|=vcmp.gt(Vu32.ub,Vv32.ub) 1466 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVubVub(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1467 Instruction Type: CVI_VA 1468 Execution Slots: SLOT0123 1469 ========================================================================== */ 1470 1471 #define Q6_Q_vcmp_gtor_QVubVub(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtub_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1472 #endif /* __HEXAGON_ARCH___ >= 60 */ 1473 1474 #if __HVX_ARCH__ >= 60 1475 /* ========================================================================== 1476 Assembly Syntax: Qx4^=vcmp.gt(Vu32.ub,Vv32.ub) 1477 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVubVub(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1478 Instruction Type: CVI_VA 1479 Execution Slots: SLOT0123 1480 ========================================================================== */ 1481 1482 #define Q6_Q_vcmp_gtxacc_QVubVub(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtub_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1483 #endif /* __HEXAGON_ARCH___ >= 60 */ 1484 1485 #if __HVX_ARCH__ >= 60 1486 /* ========================================================================== 1487 Assembly Syntax: Qd4=vcmp.gt(Vu32.uh,Vv32.uh) 1488 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 1489 Instruction Type: CVI_VA 1490 Execution Slots: SLOT0123 1491 ========================================================================== */ 1492 1493 #define Q6_Q_vcmp_gt_VuhVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuh)(Vu,Vv)),-1) 1494 #endif /* __HEXAGON_ARCH___ >= 60 */ 1495 1496 #if __HVX_ARCH__ >= 60 1497 /* ========================================================================== 1498 Assembly Syntax: Qx4&=vcmp.gt(Vu32.uh,Vv32.uh) 1499 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVuhVuh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1500 Instruction Type: CVI_VA 1501 Execution Slots: SLOT0123 1502 ========================================================================== */ 1503 1504 #define Q6_Q_vcmp_gtand_QVuhVuh(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuh_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1505 #endif /* __HEXAGON_ARCH___ >= 60 */ 1506 1507 #if __HVX_ARCH__ >= 60 1508 /* ========================================================================== 1509 Assembly Syntax: Qx4|=vcmp.gt(Vu32.uh,Vv32.uh) 1510 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVuhVuh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1511 Instruction Type: CVI_VA 1512 Execution Slots: SLOT0123 1513 ========================================================================== */ 1514 1515 #define Q6_Q_vcmp_gtor_QVuhVuh(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuh_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1516 #endif /* __HEXAGON_ARCH___ >= 60 */ 1517 1518 #if __HVX_ARCH__ >= 60 1519 /* ========================================================================== 1520 Assembly Syntax: Qx4^=vcmp.gt(Vu32.uh,Vv32.uh) 1521 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVuhVuh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1522 Instruction Type: CVI_VA 1523 Execution Slots: SLOT0123 1524 ========================================================================== */ 1525 1526 #define Q6_Q_vcmp_gtxacc_QVuhVuh(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuh_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1527 #endif /* __HEXAGON_ARCH___ >= 60 */ 1528 1529 #if __HVX_ARCH__ >= 60 1530 /* ========================================================================== 1531 Assembly Syntax: Qd4=vcmp.gt(Vu32.uw,Vv32.uw) 1532 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VuwVuw(HVX_Vector Vu, HVX_Vector Vv) 1533 Instruction Type: CVI_VA 1534 Execution Slots: SLOT0123 1535 ========================================================================== */ 1536 1537 #define Q6_Q_vcmp_gt_VuwVuw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuw)(Vu,Vv)),-1) 1538 #endif /* __HEXAGON_ARCH___ >= 60 */ 1539 1540 #if __HVX_ARCH__ >= 60 1541 /* ========================================================================== 1542 Assembly Syntax: Qx4&=vcmp.gt(Vu32.uw,Vv32.uw) 1543 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVuwVuw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1544 Instruction Type: CVI_VA 1545 Execution Slots: SLOT0123 1546 ========================================================================== */ 1547 1548 #define Q6_Q_vcmp_gtand_QVuwVuw(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuw_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1549 #endif /* __HEXAGON_ARCH___ >= 60 */ 1550 1551 #if __HVX_ARCH__ >= 60 1552 /* ========================================================================== 1553 Assembly Syntax: Qx4|=vcmp.gt(Vu32.uw,Vv32.uw) 1554 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVuwVuw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1555 Instruction Type: CVI_VA 1556 Execution Slots: SLOT0123 1557 ========================================================================== */ 1558 1559 #define Q6_Q_vcmp_gtor_QVuwVuw(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuw_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1560 #endif /* __HEXAGON_ARCH___ >= 60 */ 1561 1562 #if __HVX_ARCH__ >= 60 1563 /* ========================================================================== 1564 Assembly Syntax: Qx4^=vcmp.gt(Vu32.uw,Vv32.uw) 1565 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVuwVuw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1566 Instruction Type: CVI_VA 1567 Execution Slots: SLOT0123 1568 ========================================================================== */ 1569 1570 #define Q6_Q_vcmp_gtxacc_QVuwVuw(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuw_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1571 #endif /* __HEXAGON_ARCH___ >= 60 */ 1572 1573 #if __HVX_ARCH__ >= 60 1574 /* ========================================================================== 1575 Assembly Syntax: Qd4=vcmp.gt(Vu32.w,Vv32.w) 1576 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VwVw(HVX_Vector Vu, HVX_Vector Vv) 1577 Instruction Type: CVI_VA 1578 Execution Slots: SLOT0123 1579 ========================================================================== */ 1580 1581 #define Q6_Q_vcmp_gt_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtw)(Vu,Vv)),-1) 1582 #endif /* __HEXAGON_ARCH___ >= 60 */ 1583 1584 #if __HVX_ARCH__ >= 60 1585 /* ========================================================================== 1586 Assembly Syntax: Qx4&=vcmp.gt(Vu32.w,Vv32.w) 1587 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1588 Instruction Type: CVI_VA 1589 Execution Slots: SLOT0123 1590 ========================================================================== */ 1591 1592 #define Q6_Q_vcmp_gtand_QVwVw(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtw_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1593 #endif /* __HEXAGON_ARCH___ >= 60 */ 1594 1595 #if __HVX_ARCH__ >= 60 1596 /* ========================================================================== 1597 Assembly Syntax: Qx4|=vcmp.gt(Vu32.w,Vv32.w) 1598 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1599 Instruction Type: CVI_VA 1600 Execution Slots: SLOT0123 1601 ========================================================================== */ 1602 1603 #define Q6_Q_vcmp_gtor_QVwVw(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtw_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1604 #endif /* __HEXAGON_ARCH___ >= 60 */ 1605 1606 #if __HVX_ARCH__ >= 60 1607 /* ========================================================================== 1608 Assembly Syntax: Qx4^=vcmp.gt(Vu32.w,Vv32.w) 1609 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1610 Instruction Type: CVI_VA 1611 Execution Slots: SLOT0123 1612 ========================================================================== */ 1613 1614 #define Q6_Q_vcmp_gtxacc_QVwVw(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtw_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 1615 #endif /* __HEXAGON_ARCH___ >= 60 */ 1616 1617 #if __HVX_ARCH__ >= 60 1618 /* ========================================================================== 1619 Assembly Syntax: Vx32.w=vinsert(Rt32) 1620 C Intrinsic Prototype: HVX_Vector Q6_Vw_vinsert_VwR(HVX_Vector Vx, Word32 Rt) 1621 Instruction Type: CVI_VX_LATE 1622 Execution Slots: SLOT23 1623 ========================================================================== */ 1624 1625 #define Q6_Vw_vinsert_VwR(Vx,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vinsertwr)(Vx,Rt) 1626 #endif /* __HEXAGON_ARCH___ >= 60 */ 1627 1628 #if __HVX_ARCH__ >= 60 1629 /* ========================================================================== 1630 Assembly Syntax: Vd32=vlalign(Vu32,Vv32,Rt8) 1631 C Intrinsic Prototype: HVX_Vector Q6_V_vlalign_VVR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 1632 Instruction Type: CVI_VP 1633 Execution Slots: SLOT0123 1634 ========================================================================== */ 1635 1636 #define Q6_V_vlalign_VVR(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlalignb)(Vu,Vv,Rt) 1637 #endif /* __HEXAGON_ARCH___ >= 60 */ 1638 1639 #if __HVX_ARCH__ >= 60 1640 /* ========================================================================== 1641 Assembly Syntax: Vd32=vlalign(Vu32,Vv32,#u3) 1642 C Intrinsic Prototype: HVX_Vector Q6_V_vlalign_VVI(HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 1643 Instruction Type: CVI_VP 1644 Execution Slots: SLOT0123 1645 ========================================================================== */ 1646 1647 #define Q6_V_vlalign_VVI(Vu,Vv,Iu3) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlalignbi)(Vu,Vv,Iu3) 1648 #endif /* __HEXAGON_ARCH___ >= 60 */ 1649 1650 #if __HVX_ARCH__ >= 60 1651 /* ========================================================================== 1652 Assembly Syntax: Vd32.uh=vlsr(Vu32.uh,Rt32) 1653 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vlsr_VuhR(HVX_Vector Vu, Word32 Rt) 1654 Instruction Type: CVI_VS 1655 Execution Slots: SLOT0123 1656 ========================================================================== */ 1657 1658 #define Q6_Vuh_vlsr_VuhR(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlsrh)(Vu,Rt) 1659 #endif /* __HEXAGON_ARCH___ >= 60 */ 1660 1661 #if __HVX_ARCH__ >= 60 1662 /* ========================================================================== 1663 Assembly Syntax: Vd32.h=vlsr(Vu32.h,Vv32.h) 1664 C Intrinsic Prototype: HVX_Vector Q6_Vh_vlsr_VhVh(HVX_Vector Vu, HVX_Vector Vv) 1665 Instruction Type: CVI_VS 1666 Execution Slots: SLOT0123 1667 ========================================================================== */ 1668 1669 #define Q6_Vh_vlsr_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlsrhv)(Vu,Vv) 1670 #endif /* __HEXAGON_ARCH___ >= 60 */ 1671 1672 #if __HVX_ARCH__ >= 60 1673 /* ========================================================================== 1674 Assembly Syntax: Vd32.uw=vlsr(Vu32.uw,Rt32) 1675 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vlsr_VuwR(HVX_Vector Vu, Word32 Rt) 1676 Instruction Type: CVI_VS 1677 Execution Slots: SLOT0123 1678 ========================================================================== */ 1679 1680 #define Q6_Vuw_vlsr_VuwR(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlsrw)(Vu,Rt) 1681 #endif /* __HEXAGON_ARCH___ >= 60 */ 1682 1683 #if __HVX_ARCH__ >= 60 1684 /* ========================================================================== 1685 Assembly Syntax: Vd32.w=vlsr(Vu32.w,Vv32.w) 1686 C Intrinsic Prototype: HVX_Vector Q6_Vw_vlsr_VwVw(HVX_Vector Vu, HVX_Vector Vv) 1687 Instruction Type: CVI_VS 1688 Execution Slots: SLOT0123 1689 ========================================================================== */ 1690 1691 #define Q6_Vw_vlsr_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlsrwv)(Vu,Vv) 1692 #endif /* __HEXAGON_ARCH___ >= 60 */ 1693 1694 #if __HVX_ARCH__ >= 60 1695 /* ========================================================================== 1696 Assembly Syntax: Vd32.b=vlut32(Vu32.b,Vv32.b,Rt8) 1697 C Intrinsic Prototype: HVX_Vector Q6_Vb_vlut32_VbVbR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 1698 Instruction Type: CVI_VP 1699 Execution Slots: SLOT0123 1700 ========================================================================== */ 1701 1702 #define Q6_Vb_vlut32_VbVbR(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvvb)(Vu,Vv,Rt) 1703 #endif /* __HEXAGON_ARCH___ >= 60 */ 1704 1705 #if __HVX_ARCH__ >= 60 1706 /* ========================================================================== 1707 Assembly Syntax: Vx32.b|=vlut32(Vu32.b,Vv32.b,Rt8) 1708 C Intrinsic Prototype: HVX_Vector Q6_Vb_vlut32or_VbVbVbR(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 1709 Instruction Type: CVI_VP_VS 1710 Execution Slots: SLOT0123 1711 ========================================================================== */ 1712 1713 #define Q6_Vb_vlut32or_VbVbVbR(Vx,Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvvb_oracc)(Vx,Vu,Vv,Rt) 1714 #endif /* __HEXAGON_ARCH___ >= 60 */ 1715 1716 #if __HVX_ARCH__ >= 60 1717 /* ========================================================================== 1718 Assembly Syntax: Vdd32.h=vlut16(Vu32.b,Vv32.h,Rt8) 1719 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vlut16_VbVhR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 1720 Instruction Type: CVI_VP_VS 1721 Execution Slots: SLOT0123 1722 ========================================================================== */ 1723 1724 #define Q6_Wh_vlut16_VbVhR(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvwh)(Vu,Vv,Rt) 1725 #endif /* __HEXAGON_ARCH___ >= 60 */ 1726 1727 #if __HVX_ARCH__ >= 60 1728 /* ========================================================================== 1729 Assembly Syntax: Vxx32.h|=vlut16(Vu32.b,Vv32.h,Rt8) 1730 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vlut16or_WhVbVhR(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 1731 Instruction Type: CVI_VP_VS 1732 Execution Slots: SLOT0123 1733 ========================================================================== */ 1734 1735 #define Q6_Wh_vlut16or_WhVbVhR(Vxx,Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvwh_oracc)(Vxx,Vu,Vv,Rt) 1736 #endif /* __HEXAGON_ARCH___ >= 60 */ 1737 1738 #if __HVX_ARCH__ >= 60 1739 /* ========================================================================== 1740 Assembly Syntax: Vd32.h=vmax(Vu32.h,Vv32.h) 1741 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmax_VhVh(HVX_Vector Vu, HVX_Vector Vv) 1742 Instruction Type: CVI_VA 1743 Execution Slots: SLOT0123 1744 ========================================================================== */ 1745 1746 #define Q6_Vh_vmax_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaxh)(Vu,Vv) 1747 #endif /* __HEXAGON_ARCH___ >= 60 */ 1748 1749 #if __HVX_ARCH__ >= 60 1750 /* ========================================================================== 1751 Assembly Syntax: Vd32.ub=vmax(Vu32.ub,Vv32.ub) 1752 C Intrinsic Prototype: HVX_Vector Q6_Vub_vmax_VubVub(HVX_Vector Vu, HVX_Vector Vv) 1753 Instruction Type: CVI_VA 1754 Execution Slots: SLOT0123 1755 ========================================================================== */ 1756 1757 #define Q6_Vub_vmax_VubVub(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaxub)(Vu,Vv) 1758 #endif /* __HEXAGON_ARCH___ >= 60 */ 1759 1760 #if __HVX_ARCH__ >= 60 1761 /* ========================================================================== 1762 Assembly Syntax: Vd32.uh=vmax(Vu32.uh,Vv32.uh) 1763 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vmax_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 1764 Instruction Type: CVI_VA 1765 Execution Slots: SLOT0123 1766 ========================================================================== */ 1767 1768 #define Q6_Vuh_vmax_VuhVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaxuh)(Vu,Vv) 1769 #endif /* __HEXAGON_ARCH___ >= 60 */ 1770 1771 #if __HVX_ARCH__ >= 60 1772 /* ========================================================================== 1773 Assembly Syntax: Vd32.w=vmax(Vu32.w,Vv32.w) 1774 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmax_VwVw(HVX_Vector Vu, HVX_Vector Vv) 1775 Instruction Type: CVI_VA 1776 Execution Slots: SLOT0123 1777 ========================================================================== */ 1778 1779 #define Q6_Vw_vmax_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaxw)(Vu,Vv) 1780 #endif /* __HEXAGON_ARCH___ >= 60 */ 1781 1782 #if __HVX_ARCH__ >= 60 1783 /* ========================================================================== 1784 Assembly Syntax: Vd32.h=vmin(Vu32.h,Vv32.h) 1785 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmin_VhVh(HVX_Vector Vu, HVX_Vector Vv) 1786 Instruction Type: CVI_VA 1787 Execution Slots: SLOT0123 1788 ========================================================================== */ 1789 1790 #define Q6_Vh_vmin_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vminh)(Vu,Vv) 1791 #endif /* __HEXAGON_ARCH___ >= 60 */ 1792 1793 #if __HVX_ARCH__ >= 60 1794 /* ========================================================================== 1795 Assembly Syntax: Vd32.ub=vmin(Vu32.ub,Vv32.ub) 1796 C Intrinsic Prototype: HVX_Vector Q6_Vub_vmin_VubVub(HVX_Vector Vu, HVX_Vector Vv) 1797 Instruction Type: CVI_VA 1798 Execution Slots: SLOT0123 1799 ========================================================================== */ 1800 1801 #define Q6_Vub_vmin_VubVub(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vminub)(Vu,Vv) 1802 #endif /* __HEXAGON_ARCH___ >= 60 */ 1803 1804 #if __HVX_ARCH__ >= 60 1805 /* ========================================================================== 1806 Assembly Syntax: Vd32.uh=vmin(Vu32.uh,Vv32.uh) 1807 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vmin_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 1808 Instruction Type: CVI_VA 1809 Execution Slots: SLOT0123 1810 ========================================================================== */ 1811 1812 #define Q6_Vuh_vmin_VuhVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vminuh)(Vu,Vv) 1813 #endif /* __HEXAGON_ARCH___ >= 60 */ 1814 1815 #if __HVX_ARCH__ >= 60 1816 /* ========================================================================== 1817 Assembly Syntax: Vd32.w=vmin(Vu32.w,Vv32.w) 1818 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmin_VwVw(HVX_Vector Vu, HVX_Vector Vv) 1819 Instruction Type: CVI_VA 1820 Execution Slots: SLOT0123 1821 ========================================================================== */ 1822 1823 #define Q6_Vw_vmin_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vminw)(Vu,Vv) 1824 #endif /* __HEXAGON_ARCH___ >= 60 */ 1825 1826 #if __HVX_ARCH__ >= 60 1827 /* ========================================================================== 1828 Assembly Syntax: Vdd32.h=vmpa(Vuu32.ub,Rt32.b) 1829 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpa_WubRb(HVX_VectorPair Vuu, Word32 Rt) 1830 Instruction Type: CVI_VX_DV 1831 Execution Slots: SLOT23 1832 ========================================================================== */ 1833 1834 #define Q6_Wh_vmpa_WubRb(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabus)(Vuu,Rt) 1835 #endif /* __HEXAGON_ARCH___ >= 60 */ 1836 1837 #if __HVX_ARCH__ >= 60 1838 /* ========================================================================== 1839 Assembly Syntax: Vxx32.h+=vmpa(Vuu32.ub,Rt32.b) 1840 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpaacc_WhWubRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 1841 Instruction Type: CVI_VX_DV 1842 Execution Slots: SLOT23 1843 ========================================================================== */ 1844 1845 #define Q6_Wh_vmpaacc_WhWubRb(Vxx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabus_acc)(Vxx,Vuu,Rt) 1846 #endif /* __HEXAGON_ARCH___ >= 60 */ 1847 1848 #if __HVX_ARCH__ >= 60 1849 /* ========================================================================== 1850 Assembly Syntax: Vdd32.h=vmpa(Vuu32.ub,Vvv32.b) 1851 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpa_WubWb(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 1852 Instruction Type: CVI_VX_DV 1853 Execution Slots: SLOT23 1854 ========================================================================== */ 1855 1856 #define Q6_Wh_vmpa_WubWb(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabusv)(Vuu,Vvv) 1857 #endif /* __HEXAGON_ARCH___ >= 60 */ 1858 1859 #if __HVX_ARCH__ >= 60 1860 /* ========================================================================== 1861 Assembly Syntax: Vdd32.h=vmpa(Vuu32.ub,Vvv32.ub) 1862 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpa_WubWub(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 1863 Instruction Type: CVI_VX_DV 1864 Execution Slots: SLOT23 1865 ========================================================================== */ 1866 1867 #define Q6_Wh_vmpa_WubWub(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabuuv)(Vuu,Vvv) 1868 #endif /* __HEXAGON_ARCH___ >= 60 */ 1869 1870 #if __HVX_ARCH__ >= 60 1871 /* ========================================================================== 1872 Assembly Syntax: Vdd32.w=vmpa(Vuu32.h,Rt32.b) 1873 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpa_WhRb(HVX_VectorPair Vuu, Word32 Rt) 1874 Instruction Type: CVI_VX_DV 1875 Execution Slots: SLOT23 1876 ========================================================================== */ 1877 1878 #define Q6_Ww_vmpa_WhRb(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpahb)(Vuu,Rt) 1879 #endif /* __HEXAGON_ARCH___ >= 60 */ 1880 1881 #if __HVX_ARCH__ >= 60 1882 /* ========================================================================== 1883 Assembly Syntax: Vxx32.w+=vmpa(Vuu32.h,Rt32.b) 1884 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpaacc_WwWhRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 1885 Instruction Type: CVI_VX_DV 1886 Execution Slots: SLOT23 1887 ========================================================================== */ 1888 1889 #define Q6_Ww_vmpaacc_WwWhRb(Vxx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpahb_acc)(Vxx,Vuu,Rt) 1890 #endif /* __HEXAGON_ARCH___ >= 60 */ 1891 1892 #if __HVX_ARCH__ >= 60 1893 /* ========================================================================== 1894 Assembly Syntax: Vdd32.h=vmpy(Vu32.ub,Rt32.b) 1895 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpy_VubRb(HVX_Vector Vu, Word32 Rt) 1896 Instruction Type: CVI_VX_DV 1897 Execution Slots: SLOT23 1898 ========================================================================== */ 1899 1900 #define Q6_Wh_vmpy_VubRb(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybus)(Vu,Rt) 1901 #endif /* __HEXAGON_ARCH___ >= 60 */ 1902 1903 #if __HVX_ARCH__ >= 60 1904 /* ========================================================================== 1905 Assembly Syntax: Vxx32.h+=vmpy(Vu32.ub,Rt32.b) 1906 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpyacc_WhVubRb(HVX_VectorPair Vxx, HVX_Vector Vu, Word32 Rt) 1907 Instruction Type: CVI_VX_DV 1908 Execution Slots: SLOT23 1909 ========================================================================== */ 1910 1911 #define Q6_Wh_vmpyacc_WhVubRb(Vxx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybus_acc)(Vxx,Vu,Rt) 1912 #endif /* __HEXAGON_ARCH___ >= 60 */ 1913 1914 #if __HVX_ARCH__ >= 60 1915 /* ========================================================================== 1916 Assembly Syntax: Vdd32.h=vmpy(Vu32.ub,Vv32.b) 1917 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpy_VubVb(HVX_Vector Vu, HVX_Vector Vv) 1918 Instruction Type: CVI_VX_DV 1919 Execution Slots: SLOT23 1920 ========================================================================== */ 1921 1922 #define Q6_Wh_vmpy_VubVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybusv)(Vu,Vv) 1923 #endif /* __HEXAGON_ARCH___ >= 60 */ 1924 1925 #if __HVX_ARCH__ >= 60 1926 /* ========================================================================== 1927 Assembly Syntax: Vxx32.h+=vmpy(Vu32.ub,Vv32.b) 1928 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpyacc_WhVubVb(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 1929 Instruction Type: CVI_VX_DV 1930 Execution Slots: SLOT23 1931 ========================================================================== */ 1932 1933 #define Q6_Wh_vmpyacc_WhVubVb(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybusv_acc)(Vxx,Vu,Vv) 1934 #endif /* __HEXAGON_ARCH___ >= 60 */ 1935 1936 #if __HVX_ARCH__ >= 60 1937 /* ========================================================================== 1938 Assembly Syntax: Vdd32.h=vmpy(Vu32.b,Vv32.b) 1939 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpy_VbVb(HVX_Vector Vu, HVX_Vector Vv) 1940 Instruction Type: CVI_VX_DV 1941 Execution Slots: SLOT23 1942 ========================================================================== */ 1943 1944 #define Q6_Wh_vmpy_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybv)(Vu,Vv) 1945 #endif /* __HEXAGON_ARCH___ >= 60 */ 1946 1947 #if __HVX_ARCH__ >= 60 1948 /* ========================================================================== 1949 Assembly Syntax: Vxx32.h+=vmpy(Vu32.b,Vv32.b) 1950 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpyacc_WhVbVb(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 1951 Instruction Type: CVI_VX_DV 1952 Execution Slots: SLOT23 1953 ========================================================================== */ 1954 1955 #define Q6_Wh_vmpyacc_WhVbVb(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybv_acc)(Vxx,Vu,Vv) 1956 #endif /* __HEXAGON_ARCH___ >= 60 */ 1957 1958 #if __HVX_ARCH__ >= 60 1959 /* ========================================================================== 1960 Assembly Syntax: Vd32.w=vmpye(Vu32.w,Vv32.uh) 1961 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpye_VwVuh(HVX_Vector Vu, HVX_Vector Vv) 1962 Instruction Type: CVI_VX_DV 1963 Execution Slots: SLOT23 1964 ========================================================================== */ 1965 1966 #define Q6_Vw_vmpye_VwVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyewuh)(Vu,Vv) 1967 #endif /* __HEXAGON_ARCH___ >= 60 */ 1968 1969 #if __HVX_ARCH__ >= 60 1970 /* ========================================================================== 1971 Assembly Syntax: Vdd32.w=vmpy(Vu32.h,Rt32.h) 1972 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpy_VhRh(HVX_Vector Vu, Word32 Rt) 1973 Instruction Type: CVI_VX_DV 1974 Execution Slots: SLOT23 1975 ========================================================================== */ 1976 1977 #define Q6_Ww_vmpy_VhRh(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyh)(Vu,Rt) 1978 #endif /* __HEXAGON_ARCH___ >= 60 */ 1979 1980 #if __HVX_ARCH__ >= 60 1981 /* ========================================================================== 1982 Assembly Syntax: Vxx32.w+=vmpy(Vu32.h,Rt32.h):sat 1983 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpyacc_WwVhRh_sat(HVX_VectorPair Vxx, HVX_Vector Vu, Word32 Rt) 1984 Instruction Type: CVI_VX_DV 1985 Execution Slots: SLOT23 1986 ========================================================================== */ 1987 1988 #define Q6_Ww_vmpyacc_WwVhRh_sat(Vxx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhsat_acc)(Vxx,Vu,Rt) 1989 #endif /* __HEXAGON_ARCH___ >= 60 */ 1990 1991 #if __HVX_ARCH__ >= 60 1992 /* ========================================================================== 1993 Assembly Syntax: Vd32.h=vmpy(Vu32.h,Rt32.h):<<1:rnd:sat 1994 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpy_VhRh_s1_rnd_sat(HVX_Vector Vu, Word32 Rt) 1995 Instruction Type: CVI_VX 1996 Execution Slots: SLOT23 1997 ========================================================================== */ 1998 1999 #define Q6_Vh_vmpy_VhRh_s1_rnd_sat(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhsrs)(Vu,Rt) 2000 #endif /* __HEXAGON_ARCH___ >= 60 */ 2001 2002 #if __HVX_ARCH__ >= 60 2003 /* ========================================================================== 2004 Assembly Syntax: Vd32.h=vmpy(Vu32.h,Rt32.h):<<1:sat 2005 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpy_VhRh_s1_sat(HVX_Vector Vu, Word32 Rt) 2006 Instruction Type: CVI_VX 2007 Execution Slots: SLOT23 2008 ========================================================================== */ 2009 2010 #define Q6_Vh_vmpy_VhRh_s1_sat(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhss)(Vu,Rt) 2011 #endif /* __HEXAGON_ARCH___ >= 60 */ 2012 2013 #if __HVX_ARCH__ >= 60 2014 /* ========================================================================== 2015 Assembly Syntax: Vdd32.w=vmpy(Vu32.h,Vv32.uh) 2016 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpy_VhVuh(HVX_Vector Vu, HVX_Vector Vv) 2017 Instruction Type: CVI_VX_DV 2018 Execution Slots: SLOT23 2019 ========================================================================== */ 2020 2021 #define Q6_Ww_vmpy_VhVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhus)(Vu,Vv) 2022 #endif /* __HEXAGON_ARCH___ >= 60 */ 2023 2024 #if __HVX_ARCH__ >= 60 2025 /* ========================================================================== 2026 Assembly Syntax: Vxx32.w+=vmpy(Vu32.h,Vv32.uh) 2027 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpyacc_WwVhVuh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 2028 Instruction Type: CVI_VX_DV 2029 Execution Slots: SLOT23 2030 ========================================================================== */ 2031 2032 #define Q6_Ww_vmpyacc_WwVhVuh(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhus_acc)(Vxx,Vu,Vv) 2033 #endif /* __HEXAGON_ARCH___ >= 60 */ 2034 2035 #if __HVX_ARCH__ >= 60 2036 /* ========================================================================== 2037 Assembly Syntax: Vdd32.w=vmpy(Vu32.h,Vv32.h) 2038 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpy_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2039 Instruction Type: CVI_VX_DV 2040 Execution Slots: SLOT23 2041 ========================================================================== */ 2042 2043 #define Q6_Ww_vmpy_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhv)(Vu,Vv) 2044 #endif /* __HEXAGON_ARCH___ >= 60 */ 2045 2046 #if __HVX_ARCH__ >= 60 2047 /* ========================================================================== 2048 Assembly Syntax: Vxx32.w+=vmpy(Vu32.h,Vv32.h) 2049 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpyacc_WwVhVh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 2050 Instruction Type: CVI_VX_DV 2051 Execution Slots: SLOT23 2052 ========================================================================== */ 2053 2054 #define Q6_Ww_vmpyacc_WwVhVh(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhv_acc)(Vxx,Vu,Vv) 2055 #endif /* __HEXAGON_ARCH___ >= 60 */ 2056 2057 #if __HVX_ARCH__ >= 60 2058 /* ========================================================================== 2059 Assembly Syntax: Vd32.h=vmpy(Vu32.h,Vv32.h):<<1:rnd:sat 2060 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpy_VhVh_s1_rnd_sat(HVX_Vector Vu, HVX_Vector Vv) 2061 Instruction Type: CVI_VX 2062 Execution Slots: SLOT23 2063 ========================================================================== */ 2064 2065 #define Q6_Vh_vmpy_VhVh_s1_rnd_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhvsrs)(Vu,Vv) 2066 #endif /* __HEXAGON_ARCH___ >= 60 */ 2067 2068 #if __HVX_ARCH__ >= 60 2069 /* ========================================================================== 2070 Assembly Syntax: Vd32.w=vmpyieo(Vu32.h,Vv32.h) 2071 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyieo_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2072 Instruction Type: CVI_VX 2073 Execution Slots: SLOT23 2074 ========================================================================== */ 2075 2076 #define Q6_Vw_vmpyieo_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyieoh)(Vu,Vv) 2077 #endif /* __HEXAGON_ARCH___ >= 60 */ 2078 2079 #if __HVX_ARCH__ >= 60 2080 /* ========================================================================== 2081 Assembly Syntax: Vx32.w+=vmpyie(Vu32.w,Vv32.h) 2082 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyieacc_VwVwVh(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2083 Instruction Type: CVI_VX_DV 2084 Execution Slots: SLOT23 2085 ========================================================================== */ 2086 2087 #define Q6_Vw_vmpyieacc_VwVwVh(Vx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiewh_acc)(Vx,Vu,Vv) 2088 #endif /* __HEXAGON_ARCH___ >= 60 */ 2089 2090 #if __HVX_ARCH__ >= 60 2091 /* ========================================================================== 2092 Assembly Syntax: Vd32.w=vmpyie(Vu32.w,Vv32.uh) 2093 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyie_VwVuh(HVX_Vector Vu, HVX_Vector Vv) 2094 Instruction Type: CVI_VX_DV 2095 Execution Slots: SLOT23 2096 ========================================================================== */ 2097 2098 #define Q6_Vw_vmpyie_VwVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiewuh)(Vu,Vv) 2099 #endif /* __HEXAGON_ARCH___ >= 60 */ 2100 2101 #if __HVX_ARCH__ >= 60 2102 /* ========================================================================== 2103 Assembly Syntax: Vx32.w+=vmpyie(Vu32.w,Vv32.uh) 2104 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyieacc_VwVwVuh(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2105 Instruction Type: CVI_VX_DV 2106 Execution Slots: SLOT23 2107 ========================================================================== */ 2108 2109 #define Q6_Vw_vmpyieacc_VwVwVuh(Vx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiewuh_acc)(Vx,Vu,Vv) 2110 #endif /* __HEXAGON_ARCH___ >= 60 */ 2111 2112 #if __HVX_ARCH__ >= 60 2113 /* ========================================================================== 2114 Assembly Syntax: Vd32.h=vmpyi(Vu32.h,Vv32.h) 2115 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpyi_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2116 Instruction Type: CVI_VX_DV 2117 Execution Slots: SLOT23 2118 ========================================================================== */ 2119 2120 #define Q6_Vh_vmpyi_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyih)(Vu,Vv) 2121 #endif /* __HEXAGON_ARCH___ >= 60 */ 2122 2123 #if __HVX_ARCH__ >= 60 2124 /* ========================================================================== 2125 Assembly Syntax: Vx32.h+=vmpyi(Vu32.h,Vv32.h) 2126 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpyiacc_VhVhVh(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2127 Instruction Type: CVI_VX_DV 2128 Execution Slots: SLOT23 2129 ========================================================================== */ 2130 2131 #define Q6_Vh_vmpyiacc_VhVhVh(Vx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyih_acc)(Vx,Vu,Vv) 2132 #endif /* __HEXAGON_ARCH___ >= 60 */ 2133 2134 #if __HVX_ARCH__ >= 60 2135 /* ========================================================================== 2136 Assembly Syntax: Vd32.h=vmpyi(Vu32.h,Rt32.b) 2137 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpyi_VhRb(HVX_Vector Vu, Word32 Rt) 2138 Instruction Type: CVI_VX 2139 Execution Slots: SLOT23 2140 ========================================================================== */ 2141 2142 #define Q6_Vh_vmpyi_VhRb(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyihb)(Vu,Rt) 2143 #endif /* __HEXAGON_ARCH___ >= 60 */ 2144 2145 #if __HVX_ARCH__ >= 60 2146 /* ========================================================================== 2147 Assembly Syntax: Vx32.h+=vmpyi(Vu32.h,Rt32.b) 2148 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpyiacc_VhVhRb(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 2149 Instruction Type: CVI_VX 2150 Execution Slots: SLOT23 2151 ========================================================================== */ 2152 2153 #define Q6_Vh_vmpyiacc_VhVhRb(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyihb_acc)(Vx,Vu,Rt) 2154 #endif /* __HEXAGON_ARCH___ >= 60 */ 2155 2156 #if __HVX_ARCH__ >= 60 2157 /* ========================================================================== 2158 Assembly Syntax: Vd32.w=vmpyio(Vu32.w,Vv32.h) 2159 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyio_VwVh(HVX_Vector Vu, HVX_Vector Vv) 2160 Instruction Type: CVI_VX_DV 2161 Execution Slots: SLOT23 2162 ========================================================================== */ 2163 2164 #define Q6_Vw_vmpyio_VwVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiowh)(Vu,Vv) 2165 #endif /* __HEXAGON_ARCH___ >= 60 */ 2166 2167 #if __HVX_ARCH__ >= 60 2168 /* ========================================================================== 2169 Assembly Syntax: Vd32.w=vmpyi(Vu32.w,Rt32.b) 2170 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyi_VwRb(HVX_Vector Vu, Word32 Rt) 2171 Instruction Type: CVI_VX 2172 Execution Slots: SLOT23 2173 ========================================================================== */ 2174 2175 #define Q6_Vw_vmpyi_VwRb(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwb)(Vu,Rt) 2176 #endif /* __HEXAGON_ARCH___ >= 60 */ 2177 2178 #if __HVX_ARCH__ >= 60 2179 /* ========================================================================== 2180 Assembly Syntax: Vx32.w+=vmpyi(Vu32.w,Rt32.b) 2181 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyiacc_VwVwRb(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 2182 Instruction Type: CVI_VX 2183 Execution Slots: SLOT23 2184 ========================================================================== */ 2185 2186 #define Q6_Vw_vmpyiacc_VwVwRb(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwb_acc)(Vx,Vu,Rt) 2187 #endif /* __HEXAGON_ARCH___ >= 60 */ 2188 2189 #if __HVX_ARCH__ >= 60 2190 /* ========================================================================== 2191 Assembly Syntax: Vd32.w=vmpyi(Vu32.w,Rt32.h) 2192 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyi_VwRh(HVX_Vector Vu, Word32 Rt) 2193 Instruction Type: CVI_VX_DV 2194 Execution Slots: SLOT23 2195 ========================================================================== */ 2196 2197 #define Q6_Vw_vmpyi_VwRh(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwh)(Vu,Rt) 2198 #endif /* __HEXAGON_ARCH___ >= 60 */ 2199 2200 #if __HVX_ARCH__ >= 60 2201 /* ========================================================================== 2202 Assembly Syntax: Vx32.w+=vmpyi(Vu32.w,Rt32.h) 2203 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyiacc_VwVwRh(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 2204 Instruction Type: CVI_VX_DV 2205 Execution Slots: SLOT23 2206 ========================================================================== */ 2207 2208 #define Q6_Vw_vmpyiacc_VwVwRh(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwh_acc)(Vx,Vu,Rt) 2209 #endif /* __HEXAGON_ARCH___ >= 60 */ 2210 2211 #if __HVX_ARCH__ >= 60 2212 /* ========================================================================== 2213 Assembly Syntax: Vd32.w=vmpyo(Vu32.w,Vv32.h):<<1:sat 2214 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyo_VwVh_s1_sat(HVX_Vector Vu, HVX_Vector Vv) 2215 Instruction Type: CVI_VX_DV 2216 Execution Slots: SLOT23 2217 ========================================================================== */ 2218 2219 #define Q6_Vw_vmpyo_VwVh_s1_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyowh)(Vu,Vv) 2220 #endif /* __HEXAGON_ARCH___ >= 60 */ 2221 2222 #if __HVX_ARCH__ >= 60 2223 /* ========================================================================== 2224 Assembly Syntax: Vd32.w=vmpyo(Vu32.w,Vv32.h):<<1:rnd:sat 2225 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyo_VwVh_s1_rnd_sat(HVX_Vector Vu, HVX_Vector Vv) 2226 Instruction Type: CVI_VX_DV 2227 Execution Slots: SLOT23 2228 ========================================================================== */ 2229 2230 #define Q6_Vw_vmpyo_VwVh_s1_rnd_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyowh_rnd)(Vu,Vv) 2231 #endif /* __HEXAGON_ARCH___ >= 60 */ 2232 2233 #if __HVX_ARCH__ >= 60 2234 /* ========================================================================== 2235 Assembly Syntax: Vx32.w+=vmpyo(Vu32.w,Vv32.h):<<1:rnd:sat:shift 2236 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyoacc_VwVwVh_s1_rnd_sat_shift(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2237 Instruction Type: CVI_VX_DV 2238 Execution Slots: SLOT23 2239 ========================================================================== */ 2240 2241 #define Q6_Vw_vmpyoacc_VwVwVh_s1_rnd_sat_shift(Vx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyowh_rnd_sacc)(Vx,Vu,Vv) 2242 #endif /* __HEXAGON_ARCH___ >= 60 */ 2243 2244 #if __HVX_ARCH__ >= 60 2245 /* ========================================================================== 2246 Assembly Syntax: Vx32.w+=vmpyo(Vu32.w,Vv32.h):<<1:sat:shift 2247 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyoacc_VwVwVh_s1_sat_shift(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2248 Instruction Type: CVI_VX_DV 2249 Execution Slots: SLOT23 2250 ========================================================================== */ 2251 2252 #define Q6_Vw_vmpyoacc_VwVwVh_s1_sat_shift(Vx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyowh_sacc)(Vx,Vu,Vv) 2253 #endif /* __HEXAGON_ARCH___ >= 60 */ 2254 2255 #if __HVX_ARCH__ >= 60 2256 /* ========================================================================== 2257 Assembly Syntax: Vdd32.uh=vmpy(Vu32.ub,Rt32.ub) 2258 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vmpy_VubRub(HVX_Vector Vu, Word32 Rt) 2259 Instruction Type: CVI_VX_DV 2260 Execution Slots: SLOT23 2261 ========================================================================== */ 2262 2263 #define Q6_Wuh_vmpy_VubRub(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyub)(Vu,Rt) 2264 #endif /* __HEXAGON_ARCH___ >= 60 */ 2265 2266 #if __HVX_ARCH__ >= 60 2267 /* ========================================================================== 2268 Assembly Syntax: Vxx32.uh+=vmpy(Vu32.ub,Rt32.ub) 2269 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vmpyacc_WuhVubRub(HVX_VectorPair Vxx, HVX_Vector Vu, Word32 Rt) 2270 Instruction Type: CVI_VX_DV 2271 Execution Slots: SLOT23 2272 ========================================================================== */ 2273 2274 #define Q6_Wuh_vmpyacc_WuhVubRub(Vxx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyub_acc)(Vxx,Vu,Rt) 2275 #endif /* __HEXAGON_ARCH___ >= 60 */ 2276 2277 #if __HVX_ARCH__ >= 60 2278 /* ========================================================================== 2279 Assembly Syntax: Vdd32.uh=vmpy(Vu32.ub,Vv32.ub) 2280 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vmpy_VubVub(HVX_Vector Vu, HVX_Vector Vv) 2281 Instruction Type: CVI_VX_DV 2282 Execution Slots: SLOT23 2283 ========================================================================== */ 2284 2285 #define Q6_Wuh_vmpy_VubVub(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyubv)(Vu,Vv) 2286 #endif /* __HEXAGON_ARCH___ >= 60 */ 2287 2288 #if __HVX_ARCH__ >= 60 2289 /* ========================================================================== 2290 Assembly Syntax: Vxx32.uh+=vmpy(Vu32.ub,Vv32.ub) 2291 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vmpyacc_WuhVubVub(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 2292 Instruction Type: CVI_VX_DV 2293 Execution Slots: SLOT23 2294 ========================================================================== */ 2295 2296 #define Q6_Wuh_vmpyacc_WuhVubVub(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyubv_acc)(Vxx,Vu,Vv) 2297 #endif /* __HEXAGON_ARCH___ >= 60 */ 2298 2299 #if __HVX_ARCH__ >= 60 2300 /* ========================================================================== 2301 Assembly Syntax: Vdd32.uw=vmpy(Vu32.uh,Rt32.uh) 2302 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vmpy_VuhRuh(HVX_Vector Vu, Word32 Rt) 2303 Instruction Type: CVI_VX_DV 2304 Execution Slots: SLOT23 2305 ========================================================================== */ 2306 2307 #define Q6_Wuw_vmpy_VuhRuh(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuh)(Vu,Rt) 2308 #endif /* __HEXAGON_ARCH___ >= 60 */ 2309 2310 #if __HVX_ARCH__ >= 60 2311 /* ========================================================================== 2312 Assembly Syntax: Vxx32.uw+=vmpy(Vu32.uh,Rt32.uh) 2313 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vmpyacc_WuwVuhRuh(HVX_VectorPair Vxx, HVX_Vector Vu, Word32 Rt) 2314 Instruction Type: CVI_VX_DV 2315 Execution Slots: SLOT23 2316 ========================================================================== */ 2317 2318 #define Q6_Wuw_vmpyacc_WuwVuhRuh(Vxx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuh_acc)(Vxx,Vu,Rt) 2319 #endif /* __HEXAGON_ARCH___ >= 60 */ 2320 2321 #if __HVX_ARCH__ >= 60 2322 /* ========================================================================== 2323 Assembly Syntax: Vdd32.uw=vmpy(Vu32.uh,Vv32.uh) 2324 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vmpy_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 2325 Instruction Type: CVI_VX_DV 2326 Execution Slots: SLOT23 2327 ========================================================================== */ 2328 2329 #define Q6_Wuw_vmpy_VuhVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuhv)(Vu,Vv) 2330 #endif /* __HEXAGON_ARCH___ >= 60 */ 2331 2332 #if __HVX_ARCH__ >= 60 2333 /* ========================================================================== 2334 Assembly Syntax: Vxx32.uw+=vmpy(Vu32.uh,Vv32.uh) 2335 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vmpyacc_WuwVuhVuh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 2336 Instruction Type: CVI_VX_DV 2337 Execution Slots: SLOT23 2338 ========================================================================== */ 2339 2340 #define Q6_Wuw_vmpyacc_WuwVuhVuh(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuhv_acc)(Vxx,Vu,Vv) 2341 #endif /* __HEXAGON_ARCH___ >= 60 */ 2342 2343 #if __HVX_ARCH__ >= 60 2344 /* ========================================================================== 2345 Assembly Syntax: Vd32=vmux(Qt4,Vu32,Vv32) 2346 C Intrinsic Prototype: HVX_Vector Q6_V_vmux_QVV(HVX_VectorPred Qt, HVX_Vector Vu, HVX_Vector Vv) 2347 Instruction Type: CVI_VA 2348 Execution Slots: SLOT0123 2349 ========================================================================== */ 2350 2351 #define Q6_V_vmux_QVV(Qt,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmux)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qt),-1),Vu,Vv) 2352 #endif /* __HEXAGON_ARCH___ >= 60 */ 2353 2354 #if __HVX_ARCH__ >= 60 2355 /* ========================================================================== 2356 Assembly Syntax: Vd32.h=vnavg(Vu32.h,Vv32.h) 2357 C Intrinsic Prototype: HVX_Vector Q6_Vh_vnavg_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2358 Instruction Type: CVI_VA 2359 Execution Slots: SLOT0123 2360 ========================================================================== */ 2361 2362 #define Q6_Vh_vnavg_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnavgh)(Vu,Vv) 2363 #endif /* __HEXAGON_ARCH___ >= 60 */ 2364 2365 #if __HVX_ARCH__ >= 60 2366 /* ========================================================================== 2367 Assembly Syntax: Vd32.b=vnavg(Vu32.ub,Vv32.ub) 2368 C Intrinsic Prototype: HVX_Vector Q6_Vb_vnavg_VubVub(HVX_Vector Vu, HVX_Vector Vv) 2369 Instruction Type: CVI_VA 2370 Execution Slots: SLOT0123 2371 ========================================================================== */ 2372 2373 #define Q6_Vb_vnavg_VubVub(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnavgub)(Vu,Vv) 2374 #endif /* __HEXAGON_ARCH___ >= 60 */ 2375 2376 #if __HVX_ARCH__ >= 60 2377 /* ========================================================================== 2378 Assembly Syntax: Vd32.w=vnavg(Vu32.w,Vv32.w) 2379 C Intrinsic Prototype: HVX_Vector Q6_Vw_vnavg_VwVw(HVX_Vector Vu, HVX_Vector Vv) 2380 Instruction Type: CVI_VA 2381 Execution Slots: SLOT0123 2382 ========================================================================== */ 2383 2384 #define Q6_Vw_vnavg_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnavgw)(Vu,Vv) 2385 #endif /* __HEXAGON_ARCH___ >= 60 */ 2386 2387 #if __HVX_ARCH__ >= 60 2388 /* ========================================================================== 2389 Assembly Syntax: Vd32.h=vnormamt(Vu32.h) 2390 C Intrinsic Prototype: HVX_Vector Q6_Vh_vnormamt_Vh(HVX_Vector Vu) 2391 Instruction Type: CVI_VS 2392 Execution Slots: SLOT0123 2393 ========================================================================== */ 2394 2395 #define Q6_Vh_vnormamt_Vh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnormamth)(Vu) 2396 #endif /* __HEXAGON_ARCH___ >= 60 */ 2397 2398 #if __HVX_ARCH__ >= 60 2399 /* ========================================================================== 2400 Assembly Syntax: Vd32.w=vnormamt(Vu32.w) 2401 C Intrinsic Prototype: HVX_Vector Q6_Vw_vnormamt_Vw(HVX_Vector Vu) 2402 Instruction Type: CVI_VS 2403 Execution Slots: SLOT0123 2404 ========================================================================== */ 2405 2406 #define Q6_Vw_vnormamt_Vw(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnormamtw)(Vu) 2407 #endif /* __HEXAGON_ARCH___ >= 60 */ 2408 2409 #if __HVX_ARCH__ >= 60 2410 /* ========================================================================== 2411 Assembly Syntax: Vd32=vnot(Vu32) 2412 C Intrinsic Prototype: HVX_Vector Q6_V_vnot_V(HVX_Vector Vu) 2413 Instruction Type: CVI_VA 2414 Execution Slots: SLOT0123 2415 ========================================================================== */ 2416 2417 #define Q6_V_vnot_V(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnot)(Vu) 2418 #endif /* __HEXAGON_ARCH___ >= 60 */ 2419 2420 #if __HVX_ARCH__ >= 60 2421 /* ========================================================================== 2422 Assembly Syntax: Vd32=vor(Vu32,Vv32) 2423 C Intrinsic Prototype: HVX_Vector Q6_V_vor_VV(HVX_Vector Vu, HVX_Vector Vv) 2424 Instruction Type: CVI_VA 2425 Execution Slots: SLOT0123 2426 ========================================================================== */ 2427 2428 #define Q6_V_vor_VV(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vor)(Vu,Vv) 2429 #endif /* __HEXAGON_ARCH___ >= 60 */ 2430 2431 #if __HVX_ARCH__ >= 60 2432 /* ========================================================================== 2433 Assembly Syntax: Vd32.b=vpacke(Vu32.h,Vv32.h) 2434 C Intrinsic Prototype: HVX_Vector Q6_Vb_vpacke_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2435 Instruction Type: CVI_VP 2436 Execution Slots: SLOT0123 2437 ========================================================================== */ 2438 2439 #define Q6_Vb_vpacke_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackeb)(Vu,Vv) 2440 #endif /* __HEXAGON_ARCH___ >= 60 */ 2441 2442 #if __HVX_ARCH__ >= 60 2443 /* ========================================================================== 2444 Assembly Syntax: Vd32.h=vpacke(Vu32.w,Vv32.w) 2445 C Intrinsic Prototype: HVX_Vector Q6_Vh_vpacke_VwVw(HVX_Vector Vu, HVX_Vector Vv) 2446 Instruction Type: CVI_VP 2447 Execution Slots: SLOT0123 2448 ========================================================================== */ 2449 2450 #define Q6_Vh_vpacke_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackeh)(Vu,Vv) 2451 #endif /* __HEXAGON_ARCH___ >= 60 */ 2452 2453 #if __HVX_ARCH__ >= 60 2454 /* ========================================================================== 2455 Assembly Syntax: Vd32.b=vpack(Vu32.h,Vv32.h):sat 2456 C Intrinsic Prototype: HVX_Vector Q6_Vb_vpack_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 2457 Instruction Type: CVI_VP 2458 Execution Slots: SLOT0123 2459 ========================================================================== */ 2460 2461 #define Q6_Vb_vpack_VhVh_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackhb_sat)(Vu,Vv) 2462 #endif /* __HEXAGON_ARCH___ >= 60 */ 2463 2464 #if __HVX_ARCH__ >= 60 2465 /* ========================================================================== 2466 Assembly Syntax: Vd32.ub=vpack(Vu32.h,Vv32.h):sat 2467 C Intrinsic Prototype: HVX_Vector Q6_Vub_vpack_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 2468 Instruction Type: CVI_VP 2469 Execution Slots: SLOT0123 2470 ========================================================================== */ 2471 2472 #define Q6_Vub_vpack_VhVh_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackhub_sat)(Vu,Vv) 2473 #endif /* __HEXAGON_ARCH___ >= 60 */ 2474 2475 #if __HVX_ARCH__ >= 60 2476 /* ========================================================================== 2477 Assembly Syntax: Vd32.b=vpacko(Vu32.h,Vv32.h) 2478 C Intrinsic Prototype: HVX_Vector Q6_Vb_vpacko_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2479 Instruction Type: CVI_VP 2480 Execution Slots: SLOT0123 2481 ========================================================================== */ 2482 2483 #define Q6_Vb_vpacko_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackob)(Vu,Vv) 2484 #endif /* __HEXAGON_ARCH___ >= 60 */ 2485 2486 #if __HVX_ARCH__ >= 60 2487 /* ========================================================================== 2488 Assembly Syntax: Vd32.h=vpacko(Vu32.w,Vv32.w) 2489 C Intrinsic Prototype: HVX_Vector Q6_Vh_vpacko_VwVw(HVX_Vector Vu, HVX_Vector Vv) 2490 Instruction Type: CVI_VP 2491 Execution Slots: SLOT0123 2492 ========================================================================== */ 2493 2494 #define Q6_Vh_vpacko_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackoh)(Vu,Vv) 2495 #endif /* __HEXAGON_ARCH___ >= 60 */ 2496 2497 #if __HVX_ARCH__ >= 60 2498 /* ========================================================================== 2499 Assembly Syntax: Vd32.h=vpack(Vu32.w,Vv32.w):sat 2500 C Intrinsic Prototype: HVX_Vector Q6_Vh_vpack_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 2501 Instruction Type: CVI_VP 2502 Execution Slots: SLOT0123 2503 ========================================================================== */ 2504 2505 #define Q6_Vh_vpack_VwVw_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackwh_sat)(Vu,Vv) 2506 #endif /* __HEXAGON_ARCH___ >= 60 */ 2507 2508 #if __HVX_ARCH__ >= 60 2509 /* ========================================================================== 2510 Assembly Syntax: Vd32.uh=vpack(Vu32.w,Vv32.w):sat 2511 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vpack_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 2512 Instruction Type: CVI_VP 2513 Execution Slots: SLOT0123 2514 ========================================================================== */ 2515 2516 #define Q6_Vuh_vpack_VwVw_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackwuh_sat)(Vu,Vv) 2517 #endif /* __HEXAGON_ARCH___ >= 60 */ 2518 2519 #if __HVX_ARCH__ >= 60 2520 /* ========================================================================== 2521 Assembly Syntax: Vd32.h=vpopcount(Vu32.h) 2522 C Intrinsic Prototype: HVX_Vector Q6_Vh_vpopcount_Vh(HVX_Vector Vu) 2523 Instruction Type: CVI_VS 2524 Execution Slots: SLOT0123 2525 ========================================================================== */ 2526 2527 #define Q6_Vh_vpopcount_Vh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpopcounth)(Vu) 2528 #endif /* __HEXAGON_ARCH___ >= 60 */ 2529 2530 #if __HVX_ARCH__ >= 60 2531 /* ========================================================================== 2532 Assembly Syntax: Vd32=vrdelta(Vu32,Vv32) 2533 C Intrinsic Prototype: HVX_Vector Q6_V_vrdelta_VV(HVX_Vector Vu, HVX_Vector Vv) 2534 Instruction Type: CVI_VP 2535 Execution Slots: SLOT0123 2536 ========================================================================== */ 2537 2538 #define Q6_V_vrdelta_VV(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrdelta)(Vu,Vv) 2539 #endif /* __HEXAGON_ARCH___ >= 60 */ 2540 2541 #if __HVX_ARCH__ >= 60 2542 /* ========================================================================== 2543 Assembly Syntax: Vd32.w=vrmpy(Vu32.ub,Rt32.b) 2544 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpy_VubRb(HVX_Vector Vu, Word32 Rt) 2545 Instruction Type: CVI_VX 2546 Execution Slots: SLOT23 2547 ========================================================================== */ 2548 2549 #define Q6_Vw_vrmpy_VubRb(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybus)(Vu,Rt) 2550 #endif /* __HEXAGON_ARCH___ >= 60 */ 2551 2552 #if __HVX_ARCH__ >= 60 2553 /* ========================================================================== 2554 Assembly Syntax: Vx32.w+=vrmpy(Vu32.ub,Rt32.b) 2555 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpyacc_VwVubRb(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 2556 Instruction Type: CVI_VX 2557 Execution Slots: SLOT23 2558 ========================================================================== */ 2559 2560 #define Q6_Vw_vrmpyacc_VwVubRb(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybus_acc)(Vx,Vu,Rt) 2561 #endif /* __HEXAGON_ARCH___ >= 60 */ 2562 2563 #if __HVX_ARCH__ >= 60 2564 /* ========================================================================== 2565 Assembly Syntax: Vdd32.w=vrmpy(Vuu32.ub,Rt32.b,#u1) 2566 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vrmpy_WubRbI(HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2567 Instruction Type: CVI_VX_DV 2568 Execution Slots: SLOT23 2569 ========================================================================== */ 2570 2571 #define Q6_Ww_vrmpy_WubRbI(Vuu,Rt,Iu1) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybusi)(Vuu,Rt,Iu1) 2572 #endif /* __HEXAGON_ARCH___ >= 60 */ 2573 2574 #if __HVX_ARCH__ >= 60 2575 /* ========================================================================== 2576 Assembly Syntax: Vxx32.w+=vrmpy(Vuu32.ub,Rt32.b,#u1) 2577 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vrmpyacc_WwWubRbI(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2578 Instruction Type: CVI_VX_DV 2579 Execution Slots: SLOT23 2580 ========================================================================== */ 2581 2582 #define Q6_Ww_vrmpyacc_WwWubRbI(Vxx,Vuu,Rt,Iu1) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybusi_acc)(Vxx,Vuu,Rt,Iu1) 2583 #endif /* __HEXAGON_ARCH___ >= 60 */ 2584 2585 #if __HVX_ARCH__ >= 60 2586 /* ========================================================================== 2587 Assembly Syntax: Vd32.w=vrmpy(Vu32.ub,Vv32.b) 2588 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpy_VubVb(HVX_Vector Vu, HVX_Vector Vv) 2589 Instruction Type: CVI_VX 2590 Execution Slots: SLOT23 2591 ========================================================================== */ 2592 2593 #define Q6_Vw_vrmpy_VubVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybusv)(Vu,Vv) 2594 #endif /* __HEXAGON_ARCH___ >= 60 */ 2595 2596 #if __HVX_ARCH__ >= 60 2597 /* ========================================================================== 2598 Assembly Syntax: Vx32.w+=vrmpy(Vu32.ub,Vv32.b) 2599 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpyacc_VwVubVb(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2600 Instruction Type: CVI_VX 2601 Execution Slots: SLOT23 2602 ========================================================================== */ 2603 2604 #define Q6_Vw_vrmpyacc_VwVubVb(Vx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybusv_acc)(Vx,Vu,Vv) 2605 #endif /* __HEXAGON_ARCH___ >= 60 */ 2606 2607 #if __HVX_ARCH__ >= 60 2608 /* ========================================================================== 2609 Assembly Syntax: Vd32.w=vrmpy(Vu32.b,Vv32.b) 2610 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpy_VbVb(HVX_Vector Vu, HVX_Vector Vv) 2611 Instruction Type: CVI_VX 2612 Execution Slots: SLOT23 2613 ========================================================================== */ 2614 2615 #define Q6_Vw_vrmpy_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybv)(Vu,Vv) 2616 #endif /* __HEXAGON_ARCH___ >= 60 */ 2617 2618 #if __HVX_ARCH__ >= 60 2619 /* ========================================================================== 2620 Assembly Syntax: Vx32.w+=vrmpy(Vu32.b,Vv32.b) 2621 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpyacc_VwVbVb(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2622 Instruction Type: CVI_VX 2623 Execution Slots: SLOT23 2624 ========================================================================== */ 2625 2626 #define Q6_Vw_vrmpyacc_VwVbVb(Vx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybv_acc)(Vx,Vu,Vv) 2627 #endif /* __HEXAGON_ARCH___ >= 60 */ 2628 2629 #if __HVX_ARCH__ >= 60 2630 /* ========================================================================== 2631 Assembly Syntax: Vd32.uw=vrmpy(Vu32.ub,Rt32.ub) 2632 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vrmpy_VubRub(HVX_Vector Vu, Word32 Rt) 2633 Instruction Type: CVI_VX 2634 Execution Slots: SLOT23 2635 ========================================================================== */ 2636 2637 #define Q6_Vuw_vrmpy_VubRub(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyub)(Vu,Rt) 2638 #endif /* __HEXAGON_ARCH___ >= 60 */ 2639 2640 #if __HVX_ARCH__ >= 60 2641 /* ========================================================================== 2642 Assembly Syntax: Vx32.uw+=vrmpy(Vu32.ub,Rt32.ub) 2643 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vrmpyacc_VuwVubRub(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 2644 Instruction Type: CVI_VX 2645 Execution Slots: SLOT23 2646 ========================================================================== */ 2647 2648 #define Q6_Vuw_vrmpyacc_VuwVubRub(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyub_acc)(Vx,Vu,Rt) 2649 #endif /* __HEXAGON_ARCH___ >= 60 */ 2650 2651 #if __HVX_ARCH__ >= 60 2652 /* ========================================================================== 2653 Assembly Syntax: Vdd32.uw=vrmpy(Vuu32.ub,Rt32.ub,#u1) 2654 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vrmpy_WubRubI(HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2655 Instruction Type: CVI_VX_DV 2656 Execution Slots: SLOT23 2657 ========================================================================== */ 2658 2659 #define Q6_Wuw_vrmpy_WubRubI(Vuu,Rt,Iu1) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyubi)(Vuu,Rt,Iu1) 2660 #endif /* __HEXAGON_ARCH___ >= 60 */ 2661 2662 #if __HVX_ARCH__ >= 60 2663 /* ========================================================================== 2664 Assembly Syntax: Vxx32.uw+=vrmpy(Vuu32.ub,Rt32.ub,#u1) 2665 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vrmpyacc_WuwWubRubI(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2666 Instruction Type: CVI_VX_DV 2667 Execution Slots: SLOT23 2668 ========================================================================== */ 2669 2670 #define Q6_Wuw_vrmpyacc_WuwWubRubI(Vxx,Vuu,Rt,Iu1) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyubi_acc)(Vxx,Vuu,Rt,Iu1) 2671 #endif /* __HEXAGON_ARCH___ >= 60 */ 2672 2673 #if __HVX_ARCH__ >= 60 2674 /* ========================================================================== 2675 Assembly Syntax: Vd32.uw=vrmpy(Vu32.ub,Vv32.ub) 2676 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vrmpy_VubVub(HVX_Vector Vu, HVX_Vector Vv) 2677 Instruction Type: CVI_VX 2678 Execution Slots: SLOT23 2679 ========================================================================== */ 2680 2681 #define Q6_Vuw_vrmpy_VubVub(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyubv)(Vu,Vv) 2682 #endif /* __HEXAGON_ARCH___ >= 60 */ 2683 2684 #if __HVX_ARCH__ >= 60 2685 /* ========================================================================== 2686 Assembly Syntax: Vx32.uw+=vrmpy(Vu32.ub,Vv32.ub) 2687 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vrmpyacc_VuwVubVub(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2688 Instruction Type: CVI_VX 2689 Execution Slots: SLOT23 2690 ========================================================================== */ 2691 2692 #define Q6_Vuw_vrmpyacc_VuwVubVub(Vx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyubv_acc)(Vx,Vu,Vv) 2693 #endif /* __HEXAGON_ARCH___ >= 60 */ 2694 2695 #if __HVX_ARCH__ >= 60 2696 /* ========================================================================== 2697 Assembly Syntax: Vd32=vror(Vu32,Rt32) 2698 C Intrinsic Prototype: HVX_Vector Q6_V_vror_VR(HVX_Vector Vu, Word32 Rt) 2699 Instruction Type: CVI_VP 2700 Execution Slots: SLOT0123 2701 ========================================================================== */ 2702 2703 #define Q6_V_vror_VR(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vror)(Vu,Rt) 2704 #endif /* __HEXAGON_ARCH___ >= 60 */ 2705 2706 #if __HVX_ARCH__ >= 60 2707 /* ========================================================================== 2708 Assembly Syntax: Vd32.b=vround(Vu32.h,Vv32.h):sat 2709 C Intrinsic Prototype: HVX_Vector Q6_Vb_vround_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 2710 Instruction Type: CVI_VS 2711 Execution Slots: SLOT0123 2712 ========================================================================== */ 2713 2714 #define Q6_Vb_vround_VhVh_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vroundhb)(Vu,Vv) 2715 #endif /* __HEXAGON_ARCH___ >= 60 */ 2716 2717 #if __HVX_ARCH__ >= 60 2718 /* ========================================================================== 2719 Assembly Syntax: Vd32.ub=vround(Vu32.h,Vv32.h):sat 2720 C Intrinsic Prototype: HVX_Vector Q6_Vub_vround_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 2721 Instruction Type: CVI_VS 2722 Execution Slots: SLOT0123 2723 ========================================================================== */ 2724 2725 #define Q6_Vub_vround_VhVh_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vroundhub)(Vu,Vv) 2726 #endif /* __HEXAGON_ARCH___ >= 60 */ 2727 2728 #if __HVX_ARCH__ >= 60 2729 /* ========================================================================== 2730 Assembly Syntax: Vd32.h=vround(Vu32.w,Vv32.w):sat 2731 C Intrinsic Prototype: HVX_Vector Q6_Vh_vround_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 2732 Instruction Type: CVI_VS 2733 Execution Slots: SLOT0123 2734 ========================================================================== */ 2735 2736 #define Q6_Vh_vround_VwVw_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vroundwh)(Vu,Vv) 2737 #endif /* __HEXAGON_ARCH___ >= 60 */ 2738 2739 #if __HVX_ARCH__ >= 60 2740 /* ========================================================================== 2741 Assembly Syntax: Vd32.uh=vround(Vu32.w,Vv32.w):sat 2742 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vround_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 2743 Instruction Type: CVI_VS 2744 Execution Slots: SLOT0123 2745 ========================================================================== */ 2746 2747 #define Q6_Vuh_vround_VwVw_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vroundwuh)(Vu,Vv) 2748 #endif /* __HEXAGON_ARCH___ >= 60 */ 2749 2750 #if __HVX_ARCH__ >= 60 2751 /* ========================================================================== 2752 Assembly Syntax: Vdd32.uw=vrsad(Vuu32.ub,Rt32.ub,#u1) 2753 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vrsad_WubRubI(HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2754 Instruction Type: CVI_VX_DV 2755 Execution Slots: SLOT23 2756 ========================================================================== */ 2757 2758 #define Q6_Wuw_vrsad_WubRubI(Vuu,Rt,Iu1) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrsadubi)(Vuu,Rt,Iu1) 2759 #endif /* __HEXAGON_ARCH___ >= 60 */ 2760 2761 #if __HVX_ARCH__ >= 60 2762 /* ========================================================================== 2763 Assembly Syntax: Vxx32.uw+=vrsad(Vuu32.ub,Rt32.ub,#u1) 2764 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vrsadacc_WuwWubRubI(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2765 Instruction Type: CVI_VX_DV 2766 Execution Slots: SLOT23 2767 ========================================================================== */ 2768 2769 #define Q6_Wuw_vrsadacc_WuwWubRubI(Vxx,Vuu,Rt,Iu1) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrsadubi_acc)(Vxx,Vuu,Rt,Iu1) 2770 #endif /* __HEXAGON_ARCH___ >= 60 */ 2771 2772 #if __HVX_ARCH__ >= 60 2773 /* ========================================================================== 2774 Assembly Syntax: Vd32.ub=vsat(Vu32.h,Vv32.h) 2775 C Intrinsic Prototype: HVX_Vector Q6_Vub_vsat_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2776 Instruction Type: CVI_VA 2777 Execution Slots: SLOT0123 2778 ========================================================================== */ 2779 2780 #define Q6_Vub_vsat_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsathub)(Vu,Vv) 2781 #endif /* __HEXAGON_ARCH___ >= 60 */ 2782 2783 #if __HVX_ARCH__ >= 60 2784 /* ========================================================================== 2785 Assembly Syntax: Vd32.h=vsat(Vu32.w,Vv32.w) 2786 C Intrinsic Prototype: HVX_Vector Q6_Vh_vsat_VwVw(HVX_Vector Vu, HVX_Vector Vv) 2787 Instruction Type: CVI_VA 2788 Execution Slots: SLOT0123 2789 ========================================================================== */ 2790 2791 #define Q6_Vh_vsat_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsatwh)(Vu,Vv) 2792 #endif /* __HEXAGON_ARCH___ >= 60 */ 2793 2794 #if __HVX_ARCH__ >= 60 2795 /* ========================================================================== 2796 Assembly Syntax: Vdd32.h=vsxt(Vu32.b) 2797 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vsxt_Vb(HVX_Vector Vu) 2798 Instruction Type: CVI_VA_DV 2799 Execution Slots: SLOT0123 2800 ========================================================================== */ 2801 2802 #define Q6_Wh_vsxt_Vb(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsb)(Vu) 2803 #endif /* __HEXAGON_ARCH___ >= 60 */ 2804 2805 #if __HVX_ARCH__ >= 60 2806 /* ========================================================================== 2807 Assembly Syntax: Vdd32.w=vsxt(Vu32.h) 2808 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vsxt_Vh(HVX_Vector Vu) 2809 Instruction Type: CVI_VA_DV 2810 Execution Slots: SLOT0123 2811 ========================================================================== */ 2812 2813 #define Q6_Ww_vsxt_Vh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsh)(Vu) 2814 #endif /* __HEXAGON_ARCH___ >= 60 */ 2815 2816 #if __HVX_ARCH__ >= 60 2817 /* ========================================================================== 2818 Assembly Syntax: Vd32.h=vshuffe(Vu32.h,Vv32.h) 2819 C Intrinsic Prototype: HVX_Vector Q6_Vh_vshuffe_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2820 Instruction Type: CVI_VA 2821 Execution Slots: SLOT0123 2822 ========================================================================== */ 2823 2824 #define Q6_Vh_vshuffe_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshufeh)(Vu,Vv) 2825 #endif /* __HEXAGON_ARCH___ >= 60 */ 2826 2827 #if __HVX_ARCH__ >= 60 2828 /* ========================================================================== 2829 Assembly Syntax: Vd32.b=vshuff(Vu32.b) 2830 C Intrinsic Prototype: HVX_Vector Q6_Vb_vshuff_Vb(HVX_Vector Vu) 2831 Instruction Type: CVI_VP 2832 Execution Slots: SLOT0123 2833 ========================================================================== */ 2834 2835 #define Q6_Vb_vshuff_Vb(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshuffb)(Vu) 2836 #endif /* __HEXAGON_ARCH___ >= 60 */ 2837 2838 #if __HVX_ARCH__ >= 60 2839 /* ========================================================================== 2840 Assembly Syntax: Vd32.b=vshuffe(Vu32.b,Vv32.b) 2841 C Intrinsic Prototype: HVX_Vector Q6_Vb_vshuffe_VbVb(HVX_Vector Vu, HVX_Vector Vv) 2842 Instruction Type: CVI_VA 2843 Execution Slots: SLOT0123 2844 ========================================================================== */ 2845 2846 #define Q6_Vb_vshuffe_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshuffeb)(Vu,Vv) 2847 #endif /* __HEXAGON_ARCH___ >= 60 */ 2848 2849 #if __HVX_ARCH__ >= 60 2850 /* ========================================================================== 2851 Assembly Syntax: Vd32.h=vshuff(Vu32.h) 2852 C Intrinsic Prototype: HVX_Vector Q6_Vh_vshuff_Vh(HVX_Vector Vu) 2853 Instruction Type: CVI_VP 2854 Execution Slots: SLOT0123 2855 ========================================================================== */ 2856 2857 #define Q6_Vh_vshuff_Vh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshuffh)(Vu) 2858 #endif /* __HEXAGON_ARCH___ >= 60 */ 2859 2860 #if __HVX_ARCH__ >= 60 2861 /* ========================================================================== 2862 Assembly Syntax: Vd32.b=vshuffo(Vu32.b,Vv32.b) 2863 C Intrinsic Prototype: HVX_Vector Q6_Vb_vshuffo_VbVb(HVX_Vector Vu, HVX_Vector Vv) 2864 Instruction Type: CVI_VA 2865 Execution Slots: SLOT0123 2866 ========================================================================== */ 2867 2868 #define Q6_Vb_vshuffo_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshuffob)(Vu,Vv) 2869 #endif /* __HEXAGON_ARCH___ >= 60 */ 2870 2871 #if __HVX_ARCH__ >= 60 2872 /* ========================================================================== 2873 Assembly Syntax: Vdd32=vshuff(Vu32,Vv32,Rt8) 2874 C Intrinsic Prototype: HVX_VectorPair Q6_W_vshuff_VVR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 2875 Instruction Type: CVI_VP_VS 2876 Execution Slots: SLOT0123 2877 ========================================================================== */ 2878 2879 #define Q6_W_vshuff_VVR(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshuffvdd)(Vu,Vv,Rt) 2880 #endif /* __HEXAGON_ARCH___ >= 60 */ 2881 2882 #if __HVX_ARCH__ >= 60 2883 /* ========================================================================== 2884 Assembly Syntax: Vdd32.b=vshuffoe(Vu32.b,Vv32.b) 2885 C Intrinsic Prototype: HVX_VectorPair Q6_Wb_vshuffoe_VbVb(HVX_Vector Vu, HVX_Vector Vv) 2886 Instruction Type: CVI_VA_DV 2887 Execution Slots: SLOT0123 2888 ========================================================================== */ 2889 2890 #define Q6_Wb_vshuffoe_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshufoeb)(Vu,Vv) 2891 #endif /* __HEXAGON_ARCH___ >= 60 */ 2892 2893 #if __HVX_ARCH__ >= 60 2894 /* ========================================================================== 2895 Assembly Syntax: Vdd32.h=vshuffoe(Vu32.h,Vv32.h) 2896 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vshuffoe_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2897 Instruction Type: CVI_VA_DV 2898 Execution Slots: SLOT0123 2899 ========================================================================== */ 2900 2901 #define Q6_Wh_vshuffoe_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshufoeh)(Vu,Vv) 2902 #endif /* __HEXAGON_ARCH___ >= 60 */ 2903 2904 #if __HVX_ARCH__ >= 60 2905 /* ========================================================================== 2906 Assembly Syntax: Vd32.h=vshuffo(Vu32.h,Vv32.h) 2907 C Intrinsic Prototype: HVX_Vector Q6_Vh_vshuffo_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2908 Instruction Type: CVI_VA 2909 Execution Slots: SLOT0123 2910 ========================================================================== */ 2911 2912 #define Q6_Vh_vshuffo_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshufoh)(Vu,Vv) 2913 #endif /* __HEXAGON_ARCH___ >= 60 */ 2914 2915 #if __HVX_ARCH__ >= 60 2916 /* ========================================================================== 2917 Assembly Syntax: Vd32.b=vsub(Vu32.b,Vv32.b) 2918 C Intrinsic Prototype: HVX_Vector Q6_Vb_vsub_VbVb(HVX_Vector Vu, HVX_Vector Vv) 2919 Instruction Type: CVI_VA 2920 Execution Slots: SLOT0123 2921 ========================================================================== */ 2922 2923 #define Q6_Vb_vsub_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubb)(Vu,Vv) 2924 #endif /* __HEXAGON_ARCH___ >= 60 */ 2925 2926 #if __HVX_ARCH__ >= 60 2927 /* ========================================================================== 2928 Assembly Syntax: Vdd32.b=vsub(Vuu32.b,Vvv32.b) 2929 C Intrinsic Prototype: HVX_VectorPair Q6_Wb_vsub_WbWb(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 2930 Instruction Type: CVI_VA_DV 2931 Execution Slots: SLOT0123 2932 ========================================================================== */ 2933 2934 #define Q6_Wb_vsub_WbWb(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubb_dv)(Vuu,Vvv) 2935 #endif /* __HEXAGON_ARCH___ >= 60 */ 2936 2937 #if __HVX_ARCH__ >= 60 2938 /* ========================================================================== 2939 Assembly Syntax: if (!Qv4) Vx32.b-=Vu32.b 2940 C Intrinsic Prototype: HVX_Vector Q6_Vb_condnac_QnVbVb(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 2941 Instruction Type: CVI_VA 2942 Execution Slots: SLOT0123 2943 ========================================================================== */ 2944 2945 #define Q6_Vb_condnac_QnVbVb(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubbnq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 2946 #endif /* __HEXAGON_ARCH___ >= 60 */ 2947 2948 #if __HVX_ARCH__ >= 60 2949 /* ========================================================================== 2950 Assembly Syntax: if (Qv4) Vx32.b-=Vu32.b 2951 C Intrinsic Prototype: HVX_Vector Q6_Vb_condnac_QVbVb(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 2952 Instruction Type: CVI_VA 2953 Execution Slots: SLOT0123 2954 ========================================================================== */ 2955 2956 #define Q6_Vb_condnac_QVbVb(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubbq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 2957 #endif /* __HEXAGON_ARCH___ >= 60 */ 2958 2959 #if __HVX_ARCH__ >= 60 2960 /* ========================================================================== 2961 Assembly Syntax: Vd32.h=vsub(Vu32.h,Vv32.h) 2962 C Intrinsic Prototype: HVX_Vector Q6_Vh_vsub_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2963 Instruction Type: CVI_VA 2964 Execution Slots: SLOT0123 2965 ========================================================================== */ 2966 2967 #define Q6_Vh_vsub_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubh)(Vu,Vv) 2968 #endif /* __HEXAGON_ARCH___ >= 60 */ 2969 2970 #if __HVX_ARCH__ >= 60 2971 /* ========================================================================== 2972 Assembly Syntax: Vdd32.h=vsub(Vuu32.h,Vvv32.h) 2973 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vsub_WhWh(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 2974 Instruction Type: CVI_VA_DV 2975 Execution Slots: SLOT0123 2976 ========================================================================== */ 2977 2978 #define Q6_Wh_vsub_WhWh(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubh_dv)(Vuu,Vvv) 2979 #endif /* __HEXAGON_ARCH___ >= 60 */ 2980 2981 #if __HVX_ARCH__ >= 60 2982 /* ========================================================================== 2983 Assembly Syntax: if (!Qv4) Vx32.h-=Vu32.h 2984 C Intrinsic Prototype: HVX_Vector Q6_Vh_condnac_QnVhVh(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 2985 Instruction Type: CVI_VA 2986 Execution Slots: SLOT0123 2987 ========================================================================== */ 2988 2989 #define Q6_Vh_condnac_QnVhVh(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubhnq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 2990 #endif /* __HEXAGON_ARCH___ >= 60 */ 2991 2992 #if __HVX_ARCH__ >= 60 2993 /* ========================================================================== 2994 Assembly Syntax: if (Qv4) Vx32.h-=Vu32.h 2995 C Intrinsic Prototype: HVX_Vector Q6_Vh_condnac_QVhVh(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 2996 Instruction Type: CVI_VA 2997 Execution Slots: SLOT0123 2998 ========================================================================== */ 2999 3000 #define Q6_Vh_condnac_QVhVh(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubhq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 3001 #endif /* __HEXAGON_ARCH___ >= 60 */ 3002 3003 #if __HVX_ARCH__ >= 60 3004 /* ========================================================================== 3005 Assembly Syntax: Vd32.h=vsub(Vu32.h,Vv32.h):sat 3006 C Intrinsic Prototype: HVX_Vector Q6_Vh_vsub_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 3007 Instruction Type: CVI_VA 3008 Execution Slots: SLOT0123 3009 ========================================================================== */ 3010 3011 #define Q6_Vh_vsub_VhVh_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubhsat)(Vu,Vv) 3012 #endif /* __HEXAGON_ARCH___ >= 60 */ 3013 3014 #if __HVX_ARCH__ >= 60 3015 /* ========================================================================== 3016 Assembly Syntax: Vdd32.h=vsub(Vuu32.h,Vvv32.h):sat 3017 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vsub_WhWh_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3018 Instruction Type: CVI_VA_DV 3019 Execution Slots: SLOT0123 3020 ========================================================================== */ 3021 3022 #define Q6_Wh_vsub_WhWh_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubhsat_dv)(Vuu,Vvv) 3023 #endif /* __HEXAGON_ARCH___ >= 60 */ 3024 3025 #if __HVX_ARCH__ >= 60 3026 /* ========================================================================== 3027 Assembly Syntax: Vdd32.w=vsub(Vu32.h,Vv32.h) 3028 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vsub_VhVh(HVX_Vector Vu, HVX_Vector Vv) 3029 Instruction Type: CVI_VX_DV 3030 Execution Slots: SLOT23 3031 ========================================================================== */ 3032 3033 #define Q6_Ww_vsub_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubhw)(Vu,Vv) 3034 #endif /* __HEXAGON_ARCH___ >= 60 */ 3035 3036 #if __HVX_ARCH__ >= 60 3037 /* ========================================================================== 3038 Assembly Syntax: Vdd32.h=vsub(Vu32.ub,Vv32.ub) 3039 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vsub_VubVub(HVX_Vector Vu, HVX_Vector Vv) 3040 Instruction Type: CVI_VX_DV 3041 Execution Slots: SLOT23 3042 ========================================================================== */ 3043 3044 #define Q6_Wh_vsub_VubVub(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsububh)(Vu,Vv) 3045 #endif /* __HEXAGON_ARCH___ >= 60 */ 3046 3047 #if __HVX_ARCH__ >= 60 3048 /* ========================================================================== 3049 Assembly Syntax: Vd32.ub=vsub(Vu32.ub,Vv32.ub):sat 3050 C Intrinsic Prototype: HVX_Vector Q6_Vub_vsub_VubVub_sat(HVX_Vector Vu, HVX_Vector Vv) 3051 Instruction Type: CVI_VA 3052 Execution Slots: SLOT0123 3053 ========================================================================== */ 3054 3055 #define Q6_Vub_vsub_VubVub_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsububsat)(Vu,Vv) 3056 #endif /* __HEXAGON_ARCH___ >= 60 */ 3057 3058 #if __HVX_ARCH__ >= 60 3059 /* ========================================================================== 3060 Assembly Syntax: Vdd32.ub=vsub(Vuu32.ub,Vvv32.ub):sat 3061 C Intrinsic Prototype: HVX_VectorPair Q6_Wub_vsub_WubWub_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3062 Instruction Type: CVI_VA_DV 3063 Execution Slots: SLOT0123 3064 ========================================================================== */ 3065 3066 #define Q6_Wub_vsub_WubWub_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsububsat_dv)(Vuu,Vvv) 3067 #endif /* __HEXAGON_ARCH___ >= 60 */ 3068 3069 #if __HVX_ARCH__ >= 60 3070 /* ========================================================================== 3071 Assembly Syntax: Vd32.uh=vsub(Vu32.uh,Vv32.uh):sat 3072 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vsub_VuhVuh_sat(HVX_Vector Vu, HVX_Vector Vv) 3073 Instruction Type: CVI_VA 3074 Execution Slots: SLOT0123 3075 ========================================================================== */ 3076 3077 #define Q6_Vuh_vsub_VuhVuh_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubuhsat)(Vu,Vv) 3078 #endif /* __HEXAGON_ARCH___ >= 60 */ 3079 3080 #if __HVX_ARCH__ >= 60 3081 /* ========================================================================== 3082 Assembly Syntax: Vdd32.uh=vsub(Vuu32.uh,Vvv32.uh):sat 3083 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vsub_WuhWuh_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3084 Instruction Type: CVI_VA_DV 3085 Execution Slots: SLOT0123 3086 ========================================================================== */ 3087 3088 #define Q6_Wuh_vsub_WuhWuh_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubuhsat_dv)(Vuu,Vvv) 3089 #endif /* __HEXAGON_ARCH___ >= 60 */ 3090 3091 #if __HVX_ARCH__ >= 60 3092 /* ========================================================================== 3093 Assembly Syntax: Vdd32.w=vsub(Vu32.uh,Vv32.uh) 3094 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vsub_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 3095 Instruction Type: CVI_VX_DV 3096 Execution Slots: SLOT23 3097 ========================================================================== */ 3098 3099 #define Q6_Ww_vsub_VuhVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubuhw)(Vu,Vv) 3100 #endif /* __HEXAGON_ARCH___ >= 60 */ 3101 3102 #if __HVX_ARCH__ >= 60 3103 /* ========================================================================== 3104 Assembly Syntax: Vd32.w=vsub(Vu32.w,Vv32.w) 3105 C Intrinsic Prototype: HVX_Vector Q6_Vw_vsub_VwVw(HVX_Vector Vu, HVX_Vector Vv) 3106 Instruction Type: CVI_VA 3107 Execution Slots: SLOT0123 3108 ========================================================================== */ 3109 3110 #define Q6_Vw_vsub_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubw)(Vu,Vv) 3111 #endif /* __HEXAGON_ARCH___ >= 60 */ 3112 3113 #if __HVX_ARCH__ >= 60 3114 /* ========================================================================== 3115 Assembly Syntax: Vdd32.w=vsub(Vuu32.w,Vvv32.w) 3116 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vsub_WwWw(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3117 Instruction Type: CVI_VA_DV 3118 Execution Slots: SLOT0123 3119 ========================================================================== */ 3120 3121 #define Q6_Ww_vsub_WwWw(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubw_dv)(Vuu,Vvv) 3122 #endif /* __HEXAGON_ARCH___ >= 60 */ 3123 3124 #if __HVX_ARCH__ >= 60 3125 /* ========================================================================== 3126 Assembly Syntax: if (!Qv4) Vx32.w-=Vu32.w 3127 C Intrinsic Prototype: HVX_Vector Q6_Vw_condnac_QnVwVw(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 3128 Instruction Type: CVI_VA 3129 Execution Slots: SLOT0123 3130 ========================================================================== */ 3131 3132 #define Q6_Vw_condnac_QnVwVw(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubwnq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 3133 #endif /* __HEXAGON_ARCH___ >= 60 */ 3134 3135 #if __HVX_ARCH__ >= 60 3136 /* ========================================================================== 3137 Assembly Syntax: if (Qv4) Vx32.w-=Vu32.w 3138 C Intrinsic Prototype: HVX_Vector Q6_Vw_condnac_QVwVw(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 3139 Instruction Type: CVI_VA 3140 Execution Slots: SLOT0123 3141 ========================================================================== */ 3142 3143 #define Q6_Vw_condnac_QVwVw(Qv,Vx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubwq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vx,Vu) 3144 #endif /* __HEXAGON_ARCH___ >= 60 */ 3145 3146 #if __HVX_ARCH__ >= 60 3147 /* ========================================================================== 3148 Assembly Syntax: Vd32.w=vsub(Vu32.w,Vv32.w):sat 3149 C Intrinsic Prototype: HVX_Vector Q6_Vw_vsub_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 3150 Instruction Type: CVI_VA 3151 Execution Slots: SLOT0123 3152 ========================================================================== */ 3153 3154 #define Q6_Vw_vsub_VwVw_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubwsat)(Vu,Vv) 3155 #endif /* __HEXAGON_ARCH___ >= 60 */ 3156 3157 #if __HVX_ARCH__ >= 60 3158 /* ========================================================================== 3159 Assembly Syntax: Vdd32.w=vsub(Vuu32.w,Vvv32.w):sat 3160 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vsub_WwWw_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3161 Instruction Type: CVI_VA_DV 3162 Execution Slots: SLOT0123 3163 ========================================================================== */ 3164 3165 #define Q6_Ww_vsub_WwWw_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubwsat_dv)(Vuu,Vvv) 3166 #endif /* __HEXAGON_ARCH___ >= 60 */ 3167 3168 #if __HVX_ARCH__ >= 60 3169 /* ========================================================================== 3170 Assembly Syntax: Vdd32=vswap(Qt4,Vu32,Vv32) 3171 C Intrinsic Prototype: HVX_VectorPair Q6_W_vswap_QVV(HVX_VectorPred Qt, HVX_Vector Vu, HVX_Vector Vv) 3172 Instruction Type: CVI_VA_DV 3173 Execution Slots: SLOT0123 3174 ========================================================================== */ 3175 3176 #define Q6_W_vswap_QVV(Qt,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vswap)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qt),-1),Vu,Vv) 3177 #endif /* __HEXAGON_ARCH___ >= 60 */ 3178 3179 #if __HVX_ARCH__ >= 60 3180 /* ========================================================================== 3181 Assembly Syntax: Vdd32.h=vtmpy(Vuu32.b,Rt32.b) 3182 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vtmpy_WbRb(HVX_VectorPair Vuu, Word32 Rt) 3183 Instruction Type: CVI_VX_DV 3184 Execution Slots: SLOT23 3185 ========================================================================== */ 3186 3187 #define Q6_Wh_vtmpy_WbRb(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpyb)(Vuu,Rt) 3188 #endif /* __HEXAGON_ARCH___ >= 60 */ 3189 3190 #if __HVX_ARCH__ >= 60 3191 /* ========================================================================== 3192 Assembly Syntax: Vxx32.h+=vtmpy(Vuu32.b,Rt32.b) 3193 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vtmpyacc_WhWbRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 3194 Instruction Type: CVI_VX_DV 3195 Execution Slots: SLOT23 3196 ========================================================================== */ 3197 3198 #define Q6_Wh_vtmpyacc_WhWbRb(Vxx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpyb_acc)(Vxx,Vuu,Rt) 3199 #endif /* __HEXAGON_ARCH___ >= 60 */ 3200 3201 #if __HVX_ARCH__ >= 60 3202 /* ========================================================================== 3203 Assembly Syntax: Vdd32.h=vtmpy(Vuu32.ub,Rt32.b) 3204 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vtmpy_WubRb(HVX_VectorPair Vuu, Word32 Rt) 3205 Instruction Type: CVI_VX_DV 3206 Execution Slots: SLOT23 3207 ========================================================================== */ 3208 3209 #define Q6_Wh_vtmpy_WubRb(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpybus)(Vuu,Rt) 3210 #endif /* __HEXAGON_ARCH___ >= 60 */ 3211 3212 #if __HVX_ARCH__ >= 60 3213 /* ========================================================================== 3214 Assembly Syntax: Vxx32.h+=vtmpy(Vuu32.ub,Rt32.b) 3215 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vtmpyacc_WhWubRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 3216 Instruction Type: CVI_VX_DV 3217 Execution Slots: SLOT23 3218 ========================================================================== */ 3219 3220 #define Q6_Wh_vtmpyacc_WhWubRb(Vxx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpybus_acc)(Vxx,Vuu,Rt) 3221 #endif /* __HEXAGON_ARCH___ >= 60 */ 3222 3223 #if __HVX_ARCH__ >= 60 3224 /* ========================================================================== 3225 Assembly Syntax: Vdd32.w=vtmpy(Vuu32.h,Rt32.b) 3226 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vtmpy_WhRb(HVX_VectorPair Vuu, Word32 Rt) 3227 Instruction Type: CVI_VX_DV 3228 Execution Slots: SLOT23 3229 ========================================================================== */ 3230 3231 #define Q6_Ww_vtmpy_WhRb(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpyhb)(Vuu,Rt) 3232 #endif /* __HEXAGON_ARCH___ >= 60 */ 3233 3234 #if __HVX_ARCH__ >= 60 3235 /* ========================================================================== 3236 Assembly Syntax: Vxx32.w+=vtmpy(Vuu32.h,Rt32.b) 3237 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vtmpyacc_WwWhRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 3238 Instruction Type: CVI_VX_DV 3239 Execution Slots: SLOT23 3240 ========================================================================== */ 3241 3242 #define Q6_Ww_vtmpyacc_WwWhRb(Vxx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpyhb_acc)(Vxx,Vuu,Rt) 3243 #endif /* __HEXAGON_ARCH___ >= 60 */ 3244 3245 #if __HVX_ARCH__ >= 60 3246 /* ========================================================================== 3247 Assembly Syntax: Vdd32.h=vunpack(Vu32.b) 3248 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vunpack_Vb(HVX_Vector Vu) 3249 Instruction Type: CVI_VP_VS 3250 Execution Slots: SLOT0123 3251 ========================================================================== */ 3252 3253 #define Q6_Wh_vunpack_Vb(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackb)(Vu) 3254 #endif /* __HEXAGON_ARCH___ >= 60 */ 3255 3256 #if __HVX_ARCH__ >= 60 3257 /* ========================================================================== 3258 Assembly Syntax: Vdd32.w=vunpack(Vu32.h) 3259 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vunpack_Vh(HVX_Vector Vu) 3260 Instruction Type: CVI_VP_VS 3261 Execution Slots: SLOT0123 3262 ========================================================================== */ 3263 3264 #define Q6_Ww_vunpack_Vh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackh)(Vu) 3265 #endif /* __HEXAGON_ARCH___ >= 60 */ 3266 3267 #if __HVX_ARCH__ >= 60 3268 /* ========================================================================== 3269 Assembly Syntax: Vxx32.h|=vunpacko(Vu32.b) 3270 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vunpackoor_WhVb(HVX_VectorPair Vxx, HVX_Vector Vu) 3271 Instruction Type: CVI_VP_VS 3272 Execution Slots: SLOT0123 3273 ========================================================================== */ 3274 3275 #define Q6_Wh_vunpackoor_WhVb(Vxx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackob)(Vxx,Vu) 3276 #endif /* __HEXAGON_ARCH___ >= 60 */ 3277 3278 #if __HVX_ARCH__ >= 60 3279 /* ========================================================================== 3280 Assembly Syntax: Vxx32.w|=vunpacko(Vu32.h) 3281 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vunpackoor_WwVh(HVX_VectorPair Vxx, HVX_Vector Vu) 3282 Instruction Type: CVI_VP_VS 3283 Execution Slots: SLOT0123 3284 ========================================================================== */ 3285 3286 #define Q6_Ww_vunpackoor_WwVh(Vxx,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackoh)(Vxx,Vu) 3287 #endif /* __HEXAGON_ARCH___ >= 60 */ 3288 3289 #if __HVX_ARCH__ >= 60 3290 /* ========================================================================== 3291 Assembly Syntax: Vdd32.uh=vunpack(Vu32.ub) 3292 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vunpack_Vub(HVX_Vector Vu) 3293 Instruction Type: CVI_VP_VS 3294 Execution Slots: SLOT0123 3295 ========================================================================== */ 3296 3297 #define Q6_Wuh_vunpack_Vub(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackub)(Vu) 3298 #endif /* __HEXAGON_ARCH___ >= 60 */ 3299 3300 #if __HVX_ARCH__ >= 60 3301 /* ========================================================================== 3302 Assembly Syntax: Vdd32.uw=vunpack(Vu32.uh) 3303 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vunpack_Vuh(HVX_Vector Vu) 3304 Instruction Type: CVI_VP_VS 3305 Execution Slots: SLOT0123 3306 ========================================================================== */ 3307 3308 #define Q6_Wuw_vunpack_Vuh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackuh)(Vu) 3309 #endif /* __HEXAGON_ARCH___ >= 60 */ 3310 3311 #if __HVX_ARCH__ >= 60 3312 /* ========================================================================== 3313 Assembly Syntax: Vd32=vxor(Vu32,Vv32) 3314 C Intrinsic Prototype: HVX_Vector Q6_V_vxor_VV(HVX_Vector Vu, HVX_Vector Vv) 3315 Instruction Type: CVI_VA 3316 Execution Slots: SLOT0123 3317 ========================================================================== */ 3318 3319 #define Q6_V_vxor_VV(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vxor)(Vu,Vv) 3320 #endif /* __HEXAGON_ARCH___ >= 60 */ 3321 3322 #if __HVX_ARCH__ >= 60 3323 /* ========================================================================== 3324 Assembly Syntax: Vdd32.uh=vzxt(Vu32.ub) 3325 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vzxt_Vub(HVX_Vector Vu) 3326 Instruction Type: CVI_VA_DV 3327 Execution Slots: SLOT0123 3328 ========================================================================== */ 3329 3330 #define Q6_Wuh_vzxt_Vub(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vzb)(Vu) 3331 #endif /* __HEXAGON_ARCH___ >= 60 */ 3332 3333 #if __HVX_ARCH__ >= 60 3334 /* ========================================================================== 3335 Assembly Syntax: Vdd32.uw=vzxt(Vu32.uh) 3336 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vzxt_Vuh(HVX_Vector Vu) 3337 Instruction Type: CVI_VA_DV 3338 Execution Slots: SLOT0123 3339 ========================================================================== */ 3340 3341 #define Q6_Wuw_vzxt_Vuh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vzh)(Vu) 3342 #endif /* __HEXAGON_ARCH___ >= 60 */ 3343 3344 #if __HVX_ARCH__ >= 62 3345 /* ========================================================================== 3346 Assembly Syntax: Vd32.b=vsplat(Rt32) 3347 C Intrinsic Prototype: HVX_Vector Q6_Vb_vsplat_R(Word32 Rt) 3348 Instruction Type: CVI_VX_LATE 3349 Execution Slots: SLOT23 3350 ========================================================================== */ 3351 3352 #define Q6_Vb_vsplat_R(Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_lvsplatb)(Rt) 3353 #endif /* __HEXAGON_ARCH___ >= 62 */ 3354 3355 #if __HVX_ARCH__ >= 62 3356 /* ========================================================================== 3357 Assembly Syntax: Vd32.h=vsplat(Rt32) 3358 C Intrinsic Prototype: HVX_Vector Q6_Vh_vsplat_R(Word32 Rt) 3359 Instruction Type: CVI_VX_LATE 3360 Execution Slots: SLOT23 3361 ========================================================================== */ 3362 3363 #define Q6_Vh_vsplat_R(Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_lvsplath)(Rt) 3364 #endif /* __HEXAGON_ARCH___ >= 62 */ 3365 3366 #if __HVX_ARCH__ >= 62 3367 /* ========================================================================== 3368 Assembly Syntax: Qd4=vsetq2(Rt32) 3369 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vsetq2_R(Word32 Rt) 3370 Instruction Type: CVI_VP 3371 Execution Slots: SLOT0123 3372 ========================================================================== */ 3373 3374 #define Q6_Q_vsetq2_R(Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_scalar2v2)(Rt)),-1) 3375 #endif /* __HEXAGON_ARCH___ >= 62 */ 3376 3377 #if __HVX_ARCH__ >= 62 3378 /* ========================================================================== 3379 Assembly Syntax: Qd4.b=vshuffe(Qs4.h,Qt4.h) 3380 C Intrinsic Prototype: HVX_VectorPred Q6_Qb_vshuffe_QhQh(HVX_VectorPred Qs, HVX_VectorPred Qt) 3381 Instruction Type: CVI_VA_DV 3382 Execution Slots: SLOT0123 3383 ========================================================================== */ 3384 3385 #define Q6_Qb_vshuffe_QhQh(Qs,Qt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_shuffeqh)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qt),-1))),-1) 3386 #endif /* __HEXAGON_ARCH___ >= 62 */ 3387 3388 #if __HVX_ARCH__ >= 62 3389 /* ========================================================================== 3390 Assembly Syntax: Qd4.h=vshuffe(Qs4.w,Qt4.w) 3391 C Intrinsic Prototype: HVX_VectorPred Q6_Qh_vshuffe_QwQw(HVX_VectorPred Qs, HVX_VectorPred Qt) 3392 Instruction Type: CVI_VA_DV 3393 Execution Slots: SLOT0123 3394 ========================================================================== */ 3395 3396 #define Q6_Qh_vshuffe_QwQw(Qs,Qt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_shuffeqw)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qt),-1))),-1) 3397 #endif /* __HEXAGON_ARCH___ >= 62 */ 3398 3399 #if __HVX_ARCH__ >= 62 3400 /* ========================================================================== 3401 Assembly Syntax: Vd32.b=vadd(Vu32.b,Vv32.b):sat 3402 C Intrinsic Prototype: HVX_Vector Q6_Vb_vadd_VbVb_sat(HVX_Vector Vu, HVX_Vector Vv) 3403 Instruction Type: CVI_VA 3404 Execution Slots: SLOT0123 3405 ========================================================================== */ 3406 3407 #define Q6_Vb_vadd_VbVb_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddbsat)(Vu,Vv) 3408 #endif /* __HEXAGON_ARCH___ >= 62 */ 3409 3410 #if __HVX_ARCH__ >= 62 3411 /* ========================================================================== 3412 Assembly Syntax: Vdd32.b=vadd(Vuu32.b,Vvv32.b):sat 3413 C Intrinsic Prototype: HVX_VectorPair Q6_Wb_vadd_WbWb_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3414 Instruction Type: CVI_VA_DV 3415 Execution Slots: SLOT0123 3416 ========================================================================== */ 3417 3418 #define Q6_Wb_vadd_WbWb_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddbsat_dv)(Vuu,Vvv) 3419 #endif /* __HEXAGON_ARCH___ >= 62 */ 3420 3421 #if __HVX_ARCH__ >= 62 3422 /* ========================================================================== 3423 Assembly Syntax: Vd32.w=vadd(Vu32.w,Vv32.w,Qx4):carry 3424 C Intrinsic Prototype: HVX_Vector Q6_Vw_vadd_VwVwQ_carry(HVX_Vector Vu, HVX_Vector Vv, HVX_VectorPred* Qx) 3425 Instruction Type: CVI_VA 3426 Execution Slots: SLOT0123 3427 ========================================================================== */ 3428 3429 #define Q6_Vw_vadd_VwVwQ_carry(Vu,Vv,Qx) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddcarry)(Vu,Vv,Qx) 3430 #endif /* __HEXAGON_ARCH___ >= 62 */ 3431 3432 #if __HVX_ARCH__ >= 62 3433 /* ========================================================================== 3434 Assembly Syntax: Vd32.h=vadd(vclb(Vu32.h),Vv32.h) 3435 C Intrinsic Prototype: HVX_Vector Q6_Vh_vadd_vclb_VhVh(HVX_Vector Vu, HVX_Vector Vv) 3436 Instruction Type: CVI_VS 3437 Execution Slots: SLOT0123 3438 ========================================================================== */ 3439 3440 #define Q6_Vh_vadd_vclb_VhVh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddclbh)(Vu,Vv) 3441 #endif /* __HEXAGON_ARCH___ >= 62 */ 3442 3443 #if __HVX_ARCH__ >= 62 3444 /* ========================================================================== 3445 Assembly Syntax: Vd32.w=vadd(vclb(Vu32.w),Vv32.w) 3446 C Intrinsic Prototype: HVX_Vector Q6_Vw_vadd_vclb_VwVw(HVX_Vector Vu, HVX_Vector Vv) 3447 Instruction Type: CVI_VS 3448 Execution Slots: SLOT0123 3449 ========================================================================== */ 3450 3451 #define Q6_Vw_vadd_vclb_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddclbw)(Vu,Vv) 3452 #endif /* __HEXAGON_ARCH___ >= 62 */ 3453 3454 #if __HVX_ARCH__ >= 62 3455 /* ========================================================================== 3456 Assembly Syntax: Vxx32.w+=vadd(Vu32.h,Vv32.h) 3457 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vaddacc_WwVhVh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 3458 Instruction Type: CVI_VX_DV 3459 Execution Slots: SLOT23 3460 ========================================================================== */ 3461 3462 #define Q6_Ww_vaddacc_WwVhVh(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhw_acc)(Vxx,Vu,Vv) 3463 #endif /* __HEXAGON_ARCH___ >= 62 */ 3464 3465 #if __HVX_ARCH__ >= 62 3466 /* ========================================================================== 3467 Assembly Syntax: Vxx32.h+=vadd(Vu32.ub,Vv32.ub) 3468 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vaddacc_WhVubVub(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 3469 Instruction Type: CVI_VX_DV 3470 Execution Slots: SLOT23 3471 ========================================================================== */ 3472 3473 #define Q6_Wh_vaddacc_WhVubVub(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddubh_acc)(Vxx,Vu,Vv) 3474 #endif /* __HEXAGON_ARCH___ >= 62 */ 3475 3476 #if __HVX_ARCH__ >= 62 3477 /* ========================================================================== 3478 Assembly Syntax: Vd32.ub=vadd(Vu32.ub,Vv32.b):sat 3479 C Intrinsic Prototype: HVX_Vector Q6_Vub_vadd_VubVb_sat(HVX_Vector Vu, HVX_Vector Vv) 3480 Instruction Type: CVI_VA 3481 Execution Slots: SLOT0123 3482 ========================================================================== */ 3483 3484 #define Q6_Vub_vadd_VubVb_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddububb_sat)(Vu,Vv) 3485 #endif /* __HEXAGON_ARCH___ >= 62 */ 3486 3487 #if __HVX_ARCH__ >= 62 3488 /* ========================================================================== 3489 Assembly Syntax: Vxx32.w+=vadd(Vu32.uh,Vv32.uh) 3490 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vaddacc_WwVuhVuh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 3491 Instruction Type: CVI_VX_DV 3492 Execution Slots: SLOT23 3493 ========================================================================== */ 3494 3495 #define Q6_Ww_vaddacc_WwVuhVuh(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduhw_acc)(Vxx,Vu,Vv) 3496 #endif /* __HEXAGON_ARCH___ >= 62 */ 3497 3498 #if __HVX_ARCH__ >= 62 3499 /* ========================================================================== 3500 Assembly Syntax: Vd32.uw=vadd(Vu32.uw,Vv32.uw):sat 3501 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vadd_VuwVuw_sat(HVX_Vector Vu, HVX_Vector Vv) 3502 Instruction Type: CVI_VA 3503 Execution Slots: SLOT0123 3504 ========================================================================== */ 3505 3506 #define Q6_Vuw_vadd_VuwVuw_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduwsat)(Vu,Vv) 3507 #endif /* __HEXAGON_ARCH___ >= 62 */ 3508 3509 #if __HVX_ARCH__ >= 62 3510 /* ========================================================================== 3511 Assembly Syntax: Vdd32.uw=vadd(Vuu32.uw,Vvv32.uw):sat 3512 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vadd_WuwWuw_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3513 Instruction Type: CVI_VA_DV 3514 Execution Slots: SLOT0123 3515 ========================================================================== */ 3516 3517 #define Q6_Wuw_vadd_WuwWuw_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduwsat_dv)(Vuu,Vvv) 3518 #endif /* __HEXAGON_ARCH___ >= 62 */ 3519 3520 #if __HVX_ARCH__ >= 62 3521 /* ========================================================================== 3522 Assembly Syntax: Vd32=vand(!Qu4,Rt32) 3523 C Intrinsic Prototype: HVX_Vector Q6_V_vand_QnR(HVX_VectorPred Qu, Word32 Rt) 3524 Instruction Type: CVI_VX_LATE 3525 Execution Slots: SLOT23 3526 ========================================================================== */ 3527 3528 #define Q6_V_vand_QnR(Qu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandnqrt)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qu),-1),Rt) 3529 #endif /* __HEXAGON_ARCH___ >= 62 */ 3530 3531 #if __HVX_ARCH__ >= 62 3532 /* ========================================================================== 3533 Assembly Syntax: Vx32|=vand(!Qu4,Rt32) 3534 C Intrinsic Prototype: HVX_Vector Q6_V_vandor_VQnR(HVX_Vector Vx, HVX_VectorPred Qu, Word32 Rt) 3535 Instruction Type: CVI_VX_LATE 3536 Execution Slots: SLOT23 3537 ========================================================================== */ 3538 3539 #define Q6_V_vandor_VQnR(Vx,Qu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandnqrt_acc)(Vx,__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qu),-1),Rt) 3540 #endif /* __HEXAGON_ARCH___ >= 62 */ 3541 3542 #if __HVX_ARCH__ >= 62 3543 /* ========================================================================== 3544 Assembly Syntax: Vd32=vand(!Qv4,Vu32) 3545 C Intrinsic Prototype: HVX_Vector Q6_V_vand_QnV(HVX_VectorPred Qv, HVX_Vector Vu) 3546 Instruction Type: CVI_VA 3547 Execution Slots: SLOT0123 3548 ========================================================================== */ 3549 3550 #define Q6_V_vand_QnV(Qv,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvnqv)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vu) 3551 #endif /* __HEXAGON_ARCH___ >= 62 */ 3552 3553 #if __HVX_ARCH__ >= 62 3554 /* ========================================================================== 3555 Assembly Syntax: Vd32=vand(Qv4,Vu32) 3556 C Intrinsic Prototype: HVX_Vector Q6_V_vand_QV(HVX_VectorPred Qv, HVX_Vector Vu) 3557 Instruction Type: CVI_VA 3558 Execution Slots: SLOT0123 3559 ========================================================================== */ 3560 3561 #define Q6_V_vand_QV(Qv,Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvqv)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1),Vu) 3562 #endif /* __HEXAGON_ARCH___ >= 62 */ 3563 3564 #if __HVX_ARCH__ >= 62 3565 /* ========================================================================== 3566 Assembly Syntax: Vd32.b=vasr(Vu32.h,Vv32.h,Rt8):sat 3567 C Intrinsic Prototype: HVX_Vector Q6_Vb_vasr_VhVhR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3568 Instruction Type: CVI_VS 3569 Execution Slots: SLOT0123 3570 ========================================================================== */ 3571 3572 #define Q6_Vb_vasr_VhVhR_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrhbsat)(Vu,Vv,Rt) 3573 #endif /* __HEXAGON_ARCH___ >= 62 */ 3574 3575 #if __HVX_ARCH__ >= 62 3576 /* ========================================================================== 3577 Assembly Syntax: Vd32.uh=vasr(Vu32.uw,Vv32.uw,Rt8):rnd:sat 3578 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vasr_VuwVuwR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3579 Instruction Type: CVI_VS 3580 Execution Slots: SLOT0123 3581 ========================================================================== */ 3582 3583 #define Q6_Vuh_vasr_VuwVuwR_rnd_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasruwuhrndsat)(Vu,Vv,Rt) 3584 #endif /* __HEXAGON_ARCH___ >= 62 */ 3585 3586 #if __HVX_ARCH__ >= 62 3587 /* ========================================================================== 3588 Assembly Syntax: Vd32.uh=vasr(Vu32.w,Vv32.w,Rt8):rnd:sat 3589 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vasr_VwVwR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3590 Instruction Type: CVI_VS 3591 Execution Slots: SLOT0123 3592 ========================================================================== */ 3593 3594 #define Q6_Vuh_vasr_VwVwR_rnd_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwuhrndsat)(Vu,Vv,Rt) 3595 #endif /* __HEXAGON_ARCH___ >= 62 */ 3596 3597 #if __HVX_ARCH__ >= 62 3598 /* ========================================================================== 3599 Assembly Syntax: Vd32.ub=vlsr(Vu32.ub,Rt32) 3600 C Intrinsic Prototype: HVX_Vector Q6_Vub_vlsr_VubR(HVX_Vector Vu, Word32 Rt) 3601 Instruction Type: CVI_VS 3602 Execution Slots: SLOT0123 3603 ========================================================================== */ 3604 3605 #define Q6_Vub_vlsr_VubR(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlsrb)(Vu,Rt) 3606 #endif /* __HEXAGON_ARCH___ >= 62 */ 3607 3608 #if __HVX_ARCH__ >= 62 3609 /* ========================================================================== 3610 Assembly Syntax: Vd32.b=vlut32(Vu32.b,Vv32.b,Rt8):nomatch 3611 C Intrinsic Prototype: HVX_Vector Q6_Vb_vlut32_VbVbR_nomatch(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3612 Instruction Type: CVI_VP 3613 Execution Slots: SLOT0123 3614 ========================================================================== */ 3615 3616 #define Q6_Vb_vlut32_VbVbR_nomatch(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvvb_nm)(Vu,Vv,Rt) 3617 #endif /* __HEXAGON_ARCH___ >= 62 */ 3618 3619 #if __HVX_ARCH__ >= 62 3620 /* ========================================================================== 3621 Assembly Syntax: Vx32.b|=vlut32(Vu32.b,Vv32.b,#u3) 3622 C Intrinsic Prototype: HVX_Vector Q6_Vb_vlut32or_VbVbVbI(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 3623 Instruction Type: CVI_VP_VS 3624 Execution Slots: SLOT0123 3625 ========================================================================== */ 3626 3627 #define Q6_Vb_vlut32or_VbVbVbI(Vx,Vu,Vv,Iu3) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvvb_oracci)(Vx,Vu,Vv,Iu3) 3628 #endif /* __HEXAGON_ARCH___ >= 62 */ 3629 3630 #if __HVX_ARCH__ >= 62 3631 /* ========================================================================== 3632 Assembly Syntax: Vd32.b=vlut32(Vu32.b,Vv32.b,#u3) 3633 C Intrinsic Prototype: HVX_Vector Q6_Vb_vlut32_VbVbI(HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 3634 Instruction Type: CVI_VP 3635 Execution Slots: SLOT0123 3636 ========================================================================== */ 3637 3638 #define Q6_Vb_vlut32_VbVbI(Vu,Vv,Iu3) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvvbi)(Vu,Vv,Iu3) 3639 #endif /* __HEXAGON_ARCH___ >= 62 */ 3640 3641 #if __HVX_ARCH__ >= 62 3642 /* ========================================================================== 3643 Assembly Syntax: Vdd32.h=vlut16(Vu32.b,Vv32.h,Rt8):nomatch 3644 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vlut16_VbVhR_nomatch(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3645 Instruction Type: CVI_VP_VS 3646 Execution Slots: SLOT0123 3647 ========================================================================== */ 3648 3649 #define Q6_Wh_vlut16_VbVhR_nomatch(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvwh_nm)(Vu,Vv,Rt) 3650 #endif /* __HEXAGON_ARCH___ >= 62 */ 3651 3652 #if __HVX_ARCH__ >= 62 3653 /* ========================================================================== 3654 Assembly Syntax: Vxx32.h|=vlut16(Vu32.b,Vv32.h,#u3) 3655 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vlut16or_WhVbVhI(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 3656 Instruction Type: CVI_VP_VS 3657 Execution Slots: SLOT0123 3658 ========================================================================== */ 3659 3660 #define Q6_Wh_vlut16or_WhVbVhI(Vxx,Vu,Vv,Iu3) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvwh_oracci)(Vxx,Vu,Vv,Iu3) 3661 #endif /* __HEXAGON_ARCH___ >= 62 */ 3662 3663 #if __HVX_ARCH__ >= 62 3664 /* ========================================================================== 3665 Assembly Syntax: Vdd32.h=vlut16(Vu32.b,Vv32.h,#u3) 3666 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vlut16_VbVhI(HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 3667 Instruction Type: CVI_VP_VS 3668 Execution Slots: SLOT0123 3669 ========================================================================== */ 3670 3671 #define Q6_Wh_vlut16_VbVhI(Vu,Vv,Iu3) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvwhi)(Vu,Vv,Iu3) 3672 #endif /* __HEXAGON_ARCH___ >= 62 */ 3673 3674 #if __HVX_ARCH__ >= 62 3675 /* ========================================================================== 3676 Assembly Syntax: Vd32.b=vmax(Vu32.b,Vv32.b) 3677 C Intrinsic Prototype: HVX_Vector Q6_Vb_vmax_VbVb(HVX_Vector Vu, HVX_Vector Vv) 3678 Instruction Type: CVI_VA 3679 Execution Slots: SLOT0123 3680 ========================================================================== */ 3681 3682 #define Q6_Vb_vmax_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaxb)(Vu,Vv) 3683 #endif /* __HEXAGON_ARCH___ >= 62 */ 3684 3685 #if __HVX_ARCH__ >= 62 3686 /* ========================================================================== 3687 Assembly Syntax: Vd32.b=vmin(Vu32.b,Vv32.b) 3688 C Intrinsic Prototype: HVX_Vector Q6_Vb_vmin_VbVb(HVX_Vector Vu, HVX_Vector Vv) 3689 Instruction Type: CVI_VA 3690 Execution Slots: SLOT0123 3691 ========================================================================== */ 3692 3693 #define Q6_Vb_vmin_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vminb)(Vu,Vv) 3694 #endif /* __HEXAGON_ARCH___ >= 62 */ 3695 3696 #if __HVX_ARCH__ >= 62 3697 /* ========================================================================== 3698 Assembly Syntax: Vdd32.w=vmpa(Vuu32.uh,Rt32.b) 3699 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpa_WuhRb(HVX_VectorPair Vuu, Word32 Rt) 3700 Instruction Type: CVI_VX_DV 3701 Execution Slots: SLOT23 3702 ========================================================================== */ 3703 3704 #define Q6_Ww_vmpa_WuhRb(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpauhb)(Vuu,Rt) 3705 #endif /* __HEXAGON_ARCH___ >= 62 */ 3706 3707 #if __HVX_ARCH__ >= 62 3708 /* ========================================================================== 3709 Assembly Syntax: Vxx32.w+=vmpa(Vuu32.uh,Rt32.b) 3710 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpaacc_WwWuhRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 3711 Instruction Type: CVI_VX_DV 3712 Execution Slots: SLOT23 3713 ========================================================================== */ 3714 3715 #define Q6_Ww_vmpaacc_WwWuhRb(Vxx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpauhb_acc)(Vxx,Vuu,Rt) 3716 #endif /* __HEXAGON_ARCH___ >= 62 */ 3717 3718 #if __HVX_ARCH__ >= 62 3719 /* ========================================================================== 3720 Assembly Syntax: Vdd32=vmpye(Vu32.w,Vv32.uh) 3721 C Intrinsic Prototype: HVX_VectorPair Q6_W_vmpye_VwVuh(HVX_Vector Vu, HVX_Vector Vv) 3722 Instruction Type: CVI_VX_DV 3723 Execution Slots: SLOT23 3724 ========================================================================== */ 3725 3726 #define Q6_W_vmpye_VwVuh(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyewuh_64)(Vu,Vv) 3727 #endif /* __HEXAGON_ARCH___ >= 62 */ 3728 3729 #if __HVX_ARCH__ >= 62 3730 /* ========================================================================== 3731 Assembly Syntax: Vd32.w=vmpyi(Vu32.w,Rt32.ub) 3732 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyi_VwRub(HVX_Vector Vu, Word32 Rt) 3733 Instruction Type: CVI_VX 3734 Execution Slots: SLOT23 3735 ========================================================================== */ 3736 3737 #define Q6_Vw_vmpyi_VwRub(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwub)(Vu,Rt) 3738 #endif /* __HEXAGON_ARCH___ >= 62 */ 3739 3740 #if __HVX_ARCH__ >= 62 3741 /* ========================================================================== 3742 Assembly Syntax: Vx32.w+=vmpyi(Vu32.w,Rt32.ub) 3743 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyiacc_VwVwRub(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 3744 Instruction Type: CVI_VX 3745 Execution Slots: SLOT23 3746 ========================================================================== */ 3747 3748 #define Q6_Vw_vmpyiacc_VwVwRub(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwub_acc)(Vx,Vu,Rt) 3749 #endif /* __HEXAGON_ARCH___ >= 62 */ 3750 3751 #if __HVX_ARCH__ >= 62 3752 /* ========================================================================== 3753 Assembly Syntax: Vxx32+=vmpyo(Vu32.w,Vv32.h) 3754 C Intrinsic Prototype: HVX_VectorPair Q6_W_vmpyoacc_WVwVh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 3755 Instruction Type: CVI_VX_DV 3756 Execution Slots: SLOT23 3757 ========================================================================== */ 3758 3759 #define Q6_W_vmpyoacc_WVwVh(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyowh_64_acc)(Vxx,Vu,Vv) 3760 #endif /* __HEXAGON_ARCH___ >= 62 */ 3761 3762 #if __HVX_ARCH__ >= 62 3763 /* ========================================================================== 3764 Assembly Syntax: Vd32.ub=vround(Vu32.uh,Vv32.uh):sat 3765 C Intrinsic Prototype: HVX_Vector Q6_Vub_vround_VuhVuh_sat(HVX_Vector Vu, HVX_Vector Vv) 3766 Instruction Type: CVI_VS 3767 Execution Slots: SLOT0123 3768 ========================================================================== */ 3769 3770 #define Q6_Vub_vround_VuhVuh_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrounduhub)(Vu,Vv) 3771 #endif /* __HEXAGON_ARCH___ >= 62 */ 3772 3773 #if __HVX_ARCH__ >= 62 3774 /* ========================================================================== 3775 Assembly Syntax: Vd32.uh=vround(Vu32.uw,Vv32.uw):sat 3776 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vround_VuwVuw_sat(HVX_Vector Vu, HVX_Vector Vv) 3777 Instruction Type: CVI_VS 3778 Execution Slots: SLOT0123 3779 ========================================================================== */ 3780 3781 #define Q6_Vuh_vround_VuwVuw_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrounduwuh)(Vu,Vv) 3782 #endif /* __HEXAGON_ARCH___ >= 62 */ 3783 3784 #if __HVX_ARCH__ >= 62 3785 /* ========================================================================== 3786 Assembly Syntax: Vd32.uh=vsat(Vu32.uw,Vv32.uw) 3787 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vsat_VuwVuw(HVX_Vector Vu, HVX_Vector Vv) 3788 Instruction Type: CVI_VA 3789 Execution Slots: SLOT0123 3790 ========================================================================== */ 3791 3792 #define Q6_Vuh_vsat_VuwVuw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsatuwuh)(Vu,Vv) 3793 #endif /* __HEXAGON_ARCH___ >= 62 */ 3794 3795 #if __HVX_ARCH__ >= 62 3796 /* ========================================================================== 3797 Assembly Syntax: Vd32.b=vsub(Vu32.b,Vv32.b):sat 3798 C Intrinsic Prototype: HVX_Vector Q6_Vb_vsub_VbVb_sat(HVX_Vector Vu, HVX_Vector Vv) 3799 Instruction Type: CVI_VA 3800 Execution Slots: SLOT0123 3801 ========================================================================== */ 3802 3803 #define Q6_Vb_vsub_VbVb_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubbsat)(Vu,Vv) 3804 #endif /* __HEXAGON_ARCH___ >= 62 */ 3805 3806 #if __HVX_ARCH__ >= 62 3807 /* ========================================================================== 3808 Assembly Syntax: Vdd32.b=vsub(Vuu32.b,Vvv32.b):sat 3809 C Intrinsic Prototype: HVX_VectorPair Q6_Wb_vsub_WbWb_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3810 Instruction Type: CVI_VA_DV 3811 Execution Slots: SLOT0123 3812 ========================================================================== */ 3813 3814 #define Q6_Wb_vsub_WbWb_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubbsat_dv)(Vuu,Vvv) 3815 #endif /* __HEXAGON_ARCH___ >= 62 */ 3816 3817 #if __HVX_ARCH__ >= 62 3818 /* ========================================================================== 3819 Assembly Syntax: Vd32.w=vsub(Vu32.w,Vv32.w,Qx4):carry 3820 C Intrinsic Prototype: HVX_Vector Q6_Vw_vsub_VwVwQ_carry(HVX_Vector Vu, HVX_Vector Vv, HVX_VectorPred* Qx) 3821 Instruction Type: CVI_VA 3822 Execution Slots: SLOT0123 3823 ========================================================================== */ 3824 3825 #define Q6_Vw_vsub_VwVwQ_carry(Vu,Vv,Qx) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubcarry)(Vu,Vv,Qx) 3826 #endif /* __HEXAGON_ARCH___ >= 62 */ 3827 3828 #if __HVX_ARCH__ >= 62 3829 /* ========================================================================== 3830 Assembly Syntax: Vd32.ub=vsub(Vu32.ub,Vv32.b):sat 3831 C Intrinsic Prototype: HVX_Vector Q6_Vub_vsub_VubVb_sat(HVX_Vector Vu, HVX_Vector Vv) 3832 Instruction Type: CVI_VA 3833 Execution Slots: SLOT0123 3834 ========================================================================== */ 3835 3836 #define Q6_Vub_vsub_VubVb_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubububb_sat)(Vu,Vv) 3837 #endif /* __HEXAGON_ARCH___ >= 62 */ 3838 3839 #if __HVX_ARCH__ >= 62 3840 /* ========================================================================== 3841 Assembly Syntax: Vd32.uw=vsub(Vu32.uw,Vv32.uw):sat 3842 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vsub_VuwVuw_sat(HVX_Vector Vu, HVX_Vector Vv) 3843 Instruction Type: CVI_VA 3844 Execution Slots: SLOT0123 3845 ========================================================================== */ 3846 3847 #define Q6_Vuw_vsub_VuwVuw_sat(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubuwsat)(Vu,Vv) 3848 #endif /* __HEXAGON_ARCH___ >= 62 */ 3849 3850 #if __HVX_ARCH__ >= 62 3851 /* ========================================================================== 3852 Assembly Syntax: Vdd32.uw=vsub(Vuu32.uw,Vvv32.uw):sat 3853 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vsub_WuwWuw_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3854 Instruction Type: CVI_VA_DV 3855 Execution Slots: SLOT0123 3856 ========================================================================== */ 3857 3858 #define Q6_Wuw_vsub_WuwWuw_sat(Vuu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubuwsat_dv)(Vuu,Vvv) 3859 #endif /* __HEXAGON_ARCH___ >= 62 */ 3860 3861 #if __HVX_ARCH__ >= 65 3862 /* ========================================================================== 3863 Assembly Syntax: Vd32.b=vabs(Vu32.b) 3864 C Intrinsic Prototype: HVX_Vector Q6_Vb_vabs_Vb(HVX_Vector Vu) 3865 Instruction Type: CVI_VA 3866 Execution Slots: SLOT0123 3867 ========================================================================== */ 3868 3869 #define Q6_Vb_vabs_Vb(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsb)(Vu) 3870 #endif /* __HEXAGON_ARCH___ >= 65 */ 3871 3872 #if __HVX_ARCH__ >= 65 3873 /* ========================================================================== 3874 Assembly Syntax: Vd32.b=vabs(Vu32.b):sat 3875 C Intrinsic Prototype: HVX_Vector Q6_Vb_vabs_Vb_sat(HVX_Vector Vu) 3876 Instruction Type: CVI_VA 3877 Execution Slots: SLOT0123 3878 ========================================================================== */ 3879 3880 #define Q6_Vb_vabs_Vb_sat(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsb_sat)(Vu) 3881 #endif /* __HEXAGON_ARCH___ >= 65 */ 3882 3883 #if __HVX_ARCH__ >= 65 3884 /* ========================================================================== 3885 Assembly Syntax: Vx32.h+=vasl(Vu32.h,Rt32) 3886 C Intrinsic Prototype: HVX_Vector Q6_Vh_vaslacc_VhVhR(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 3887 Instruction Type: CVI_VS 3888 Execution Slots: SLOT0123 3889 ========================================================================== */ 3890 3891 #define Q6_Vh_vaslacc_VhVhR(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslh_acc)(Vx,Vu,Rt) 3892 #endif /* __HEXAGON_ARCH___ >= 65 */ 3893 3894 #if __HVX_ARCH__ >= 65 3895 /* ========================================================================== 3896 Assembly Syntax: Vx32.h+=vasr(Vu32.h,Rt32) 3897 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasracc_VhVhR(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 3898 Instruction Type: CVI_VS 3899 Execution Slots: SLOT0123 3900 ========================================================================== */ 3901 3902 #define Q6_Vh_vasracc_VhVhR(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrh_acc)(Vx,Vu,Rt) 3903 #endif /* __HEXAGON_ARCH___ >= 65 */ 3904 3905 #if __HVX_ARCH__ >= 65 3906 /* ========================================================================== 3907 Assembly Syntax: Vd32.ub=vasr(Vu32.uh,Vv32.uh,Rt8):rnd:sat 3908 C Intrinsic Prototype: HVX_Vector Q6_Vub_vasr_VuhVuhR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3909 Instruction Type: CVI_VS 3910 Execution Slots: SLOT0123 3911 ========================================================================== */ 3912 3913 #define Q6_Vub_vasr_VuhVuhR_rnd_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasruhubrndsat)(Vu,Vv,Rt) 3914 #endif /* __HEXAGON_ARCH___ >= 65 */ 3915 3916 #if __HVX_ARCH__ >= 65 3917 /* ========================================================================== 3918 Assembly Syntax: Vd32.ub=vasr(Vu32.uh,Vv32.uh,Rt8):sat 3919 C Intrinsic Prototype: HVX_Vector Q6_Vub_vasr_VuhVuhR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3920 Instruction Type: CVI_VS 3921 Execution Slots: SLOT0123 3922 ========================================================================== */ 3923 3924 #define Q6_Vub_vasr_VuhVuhR_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasruhubsat)(Vu,Vv,Rt) 3925 #endif /* __HEXAGON_ARCH___ >= 65 */ 3926 3927 #if __HVX_ARCH__ >= 65 3928 /* ========================================================================== 3929 Assembly Syntax: Vd32.uh=vasr(Vu32.uw,Vv32.uw,Rt8):sat 3930 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vasr_VuwVuwR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3931 Instruction Type: CVI_VS 3932 Execution Slots: SLOT0123 3933 ========================================================================== */ 3934 3935 #define Q6_Vuh_vasr_VuwVuwR_sat(Vu,Vv,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasruwuhsat)(Vu,Vv,Rt) 3936 #endif /* __HEXAGON_ARCH___ >= 65 */ 3937 3938 #if __HVX_ARCH__ >= 65 3939 /* ========================================================================== 3940 Assembly Syntax: Vd32.b=vavg(Vu32.b,Vv32.b) 3941 C Intrinsic Prototype: HVX_Vector Q6_Vb_vavg_VbVb(HVX_Vector Vu, HVX_Vector Vv) 3942 Instruction Type: CVI_VA 3943 Execution Slots: SLOT0123 3944 ========================================================================== */ 3945 3946 #define Q6_Vb_vavg_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgb)(Vu,Vv) 3947 #endif /* __HEXAGON_ARCH___ >= 65 */ 3948 3949 #if __HVX_ARCH__ >= 65 3950 /* ========================================================================== 3951 Assembly Syntax: Vd32.b=vavg(Vu32.b,Vv32.b):rnd 3952 C Intrinsic Prototype: HVX_Vector Q6_Vb_vavg_VbVb_rnd(HVX_Vector Vu, HVX_Vector Vv) 3953 Instruction Type: CVI_VA 3954 Execution Slots: SLOT0123 3955 ========================================================================== */ 3956 3957 #define Q6_Vb_vavg_VbVb_rnd(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgbrnd)(Vu,Vv) 3958 #endif /* __HEXAGON_ARCH___ >= 65 */ 3959 3960 #if __HVX_ARCH__ >= 65 3961 /* ========================================================================== 3962 Assembly Syntax: Vd32.uw=vavg(Vu32.uw,Vv32.uw) 3963 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vavg_VuwVuw(HVX_Vector Vu, HVX_Vector Vv) 3964 Instruction Type: CVI_VA 3965 Execution Slots: SLOT0123 3966 ========================================================================== */ 3967 3968 #define Q6_Vuw_vavg_VuwVuw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavguw)(Vu,Vv) 3969 #endif /* __HEXAGON_ARCH___ >= 65 */ 3970 3971 #if __HVX_ARCH__ >= 65 3972 /* ========================================================================== 3973 Assembly Syntax: Vd32.uw=vavg(Vu32.uw,Vv32.uw):rnd 3974 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vavg_VuwVuw_rnd(HVX_Vector Vu, HVX_Vector Vv) 3975 Instruction Type: CVI_VA 3976 Execution Slots: SLOT0123 3977 ========================================================================== */ 3978 3979 #define Q6_Vuw_vavg_VuwVuw_rnd(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavguwrnd)(Vu,Vv) 3980 #endif /* __HEXAGON_ARCH___ >= 65 */ 3981 3982 #if __HVX_ARCH__ >= 65 3983 /* ========================================================================== 3984 Assembly Syntax: Vdd32=#0 3985 C Intrinsic Prototype: HVX_VectorPair Q6_W_vzero() 3986 Instruction Type: MAPPING 3987 Execution Slots: SLOT0123 3988 ========================================================================== */ 3989 3990 #define Q6_W_vzero() __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdd0)() 3991 #endif /* __HEXAGON_ARCH___ >= 65 */ 3992 3993 #if __HVX_ARCH__ >= 65 3994 /* ========================================================================== 3995 Assembly Syntax: vtmp.h=vgather(Rt32,Mu2,Vv32.h).h 3996 C Intrinsic Prototype: void Q6_vgather_ARMVh(HVX_Vector* Rs, Word32 Rt, Word32 Mu, HVX_Vector Vv) 3997 Instruction Type: CVI_GATHER 3998 Execution Slots: SLOT01 3999 ========================================================================== */ 4000 4001 #define Q6_vgather_ARMVh(Rs,Rt,Mu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermh)(Rs,Rt,Mu,Vv) 4002 #endif /* __HEXAGON_ARCH___ >= 65 */ 4003 4004 #if __HVX_ARCH__ >= 65 4005 /* ========================================================================== 4006 Assembly Syntax: if (Qs4) vtmp.h=vgather(Rt32,Mu2,Vv32.h).h 4007 C Intrinsic Prototype: void Q6_vgather_AQRMVh(HVX_Vector* Rs, HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_Vector Vv) 4008 Instruction Type: CVI_GATHER 4009 Execution Slots: SLOT01 4010 ========================================================================== */ 4011 4012 #define Q6_vgather_AQRMVh(Rs,Qs,Rt,Mu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermhq)(Rs,__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),Rt,Mu,Vv) 4013 #endif /* __HEXAGON_ARCH___ >= 65 */ 4014 4015 #if __HVX_ARCH__ >= 65 4016 /* ========================================================================== 4017 Assembly Syntax: vtmp.h=vgather(Rt32,Mu2,Vvv32.w).h 4018 C Intrinsic Prototype: void Q6_vgather_ARMWw(HVX_Vector* Rs, Word32 Rt, Word32 Mu, HVX_VectorPair Vvv) 4019 Instruction Type: CVI_GATHER_DV 4020 Execution Slots: SLOT01 4021 ========================================================================== */ 4022 4023 #define Q6_vgather_ARMWw(Rs,Rt,Mu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermhw)(Rs,Rt,Mu,Vvv) 4024 #endif /* __HEXAGON_ARCH___ >= 65 */ 4025 4026 #if __HVX_ARCH__ >= 65 4027 /* ========================================================================== 4028 Assembly Syntax: if (Qs4) vtmp.h=vgather(Rt32,Mu2,Vvv32.w).h 4029 C Intrinsic Prototype: void Q6_vgather_AQRMWw(HVX_Vector* Rs, HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_VectorPair Vvv) 4030 Instruction Type: CVI_GATHER_DV 4031 Execution Slots: SLOT01 4032 ========================================================================== */ 4033 4034 #define Q6_vgather_AQRMWw(Rs,Qs,Rt,Mu,Vvv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermhwq)(Rs,__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),Rt,Mu,Vvv) 4035 #endif /* __HEXAGON_ARCH___ >= 65 */ 4036 4037 #if __HVX_ARCH__ >= 65 4038 /* ========================================================================== 4039 Assembly Syntax: vtmp.w=vgather(Rt32,Mu2,Vv32.w).w 4040 C Intrinsic Prototype: void Q6_vgather_ARMVw(HVX_Vector* Rs, Word32 Rt, Word32 Mu, HVX_Vector Vv) 4041 Instruction Type: CVI_GATHER 4042 Execution Slots: SLOT01 4043 ========================================================================== */ 4044 4045 #define Q6_vgather_ARMVw(Rs,Rt,Mu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermw)(Rs,Rt,Mu,Vv) 4046 #endif /* __HEXAGON_ARCH___ >= 65 */ 4047 4048 #if __HVX_ARCH__ >= 65 4049 /* ========================================================================== 4050 Assembly Syntax: if (Qs4) vtmp.w=vgather(Rt32,Mu2,Vv32.w).w 4051 C Intrinsic Prototype: void Q6_vgather_AQRMVw(HVX_Vector* Rs, HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_Vector Vv) 4052 Instruction Type: CVI_GATHER 4053 Execution Slots: SLOT01 4054 ========================================================================== */ 4055 4056 #define Q6_vgather_AQRMVw(Rs,Qs,Rt,Mu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermwq)(Rs,__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),Rt,Mu,Vv) 4057 #endif /* __HEXAGON_ARCH___ >= 65 */ 4058 4059 #if __HVX_ARCH__ >= 65 4060 /* ========================================================================== 4061 Assembly Syntax: Vd32.h=vlut4(Vu32.uh,Rtt32.h) 4062 C Intrinsic Prototype: HVX_Vector Q6_Vh_vlut4_VuhPh(HVX_Vector Vu, Word64 Rtt) 4063 Instruction Type: CVI_VX_DV 4064 Execution Slots: SLOT2 4065 ========================================================================== */ 4066 4067 #define Q6_Vh_vlut4_VuhPh(Vu,Rtt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlut4)(Vu,Rtt) 4068 #endif /* __HEXAGON_ARCH___ >= 65 */ 4069 4070 #if __HVX_ARCH__ >= 65 4071 /* ========================================================================== 4072 Assembly Syntax: Vdd32.h=vmpa(Vuu32.ub,Rt32.ub) 4073 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpa_WubRub(HVX_VectorPair Vuu, Word32 Rt) 4074 Instruction Type: CVI_VX_DV 4075 Execution Slots: SLOT23 4076 ========================================================================== */ 4077 4078 #define Q6_Wh_vmpa_WubRub(Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabuu)(Vuu,Rt) 4079 #endif /* __HEXAGON_ARCH___ >= 65 */ 4080 4081 #if __HVX_ARCH__ >= 65 4082 /* ========================================================================== 4083 Assembly Syntax: Vxx32.h+=vmpa(Vuu32.ub,Rt32.ub) 4084 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpaacc_WhWubRub(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 4085 Instruction Type: CVI_VX_DV 4086 Execution Slots: SLOT23 4087 ========================================================================== */ 4088 4089 #define Q6_Wh_vmpaacc_WhWubRub(Vxx,Vuu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabuu_acc)(Vxx,Vuu,Rt) 4090 #endif /* __HEXAGON_ARCH___ >= 65 */ 4091 4092 #if __HVX_ARCH__ >= 65 4093 /* ========================================================================== 4094 Assembly Syntax: Vx32.h=vmpa(Vx32.h,Vu32.h,Rtt32.h):sat 4095 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpa_VhVhVhPh_sat(HVX_Vector Vx, HVX_Vector Vu, Word64 Rtt) 4096 Instruction Type: CVI_VX_DV 4097 Execution Slots: SLOT2 4098 ========================================================================== */ 4099 4100 #define Q6_Vh_vmpa_VhVhVhPh_sat(Vx,Vu,Rtt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpahhsat)(Vx,Vu,Rtt) 4101 #endif /* __HEXAGON_ARCH___ >= 65 */ 4102 4103 #if __HVX_ARCH__ >= 65 4104 /* ========================================================================== 4105 Assembly Syntax: Vx32.h=vmpa(Vx32.h,Vu32.uh,Rtt32.uh):sat 4106 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpa_VhVhVuhPuh_sat(HVX_Vector Vx, HVX_Vector Vu, Word64 Rtt) 4107 Instruction Type: CVI_VX_DV 4108 Execution Slots: SLOT2 4109 ========================================================================== */ 4110 4111 #define Q6_Vh_vmpa_VhVhVuhPuh_sat(Vx,Vu,Rtt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpauhuhsat)(Vx,Vu,Rtt) 4112 #endif /* __HEXAGON_ARCH___ >= 65 */ 4113 4114 #if __HVX_ARCH__ >= 65 4115 /* ========================================================================== 4116 Assembly Syntax: Vx32.h=vmps(Vx32.h,Vu32.uh,Rtt32.uh):sat 4117 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmps_VhVhVuhPuh_sat(HVX_Vector Vx, HVX_Vector Vu, Word64 Rtt) 4118 Instruction Type: CVI_VX_DV 4119 Execution Slots: SLOT2 4120 ========================================================================== */ 4121 4122 #define Q6_Vh_vmps_VhVhVuhPuh_sat(Vx,Vu,Rtt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpsuhuhsat)(Vx,Vu,Rtt) 4123 #endif /* __HEXAGON_ARCH___ >= 65 */ 4124 4125 #if __HVX_ARCH__ >= 65 4126 /* ========================================================================== 4127 Assembly Syntax: Vxx32.w+=vmpy(Vu32.h,Rt32.h) 4128 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpyacc_WwVhRh(HVX_VectorPair Vxx, HVX_Vector Vu, Word32 Rt) 4129 Instruction Type: CVI_VX_DV 4130 Execution Slots: SLOT23 4131 ========================================================================== */ 4132 4133 #define Q6_Ww_vmpyacc_WwVhRh(Vxx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyh_acc)(Vxx,Vu,Rt) 4134 #endif /* __HEXAGON_ARCH___ >= 65 */ 4135 4136 #if __HVX_ARCH__ >= 65 4137 /* ========================================================================== 4138 Assembly Syntax: Vd32.uw=vmpye(Vu32.uh,Rt32.uh) 4139 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vmpye_VuhRuh(HVX_Vector Vu, Word32 Rt) 4140 Instruction Type: CVI_VX 4141 Execution Slots: SLOT23 4142 ========================================================================== */ 4143 4144 #define Q6_Vuw_vmpye_VuhRuh(Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuhe)(Vu,Rt) 4145 #endif /* __HEXAGON_ARCH___ >= 65 */ 4146 4147 #if __HVX_ARCH__ >= 65 4148 /* ========================================================================== 4149 Assembly Syntax: Vx32.uw+=vmpye(Vu32.uh,Rt32.uh) 4150 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vmpyeacc_VuwVuhRuh(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 4151 Instruction Type: CVI_VX 4152 Execution Slots: SLOT23 4153 ========================================================================== */ 4154 4155 #define Q6_Vuw_vmpyeacc_VuwVuhRuh(Vx,Vu,Rt) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuhe_acc)(Vx,Vu,Rt) 4156 #endif /* __HEXAGON_ARCH___ >= 65 */ 4157 4158 #if __HVX_ARCH__ >= 65 4159 /* ========================================================================== 4160 Assembly Syntax: Vd32.b=vnavg(Vu32.b,Vv32.b) 4161 C Intrinsic Prototype: HVX_Vector Q6_Vb_vnavg_VbVb(HVX_Vector Vu, HVX_Vector Vv) 4162 Instruction Type: CVI_VA 4163 Execution Slots: SLOT0123 4164 ========================================================================== */ 4165 4166 #define Q6_Vb_vnavg_VbVb(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnavgb)(Vu,Vv) 4167 #endif /* __HEXAGON_ARCH___ >= 65 */ 4168 4169 #if __HVX_ARCH__ >= 65 4170 /* ========================================================================== 4171 Assembly Syntax: Vd32.b=prefixsum(Qv4) 4172 C Intrinsic Prototype: HVX_Vector Q6_Vb_prefixsum_Q(HVX_VectorPred Qv) 4173 Instruction Type: CVI_VS 4174 Execution Slots: SLOT0123 4175 ========================================================================== */ 4176 4177 #define Q6_Vb_prefixsum_Q(Qv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vprefixqb)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1)) 4178 #endif /* __HEXAGON_ARCH___ >= 65 */ 4179 4180 #if __HVX_ARCH__ >= 65 4181 /* ========================================================================== 4182 Assembly Syntax: Vd32.h=prefixsum(Qv4) 4183 C Intrinsic Prototype: HVX_Vector Q6_Vh_prefixsum_Q(HVX_VectorPred Qv) 4184 Instruction Type: CVI_VS 4185 Execution Slots: SLOT0123 4186 ========================================================================== */ 4187 4188 #define Q6_Vh_prefixsum_Q(Qv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vprefixqh)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1)) 4189 #endif /* __HEXAGON_ARCH___ >= 65 */ 4190 4191 #if __HVX_ARCH__ >= 65 4192 /* ========================================================================== 4193 Assembly Syntax: Vd32.w=prefixsum(Qv4) 4194 C Intrinsic Prototype: HVX_Vector Q6_Vw_prefixsum_Q(HVX_VectorPred Qv) 4195 Instruction Type: CVI_VS 4196 Execution Slots: SLOT0123 4197 ========================================================================== */ 4198 4199 #define Q6_Vw_prefixsum_Q(Qv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vprefixqw)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qv),-1)) 4200 #endif /* __HEXAGON_ARCH___ >= 65 */ 4201 4202 #if __HVX_ARCH__ >= 65 4203 /* ========================================================================== 4204 Assembly Syntax: vscatter(Rt32,Mu2,Vv32.h).h=Vw32 4205 C Intrinsic Prototype: void Q6_vscatter_RMVhV(Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4206 Instruction Type: CVI_SCATTER 4207 Execution Slots: SLOT0 4208 ========================================================================== */ 4209 4210 #define Q6_vscatter_RMVhV(Rt,Mu,Vv,Vw) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermh)(Rt,Mu,Vv,Vw) 4211 #endif /* __HEXAGON_ARCH___ >= 65 */ 4212 4213 #if __HVX_ARCH__ >= 65 4214 /* ========================================================================== 4215 Assembly Syntax: vscatter(Rt32,Mu2,Vv32.h).h+=Vw32 4216 C Intrinsic Prototype: void Q6_vscatteracc_RMVhV(Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4217 Instruction Type: CVI_SCATTER 4218 Execution Slots: SLOT0 4219 ========================================================================== */ 4220 4221 #define Q6_vscatteracc_RMVhV(Rt,Mu,Vv,Vw) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermh_add)(Rt,Mu,Vv,Vw) 4222 #endif /* __HEXAGON_ARCH___ >= 65 */ 4223 4224 #if __HVX_ARCH__ >= 65 4225 /* ========================================================================== 4226 Assembly Syntax: if (Qs4) vscatter(Rt32,Mu2,Vv32.h).h=Vw32 4227 C Intrinsic Prototype: void Q6_vscatter_QRMVhV(HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4228 Instruction Type: CVI_SCATTER 4229 Execution Slots: SLOT0 4230 ========================================================================== */ 4231 4232 #define Q6_vscatter_QRMVhV(Qs,Rt,Mu,Vv,Vw) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermhq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),Rt,Mu,Vv,Vw) 4233 #endif /* __HEXAGON_ARCH___ >= 65 */ 4234 4235 #if __HVX_ARCH__ >= 65 4236 /* ========================================================================== 4237 Assembly Syntax: vscatter(Rt32,Mu2,Vvv32.w).h=Vw32 4238 C Intrinsic Prototype: void Q6_vscatter_RMWwV(Word32 Rt, Word32 Mu, HVX_VectorPair Vvv, HVX_Vector Vw) 4239 Instruction Type: CVI_SCATTER_DV 4240 Execution Slots: SLOT0 4241 ========================================================================== */ 4242 4243 #define Q6_vscatter_RMWwV(Rt,Mu,Vvv,Vw) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermhw)(Rt,Mu,Vvv,Vw) 4244 #endif /* __HEXAGON_ARCH___ >= 65 */ 4245 4246 #if __HVX_ARCH__ >= 65 4247 /* ========================================================================== 4248 Assembly Syntax: vscatter(Rt32,Mu2,Vvv32.w).h+=Vw32 4249 C Intrinsic Prototype: void Q6_vscatteracc_RMWwV(Word32 Rt, Word32 Mu, HVX_VectorPair Vvv, HVX_Vector Vw) 4250 Instruction Type: CVI_SCATTER_DV 4251 Execution Slots: SLOT0 4252 ========================================================================== */ 4253 4254 #define Q6_vscatteracc_RMWwV(Rt,Mu,Vvv,Vw) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermhw_add)(Rt,Mu,Vvv,Vw) 4255 #endif /* __HEXAGON_ARCH___ >= 65 */ 4256 4257 #if __HVX_ARCH__ >= 65 4258 /* ========================================================================== 4259 Assembly Syntax: if (Qs4) vscatter(Rt32,Mu2,Vvv32.w).h=Vw32 4260 C Intrinsic Prototype: void Q6_vscatter_QRMWwV(HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_VectorPair Vvv, HVX_Vector Vw) 4261 Instruction Type: CVI_SCATTER_DV 4262 Execution Slots: SLOT0 4263 ========================================================================== */ 4264 4265 #define Q6_vscatter_QRMWwV(Qs,Rt,Mu,Vvv,Vw) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermhwq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),Rt,Mu,Vvv,Vw) 4266 #endif /* __HEXAGON_ARCH___ >= 65 */ 4267 4268 #if __HVX_ARCH__ >= 65 4269 /* ========================================================================== 4270 Assembly Syntax: vscatter(Rt32,Mu2,Vv32.w).w=Vw32 4271 C Intrinsic Prototype: void Q6_vscatter_RMVwV(Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4272 Instruction Type: CVI_SCATTER 4273 Execution Slots: SLOT0 4274 ========================================================================== */ 4275 4276 #define Q6_vscatter_RMVwV(Rt,Mu,Vv,Vw) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermw)(Rt,Mu,Vv,Vw) 4277 #endif /* __HEXAGON_ARCH___ >= 65 */ 4278 4279 #if __HVX_ARCH__ >= 65 4280 /* ========================================================================== 4281 Assembly Syntax: vscatter(Rt32,Mu2,Vv32.w).w+=Vw32 4282 C Intrinsic Prototype: void Q6_vscatteracc_RMVwV(Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4283 Instruction Type: CVI_SCATTER 4284 Execution Slots: SLOT0 4285 ========================================================================== */ 4286 4287 #define Q6_vscatteracc_RMVwV(Rt,Mu,Vv,Vw) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermw_add)(Rt,Mu,Vv,Vw) 4288 #endif /* __HEXAGON_ARCH___ >= 65 */ 4289 4290 #if __HVX_ARCH__ >= 65 4291 /* ========================================================================== 4292 Assembly Syntax: if (Qs4) vscatter(Rt32,Mu2,Vv32.w).w=Vw32 4293 C Intrinsic Prototype: void Q6_vscatter_QRMVwV(HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4294 Instruction Type: CVI_SCATTER 4295 Execution Slots: SLOT0 4296 ========================================================================== */ 4297 4298 #define Q6_vscatter_QRMVwV(Qs,Rt,Mu,Vv,Vw) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermwq)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1),Rt,Mu,Vv,Vw) 4299 #endif /* __HEXAGON_ARCH___ >= 65 */ 4300 4301 #if __HVX_ARCH__ >= 66 4302 /* ========================================================================== 4303 Assembly Syntax: Vd32.w=vadd(Vu32.w,Vv32.w,Qs4):carry:sat 4304 C Intrinsic Prototype: HVX_Vector Q6_Vw_vadd_VwVwQ_carry_sat(HVX_Vector Vu, HVX_Vector Vv, HVX_VectorPred Qs) 4305 Instruction Type: CVI_VA 4306 Execution Slots: SLOT0123 4307 ========================================================================== */ 4308 4309 #define Q6_Vw_vadd_VwVwQ_carry_sat(Vu,Vv,Qs) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddcarrysat)(Vu,Vv,__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qs),-1)) 4310 #endif /* __HEXAGON_ARCH___ >= 66 */ 4311 4312 #if __HVX_ARCH__ >= 66 4313 /* ========================================================================== 4314 Assembly Syntax: Vxx32.w=vasrinto(Vu32.w,Vv32.w) 4315 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vasrinto_WwVwVw(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 4316 Instruction Type: CVI_VP_VS 4317 Execution Slots: SLOT0123 4318 ========================================================================== */ 4319 4320 #define Q6_Ww_vasrinto_WwVwVw(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasr_into)(Vxx,Vu,Vv) 4321 #endif /* __HEXAGON_ARCH___ >= 66 */ 4322 4323 #if __HVX_ARCH__ >= 66 4324 /* ========================================================================== 4325 Assembly Syntax: Vd32.uw=vrotr(Vu32.uw,Vv32.uw) 4326 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vrotr_VuwVuw(HVX_Vector Vu, HVX_Vector Vv) 4327 Instruction Type: CVI_VS 4328 Execution Slots: SLOT0123 4329 ========================================================================== */ 4330 4331 #define Q6_Vuw_vrotr_VuwVuw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrotr)(Vu,Vv) 4332 #endif /* __HEXAGON_ARCH___ >= 66 */ 4333 4334 #if __HVX_ARCH__ >= 66 4335 /* ========================================================================== 4336 Assembly Syntax: Vd32.w=vsatdw(Vu32.w,Vv32.w) 4337 C Intrinsic Prototype: HVX_Vector Q6_Vw_vsatdw_VwVw(HVX_Vector Vu, HVX_Vector Vv) 4338 Instruction Type: CVI_VA 4339 Execution Slots: SLOT0123 4340 ========================================================================== */ 4341 4342 #define Q6_Vw_vsatdw_VwVw(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsatdw)(Vu,Vv) 4343 #endif /* __HEXAGON_ARCH___ >= 66 */ 4344 4345 #if __HVX_ARCH__ >= 68 4346 /* ========================================================================== 4347 Assembly Syntax: Vdd32.w=v6mpy(Vuu32.ub,Vvv32.b,#u2):h 4348 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_v6mpy_WubWbI_h(HVX_VectorPair Vuu, HVX_VectorPair Vvv, Word32 Iu2) 4349 Instruction Type: CVI_VX_DV 4350 Execution Slots: SLOT23 4351 ========================================================================== */ 4352 4353 #define Q6_Ww_v6mpy_WubWbI_h(Vuu,Vvv,Iu2) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_v6mpyhubs10)(Vuu,Vvv,Iu2) 4354 #endif /* __HEXAGON_ARCH___ >= 68 */ 4355 4356 #if __HVX_ARCH__ >= 68 4357 /* ========================================================================== 4358 Assembly Syntax: Vxx32.w+=v6mpy(Vuu32.ub,Vvv32.b,#u2):h 4359 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_v6mpyacc_WwWubWbI_h(HVX_VectorPair Vxx, HVX_VectorPair Vuu, HVX_VectorPair Vvv, Word32 Iu2) 4360 Instruction Type: CVI_VX_DV 4361 Execution Slots: SLOT23 4362 ========================================================================== */ 4363 4364 #define Q6_Ww_v6mpyacc_WwWubWbI_h(Vxx,Vuu,Vvv,Iu2) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_v6mpyhubs10_vxx)(Vxx,Vuu,Vvv,Iu2) 4365 #endif /* __HEXAGON_ARCH___ >= 68 */ 4366 4367 #if __HVX_ARCH__ >= 68 4368 /* ========================================================================== 4369 Assembly Syntax: Vdd32.w=v6mpy(Vuu32.ub,Vvv32.b,#u2):v 4370 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_v6mpy_WubWbI_v(HVX_VectorPair Vuu, HVX_VectorPair Vvv, Word32 Iu2) 4371 Instruction Type: CVI_VX_DV 4372 Execution Slots: SLOT23 4373 ========================================================================== */ 4374 4375 #define Q6_Ww_v6mpy_WubWbI_v(Vuu,Vvv,Iu2) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_v6mpyvubs10)(Vuu,Vvv,Iu2) 4376 #endif /* __HEXAGON_ARCH___ >= 68 */ 4377 4378 #if __HVX_ARCH__ >= 68 4379 /* ========================================================================== 4380 Assembly Syntax: Vxx32.w+=v6mpy(Vuu32.ub,Vvv32.b,#u2):v 4381 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_v6mpyacc_WwWubWbI_v(HVX_VectorPair Vxx, HVX_VectorPair Vuu, HVX_VectorPair Vvv, Word32 Iu2) 4382 Instruction Type: CVI_VX_DV 4383 Execution Slots: SLOT23 4384 ========================================================================== */ 4385 4386 #define Q6_Ww_v6mpyacc_WwWubWbI_v(Vxx,Vuu,Vvv,Iu2) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_v6mpyvubs10_vxx)(Vxx,Vuu,Vvv,Iu2) 4387 #endif /* __HEXAGON_ARCH___ >= 68 */ 4388 4389 #if __HVX_ARCH__ >= 68 4390 /* ========================================================================== 4391 Assembly Syntax: Vd32.hf=vabs(Vu32.hf) 4392 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vabs_Vhf(HVX_Vector Vu) 4393 Instruction Type: CVI_VX_LATE 4394 Execution Slots: SLOT23 4395 ========================================================================== */ 4396 4397 #define Q6_Vhf_vabs_Vhf(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabs_hf)(Vu) 4398 #endif /* __HEXAGON_ARCH___ >= 68 */ 4399 4400 #if __HVX_ARCH__ >= 68 4401 /* ========================================================================== 4402 Assembly Syntax: Vd32.sf=vabs(Vu32.sf) 4403 C Intrinsic Prototype: HVX_Vector Q6_Vsf_vabs_Vsf(HVX_Vector Vu) 4404 Instruction Type: CVI_VX_LATE 4405 Execution Slots: SLOT23 4406 ========================================================================== */ 4407 4408 #define Q6_Vsf_vabs_Vsf(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabs_sf)(Vu) 4409 #endif /* __HEXAGON_ARCH___ >= 68 */ 4410 4411 #if __HVX_ARCH__ >= 68 4412 /* ========================================================================== 4413 Assembly Syntax: Vd32.qf16=vadd(Vu32.hf,Vv32.hf) 4414 C Intrinsic Prototype: HVX_Vector Q6_Vqf16_vadd_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4415 Instruction Type: CVI_VS 4416 Execution Slots: SLOT0123 4417 ========================================================================== */ 4418 4419 #define Q6_Vqf16_vadd_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadd_hf)(Vu,Vv) 4420 #endif /* __HEXAGON_ARCH___ >= 68 */ 4421 4422 #if __HVX_ARCH__ >= 68 4423 /* ========================================================================== 4424 Assembly Syntax: Vd32.hf=vadd(Vu32.hf,Vv32.hf) 4425 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vadd_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4426 Instruction Type: CVI_VX 4427 Execution Slots: SLOT23 4428 ========================================================================== */ 4429 4430 #define Q6_Vhf_vadd_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadd_hf_hf)(Vu,Vv) 4431 #endif /* __HEXAGON_ARCH___ >= 68 */ 4432 4433 #if __HVX_ARCH__ >= 68 4434 /* ========================================================================== 4435 Assembly Syntax: Vd32.qf16=vadd(Vu32.qf16,Vv32.qf16) 4436 C Intrinsic Prototype: HVX_Vector Q6_Vqf16_vadd_Vqf16Vqf16(HVX_Vector Vu, HVX_Vector Vv) 4437 Instruction Type: CVI_VS 4438 Execution Slots: SLOT0123 4439 ========================================================================== */ 4440 4441 #define Q6_Vqf16_vadd_Vqf16Vqf16(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadd_qf16)(Vu,Vv) 4442 #endif /* __HEXAGON_ARCH___ >= 68 */ 4443 4444 #if __HVX_ARCH__ >= 68 4445 /* ========================================================================== 4446 Assembly Syntax: Vd32.qf16=vadd(Vu32.qf16,Vv32.hf) 4447 C Intrinsic Prototype: HVX_Vector Q6_Vqf16_vadd_Vqf16Vhf(HVX_Vector Vu, HVX_Vector Vv) 4448 Instruction Type: CVI_VS 4449 Execution Slots: SLOT0123 4450 ========================================================================== */ 4451 4452 #define Q6_Vqf16_vadd_Vqf16Vhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadd_qf16_mix)(Vu,Vv) 4453 #endif /* __HEXAGON_ARCH___ >= 68 */ 4454 4455 #if __HVX_ARCH__ >= 68 4456 /* ========================================================================== 4457 Assembly Syntax: Vd32.qf32=vadd(Vu32.qf32,Vv32.qf32) 4458 C Intrinsic Prototype: HVX_Vector Q6_Vqf32_vadd_Vqf32Vqf32(HVX_Vector Vu, HVX_Vector Vv) 4459 Instruction Type: CVI_VS 4460 Execution Slots: SLOT0123 4461 ========================================================================== */ 4462 4463 #define Q6_Vqf32_vadd_Vqf32Vqf32(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadd_qf32)(Vu,Vv) 4464 #endif /* __HEXAGON_ARCH___ >= 68 */ 4465 4466 #if __HVX_ARCH__ >= 68 4467 /* ========================================================================== 4468 Assembly Syntax: Vd32.qf32=vadd(Vu32.qf32,Vv32.sf) 4469 C Intrinsic Prototype: HVX_Vector Q6_Vqf32_vadd_Vqf32Vsf(HVX_Vector Vu, HVX_Vector Vv) 4470 Instruction Type: CVI_VS 4471 Execution Slots: SLOT0123 4472 ========================================================================== */ 4473 4474 #define Q6_Vqf32_vadd_Vqf32Vsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadd_qf32_mix)(Vu,Vv) 4475 #endif /* __HEXAGON_ARCH___ >= 68 */ 4476 4477 #if __HVX_ARCH__ >= 68 4478 /* ========================================================================== 4479 Assembly Syntax: Vd32.qf32=vadd(Vu32.sf,Vv32.sf) 4480 C Intrinsic Prototype: HVX_Vector Q6_Vqf32_vadd_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 4481 Instruction Type: CVI_VS 4482 Execution Slots: SLOT0123 4483 ========================================================================== */ 4484 4485 #define Q6_Vqf32_vadd_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadd_sf)(Vu,Vv) 4486 #endif /* __HEXAGON_ARCH___ >= 68 */ 4487 4488 #if __HVX_ARCH__ >= 68 4489 /* ========================================================================== 4490 Assembly Syntax: Vdd32.sf=vadd(Vu32.hf,Vv32.hf) 4491 C Intrinsic Prototype: HVX_VectorPair Q6_Wsf_vadd_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4492 Instruction Type: CVI_VX_DV 4493 Execution Slots: SLOT23 4494 ========================================================================== */ 4495 4496 #define Q6_Wsf_vadd_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadd_sf_hf)(Vu,Vv) 4497 #endif /* __HEXAGON_ARCH___ >= 68 */ 4498 4499 #if __HVX_ARCH__ >= 68 4500 /* ========================================================================== 4501 Assembly Syntax: Vd32.sf=vadd(Vu32.sf,Vv32.sf) 4502 C Intrinsic Prototype: HVX_Vector Q6_Vsf_vadd_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 4503 Instruction Type: CVI_VX 4504 Execution Slots: SLOT23 4505 ========================================================================== */ 4506 4507 #define Q6_Vsf_vadd_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadd_sf_sf)(Vu,Vv) 4508 #endif /* __HEXAGON_ARCH___ >= 68 */ 4509 4510 #if __HVX_ARCH__ >= 68 4511 /* ========================================================================== 4512 Assembly Syntax: Vd32.w=vfmv(Vu32.w) 4513 C Intrinsic Prototype: HVX_Vector Q6_Vw_vfmv_Vw(HVX_Vector Vu) 4514 Instruction Type: CVI_VX_LATE 4515 Execution Slots: SLOT23 4516 ========================================================================== */ 4517 4518 #define Q6_Vw_vfmv_Vw(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vassign_fp)(Vu) 4519 #endif /* __HEXAGON_ARCH___ >= 68 */ 4520 4521 #if __HVX_ARCH__ >= 68 4522 /* ========================================================================== 4523 Assembly Syntax: Vd32.hf=Vu32.qf16 4524 C Intrinsic Prototype: HVX_Vector Q6_Vhf_equals_Vqf16(HVX_Vector Vu) 4525 Instruction Type: CVI_VS 4526 Execution Slots: SLOT0123 4527 ========================================================================== */ 4528 4529 #define Q6_Vhf_equals_Vqf16(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vconv_hf_qf16)(Vu) 4530 #endif /* __HEXAGON_ARCH___ >= 68 */ 4531 4532 #if __HVX_ARCH__ >= 68 4533 /* ========================================================================== 4534 Assembly Syntax: Vd32.hf=Vuu32.qf32 4535 C Intrinsic Prototype: HVX_Vector Q6_Vhf_equals_Wqf32(HVX_VectorPair Vuu) 4536 Instruction Type: CVI_VS 4537 Execution Slots: SLOT0123 4538 ========================================================================== */ 4539 4540 #define Q6_Vhf_equals_Wqf32(Vuu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vconv_hf_qf32)(Vuu) 4541 #endif /* __HEXAGON_ARCH___ >= 68 */ 4542 4543 #if __HVX_ARCH__ >= 68 4544 /* ========================================================================== 4545 Assembly Syntax: Vd32.sf=Vu32.qf32 4546 C Intrinsic Prototype: HVX_Vector Q6_Vsf_equals_Vqf32(HVX_Vector Vu) 4547 Instruction Type: CVI_VS 4548 Execution Slots: SLOT0123 4549 ========================================================================== */ 4550 4551 #define Q6_Vsf_equals_Vqf32(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vconv_sf_qf32)(Vu) 4552 #endif /* __HEXAGON_ARCH___ >= 68 */ 4553 4554 #if __HVX_ARCH__ >= 68 4555 /* ========================================================================== 4556 Assembly Syntax: Vd32.b=vcvt(Vu32.hf,Vv32.hf) 4557 C Intrinsic Prototype: HVX_Vector Q6_Vb_vcvt_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4558 Instruction Type: CVI_VX 4559 Execution Slots: SLOT23 4560 ========================================================================== */ 4561 4562 #define Q6_Vb_vcvt_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_b_hf)(Vu,Vv) 4563 #endif /* __HEXAGON_ARCH___ >= 68 */ 4564 4565 #if __HVX_ARCH__ >= 68 4566 /* ========================================================================== 4567 Assembly Syntax: Vd32.h=vcvt(Vu32.hf) 4568 C Intrinsic Prototype: HVX_Vector Q6_Vh_vcvt_Vhf(HVX_Vector Vu) 4569 Instruction Type: CVI_VX 4570 Execution Slots: SLOT23 4571 ========================================================================== */ 4572 4573 #define Q6_Vh_vcvt_Vhf(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_h_hf)(Vu) 4574 #endif /* __HEXAGON_ARCH___ >= 68 */ 4575 4576 #if __HVX_ARCH__ >= 68 4577 /* ========================================================================== 4578 Assembly Syntax: Vdd32.hf=vcvt(Vu32.b) 4579 C Intrinsic Prototype: HVX_VectorPair Q6_Whf_vcvt_Vb(HVX_Vector Vu) 4580 Instruction Type: CVI_VX_DV 4581 Execution Slots: SLOT23 4582 ========================================================================== */ 4583 4584 #define Q6_Whf_vcvt_Vb(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_hf_b)(Vu) 4585 #endif /* __HEXAGON_ARCH___ >= 68 */ 4586 4587 #if __HVX_ARCH__ >= 68 4588 /* ========================================================================== 4589 Assembly Syntax: Vd32.hf=vcvt(Vu32.h) 4590 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vcvt_Vh(HVX_Vector Vu) 4591 Instruction Type: CVI_VX 4592 Execution Slots: SLOT23 4593 ========================================================================== */ 4594 4595 #define Q6_Vhf_vcvt_Vh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_hf_h)(Vu) 4596 #endif /* __HEXAGON_ARCH___ >= 68 */ 4597 4598 #if __HVX_ARCH__ >= 68 4599 /* ========================================================================== 4600 Assembly Syntax: Vd32.hf=vcvt(Vu32.sf,Vv32.sf) 4601 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vcvt_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 4602 Instruction Type: CVI_VX 4603 Execution Slots: SLOT23 4604 ========================================================================== */ 4605 4606 #define Q6_Vhf_vcvt_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_hf_sf)(Vu,Vv) 4607 #endif /* __HEXAGON_ARCH___ >= 68 */ 4608 4609 #if __HVX_ARCH__ >= 68 4610 /* ========================================================================== 4611 Assembly Syntax: Vdd32.hf=vcvt(Vu32.ub) 4612 C Intrinsic Prototype: HVX_VectorPair Q6_Whf_vcvt_Vub(HVX_Vector Vu) 4613 Instruction Type: CVI_VX_DV 4614 Execution Slots: SLOT23 4615 ========================================================================== */ 4616 4617 #define Q6_Whf_vcvt_Vub(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_hf_ub)(Vu) 4618 #endif /* __HEXAGON_ARCH___ >= 68 */ 4619 4620 #if __HVX_ARCH__ >= 68 4621 /* ========================================================================== 4622 Assembly Syntax: Vd32.hf=vcvt(Vu32.uh) 4623 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vcvt_Vuh(HVX_Vector Vu) 4624 Instruction Type: CVI_VX 4625 Execution Slots: SLOT23 4626 ========================================================================== */ 4627 4628 #define Q6_Vhf_vcvt_Vuh(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_hf_uh)(Vu) 4629 #endif /* __HEXAGON_ARCH___ >= 68 */ 4630 4631 #if __HVX_ARCH__ >= 68 4632 /* ========================================================================== 4633 Assembly Syntax: Vdd32.sf=vcvt(Vu32.hf) 4634 C Intrinsic Prototype: HVX_VectorPair Q6_Wsf_vcvt_Vhf(HVX_Vector Vu) 4635 Instruction Type: CVI_VX_DV 4636 Execution Slots: SLOT23 4637 ========================================================================== */ 4638 4639 #define Q6_Wsf_vcvt_Vhf(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_sf_hf)(Vu) 4640 #endif /* __HEXAGON_ARCH___ >= 68 */ 4641 4642 #if __HVX_ARCH__ >= 68 4643 /* ========================================================================== 4644 Assembly Syntax: Vd32.ub=vcvt(Vu32.hf,Vv32.hf) 4645 C Intrinsic Prototype: HVX_Vector Q6_Vub_vcvt_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4646 Instruction Type: CVI_VX 4647 Execution Slots: SLOT23 4648 ========================================================================== */ 4649 4650 #define Q6_Vub_vcvt_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_ub_hf)(Vu,Vv) 4651 #endif /* __HEXAGON_ARCH___ >= 68 */ 4652 4653 #if __HVX_ARCH__ >= 68 4654 /* ========================================================================== 4655 Assembly Syntax: Vd32.uh=vcvt(Vu32.hf) 4656 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vcvt_Vhf(HVX_Vector Vu) 4657 Instruction Type: CVI_VX 4658 Execution Slots: SLOT23 4659 ========================================================================== */ 4660 4661 #define Q6_Vuh_vcvt_Vhf(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_uh_hf)(Vu) 4662 #endif /* __HEXAGON_ARCH___ >= 68 */ 4663 4664 #if __HVX_ARCH__ >= 68 4665 /* ========================================================================== 4666 Assembly Syntax: Vd32.sf=vdmpy(Vu32.hf,Vv32.hf) 4667 C Intrinsic Prototype: HVX_Vector Q6_Vsf_vdmpy_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4668 Instruction Type: CVI_VX 4669 Execution Slots: SLOT23 4670 ========================================================================== */ 4671 4672 #define Q6_Vsf_vdmpy_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpy_sf_hf)(Vu,Vv) 4673 #endif /* __HEXAGON_ARCH___ >= 68 */ 4674 4675 #if __HVX_ARCH__ >= 68 4676 /* ========================================================================== 4677 Assembly Syntax: Vx32.sf+=vdmpy(Vu32.hf,Vv32.hf) 4678 C Intrinsic Prototype: HVX_Vector Q6_Vsf_vdmpyacc_VsfVhfVhf(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 4679 Instruction Type: CVI_VX 4680 Execution Slots: SLOT23 4681 ========================================================================== */ 4682 4683 #define Q6_Vsf_vdmpyacc_VsfVhfVhf(Vx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpy_sf_hf_acc)(Vx,Vu,Vv) 4684 #endif /* __HEXAGON_ARCH___ >= 68 */ 4685 4686 #if __HVX_ARCH__ >= 68 4687 /* ========================================================================== 4688 Assembly Syntax: Vd32.hf=vfmax(Vu32.hf,Vv32.hf) 4689 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vfmax_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4690 Instruction Type: CVI_VX_LATE 4691 Execution Slots: SLOT23 4692 ========================================================================== */ 4693 4694 #define Q6_Vhf_vfmax_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vfmax_hf)(Vu,Vv) 4695 #endif /* __HEXAGON_ARCH___ >= 68 */ 4696 4697 #if __HVX_ARCH__ >= 68 4698 /* ========================================================================== 4699 Assembly Syntax: Vd32.sf=vfmax(Vu32.sf,Vv32.sf) 4700 C Intrinsic Prototype: HVX_Vector Q6_Vsf_vfmax_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 4701 Instruction Type: CVI_VX_LATE 4702 Execution Slots: SLOT23 4703 ========================================================================== */ 4704 4705 #define Q6_Vsf_vfmax_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vfmax_sf)(Vu,Vv) 4706 #endif /* __HEXAGON_ARCH___ >= 68 */ 4707 4708 #if __HVX_ARCH__ >= 68 4709 /* ========================================================================== 4710 Assembly Syntax: Vd32.hf=vfmin(Vu32.hf,Vv32.hf) 4711 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vfmin_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4712 Instruction Type: CVI_VX_LATE 4713 Execution Slots: SLOT23 4714 ========================================================================== */ 4715 4716 #define Q6_Vhf_vfmin_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vfmin_hf)(Vu,Vv) 4717 #endif /* __HEXAGON_ARCH___ >= 68 */ 4718 4719 #if __HVX_ARCH__ >= 68 4720 /* ========================================================================== 4721 Assembly Syntax: Vd32.sf=vfmin(Vu32.sf,Vv32.sf) 4722 C Intrinsic Prototype: HVX_Vector Q6_Vsf_vfmin_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 4723 Instruction Type: CVI_VX_LATE 4724 Execution Slots: SLOT23 4725 ========================================================================== */ 4726 4727 #define Q6_Vsf_vfmin_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vfmin_sf)(Vu,Vv) 4728 #endif /* __HEXAGON_ARCH___ >= 68 */ 4729 4730 #if __HVX_ARCH__ >= 68 4731 /* ========================================================================== 4732 Assembly Syntax: Vd32.hf=vfneg(Vu32.hf) 4733 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vfneg_Vhf(HVX_Vector Vu) 4734 Instruction Type: CVI_VX_LATE 4735 Execution Slots: SLOT23 4736 ========================================================================== */ 4737 4738 #define Q6_Vhf_vfneg_Vhf(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vfneg_hf)(Vu) 4739 #endif /* __HEXAGON_ARCH___ >= 68 */ 4740 4741 #if __HVX_ARCH__ >= 68 4742 /* ========================================================================== 4743 Assembly Syntax: Vd32.sf=vfneg(Vu32.sf) 4744 C Intrinsic Prototype: HVX_Vector Q6_Vsf_vfneg_Vsf(HVX_Vector Vu) 4745 Instruction Type: CVI_VX_LATE 4746 Execution Slots: SLOT23 4747 ========================================================================== */ 4748 4749 #define Q6_Vsf_vfneg_Vsf(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vfneg_sf)(Vu) 4750 #endif /* __HEXAGON_ARCH___ >= 68 */ 4751 4752 #if __HVX_ARCH__ >= 68 4753 /* ========================================================================== 4754 Assembly Syntax: Qd4=vcmp.gt(Vu32.hf,Vv32.hf) 4755 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4756 Instruction Type: CVI_VA 4757 Execution Slots: SLOT0123 4758 ========================================================================== */ 4759 4760 #define Q6_Q_vcmp_gt_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgthf)(Vu,Vv)),-1) 4761 #endif /* __HEXAGON_ARCH___ >= 68 */ 4762 4763 #if __HVX_ARCH__ >= 68 4764 /* ========================================================================== 4765 Assembly Syntax: Qx4&=vcmp.gt(Vu32.hf,Vv32.hf) 4766 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVhfVhf(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 4767 Instruction Type: CVI_VA 4768 Execution Slots: SLOT0123 4769 ========================================================================== */ 4770 4771 #define Q6_Q_vcmp_gtand_QVhfVhf(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgthf_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 4772 #endif /* __HEXAGON_ARCH___ >= 68 */ 4773 4774 #if __HVX_ARCH__ >= 68 4775 /* ========================================================================== 4776 Assembly Syntax: Qx4|=vcmp.gt(Vu32.hf,Vv32.hf) 4777 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVhfVhf(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 4778 Instruction Type: CVI_VA 4779 Execution Slots: SLOT0123 4780 ========================================================================== */ 4781 4782 #define Q6_Q_vcmp_gtor_QVhfVhf(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgthf_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 4783 #endif /* __HEXAGON_ARCH___ >= 68 */ 4784 4785 #if __HVX_ARCH__ >= 68 4786 /* ========================================================================== 4787 Assembly Syntax: Qx4^=vcmp.gt(Vu32.hf,Vv32.hf) 4788 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVhfVhf(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 4789 Instruction Type: CVI_VA 4790 Execution Slots: SLOT0123 4791 ========================================================================== */ 4792 4793 #define Q6_Q_vcmp_gtxacc_QVhfVhf(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgthf_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 4794 #endif /* __HEXAGON_ARCH___ >= 68 */ 4795 4796 #if __HVX_ARCH__ >= 68 4797 /* ========================================================================== 4798 Assembly Syntax: Qd4=vcmp.gt(Vu32.sf,Vv32.sf) 4799 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 4800 Instruction Type: CVI_VA 4801 Execution Slots: SLOT0123 4802 ========================================================================== */ 4803 4804 #define Q6_Q_vcmp_gt_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtsf)(Vu,Vv)),-1) 4805 #endif /* __HEXAGON_ARCH___ >= 68 */ 4806 4807 #if __HVX_ARCH__ >= 68 4808 /* ========================================================================== 4809 Assembly Syntax: Qx4&=vcmp.gt(Vu32.sf,Vv32.sf) 4810 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVsfVsf(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 4811 Instruction Type: CVI_VA 4812 Execution Slots: SLOT0123 4813 ========================================================================== */ 4814 4815 #define Q6_Q_vcmp_gtand_QVsfVsf(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtsf_and)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 4816 #endif /* __HEXAGON_ARCH___ >= 68 */ 4817 4818 #if __HVX_ARCH__ >= 68 4819 /* ========================================================================== 4820 Assembly Syntax: Qx4|=vcmp.gt(Vu32.sf,Vv32.sf) 4821 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVsfVsf(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 4822 Instruction Type: CVI_VA 4823 Execution Slots: SLOT0123 4824 ========================================================================== */ 4825 4826 #define Q6_Q_vcmp_gtor_QVsfVsf(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtsf_or)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 4827 #endif /* __HEXAGON_ARCH___ >= 68 */ 4828 4829 #if __HVX_ARCH__ >= 68 4830 /* ========================================================================== 4831 Assembly Syntax: Qx4^=vcmp.gt(Vu32.sf,Vv32.sf) 4832 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVsfVsf(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 4833 Instruction Type: CVI_VA 4834 Execution Slots: SLOT0123 4835 ========================================================================== */ 4836 4837 #define Q6_Q_vcmp_gtxacc_QVsfVsf(Qx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt)((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtsf_xor)(__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx),-1),Vu,Vv)),-1) 4838 #endif /* __HEXAGON_ARCH___ >= 68 */ 4839 4840 #if __HVX_ARCH__ >= 68 4841 /* ========================================================================== 4842 Assembly Syntax: Vd32.hf=vmax(Vu32.hf,Vv32.hf) 4843 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vmax_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4844 Instruction Type: CVI_VA 4845 Execution Slots: SLOT0123 4846 ========================================================================== */ 4847 4848 #define Q6_Vhf_vmax_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmax_hf)(Vu,Vv) 4849 #endif /* __HEXAGON_ARCH___ >= 68 */ 4850 4851 #if __HVX_ARCH__ >= 68 4852 /* ========================================================================== 4853 Assembly Syntax: Vd32.sf=vmax(Vu32.sf,Vv32.sf) 4854 C Intrinsic Prototype: HVX_Vector Q6_Vsf_vmax_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 4855 Instruction Type: CVI_VA 4856 Execution Slots: SLOT0123 4857 ========================================================================== */ 4858 4859 #define Q6_Vsf_vmax_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmax_sf)(Vu,Vv) 4860 #endif /* __HEXAGON_ARCH___ >= 68 */ 4861 4862 #if __HVX_ARCH__ >= 68 4863 /* ========================================================================== 4864 Assembly Syntax: Vd32.hf=vmin(Vu32.hf,Vv32.hf) 4865 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vmin_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4866 Instruction Type: CVI_VA 4867 Execution Slots: SLOT0123 4868 ========================================================================== */ 4869 4870 #define Q6_Vhf_vmin_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmin_hf)(Vu,Vv) 4871 #endif /* __HEXAGON_ARCH___ >= 68 */ 4872 4873 #if __HVX_ARCH__ >= 68 4874 /* ========================================================================== 4875 Assembly Syntax: Vd32.sf=vmin(Vu32.sf,Vv32.sf) 4876 C Intrinsic Prototype: HVX_Vector Q6_Vsf_vmin_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 4877 Instruction Type: CVI_VA 4878 Execution Slots: SLOT0123 4879 ========================================================================== */ 4880 4881 #define Q6_Vsf_vmin_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmin_sf)(Vu,Vv) 4882 #endif /* __HEXAGON_ARCH___ >= 68 */ 4883 4884 #if __HVX_ARCH__ >= 68 4885 /* ========================================================================== 4886 Assembly Syntax: Vd32.hf=vmpy(Vu32.hf,Vv32.hf) 4887 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vmpy_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4888 Instruction Type: CVI_VX 4889 Execution Slots: SLOT23 4890 ========================================================================== */ 4891 4892 #define Q6_Vhf_vmpy_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_hf_hf)(Vu,Vv) 4893 #endif /* __HEXAGON_ARCH___ >= 68 */ 4894 4895 #if __HVX_ARCH__ >= 68 4896 /* ========================================================================== 4897 Assembly Syntax: Vx32.hf+=vmpy(Vu32.hf,Vv32.hf) 4898 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vmpyacc_VhfVhfVhf(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 4899 Instruction Type: CVI_VX 4900 Execution Slots: SLOT23 4901 ========================================================================== */ 4902 4903 #define Q6_Vhf_vmpyacc_VhfVhfVhf(Vx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_hf_hf_acc)(Vx,Vu,Vv) 4904 #endif /* __HEXAGON_ARCH___ >= 68 */ 4905 4906 #if __HVX_ARCH__ >= 68 4907 /* ========================================================================== 4908 Assembly Syntax: Vd32.qf16=vmpy(Vu32.qf16,Vv32.qf16) 4909 C Intrinsic Prototype: HVX_Vector Q6_Vqf16_vmpy_Vqf16Vqf16(HVX_Vector Vu, HVX_Vector Vv) 4910 Instruction Type: CVI_VX_DV 4911 Execution Slots: SLOT23 4912 ========================================================================== */ 4913 4914 #define Q6_Vqf16_vmpy_Vqf16Vqf16(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_qf16)(Vu,Vv) 4915 #endif /* __HEXAGON_ARCH___ >= 68 */ 4916 4917 #if __HVX_ARCH__ >= 68 4918 /* ========================================================================== 4919 Assembly Syntax: Vd32.qf16=vmpy(Vu32.hf,Vv32.hf) 4920 C Intrinsic Prototype: HVX_Vector Q6_Vqf16_vmpy_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4921 Instruction Type: CVI_VX_DV 4922 Execution Slots: SLOT23 4923 ========================================================================== */ 4924 4925 #define Q6_Vqf16_vmpy_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_qf16_hf)(Vu,Vv) 4926 #endif /* __HEXAGON_ARCH___ >= 68 */ 4927 4928 #if __HVX_ARCH__ >= 68 4929 /* ========================================================================== 4930 Assembly Syntax: Vd32.qf16=vmpy(Vu32.qf16,Vv32.hf) 4931 C Intrinsic Prototype: HVX_Vector Q6_Vqf16_vmpy_Vqf16Vhf(HVX_Vector Vu, HVX_Vector Vv) 4932 Instruction Type: CVI_VX_DV 4933 Execution Slots: SLOT23 4934 ========================================================================== */ 4935 4936 #define Q6_Vqf16_vmpy_Vqf16Vhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_qf16_mix_hf)(Vu,Vv) 4937 #endif /* __HEXAGON_ARCH___ >= 68 */ 4938 4939 #if __HVX_ARCH__ >= 68 4940 /* ========================================================================== 4941 Assembly Syntax: Vd32.qf32=vmpy(Vu32.qf32,Vv32.qf32) 4942 C Intrinsic Prototype: HVX_Vector Q6_Vqf32_vmpy_Vqf32Vqf32(HVX_Vector Vu, HVX_Vector Vv) 4943 Instruction Type: CVI_VX_DV 4944 Execution Slots: SLOT23 4945 ========================================================================== */ 4946 4947 #define Q6_Vqf32_vmpy_Vqf32Vqf32(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_qf32)(Vu,Vv) 4948 #endif /* __HEXAGON_ARCH___ >= 68 */ 4949 4950 #if __HVX_ARCH__ >= 68 4951 /* ========================================================================== 4952 Assembly Syntax: Vdd32.qf32=vmpy(Vu32.hf,Vv32.hf) 4953 C Intrinsic Prototype: HVX_VectorPair Q6_Wqf32_vmpy_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4954 Instruction Type: CVI_VX_DV 4955 Execution Slots: SLOT23 4956 ========================================================================== */ 4957 4958 #define Q6_Wqf32_vmpy_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_qf32_hf)(Vu,Vv) 4959 #endif /* __HEXAGON_ARCH___ >= 68 */ 4960 4961 #if __HVX_ARCH__ >= 68 4962 /* ========================================================================== 4963 Assembly Syntax: Vdd32.qf32=vmpy(Vu32.qf16,Vv32.hf) 4964 C Intrinsic Prototype: HVX_VectorPair Q6_Wqf32_vmpy_Vqf16Vhf(HVX_Vector Vu, HVX_Vector Vv) 4965 Instruction Type: CVI_VX_DV 4966 Execution Slots: SLOT23 4967 ========================================================================== */ 4968 4969 #define Q6_Wqf32_vmpy_Vqf16Vhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_qf32_mix_hf)(Vu,Vv) 4970 #endif /* __HEXAGON_ARCH___ >= 68 */ 4971 4972 #if __HVX_ARCH__ >= 68 4973 /* ========================================================================== 4974 Assembly Syntax: Vdd32.qf32=vmpy(Vu32.qf16,Vv32.qf16) 4975 C Intrinsic Prototype: HVX_VectorPair Q6_Wqf32_vmpy_Vqf16Vqf16(HVX_Vector Vu, HVX_Vector Vv) 4976 Instruction Type: CVI_VX_DV 4977 Execution Slots: SLOT23 4978 ========================================================================== */ 4979 4980 #define Q6_Wqf32_vmpy_Vqf16Vqf16(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_qf32_qf16)(Vu,Vv) 4981 #endif /* __HEXAGON_ARCH___ >= 68 */ 4982 4983 #if __HVX_ARCH__ >= 68 4984 /* ========================================================================== 4985 Assembly Syntax: Vd32.qf32=vmpy(Vu32.sf,Vv32.sf) 4986 C Intrinsic Prototype: HVX_Vector Q6_Vqf32_vmpy_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 4987 Instruction Type: CVI_VX_DV 4988 Execution Slots: SLOT23 4989 ========================================================================== */ 4990 4991 #define Q6_Vqf32_vmpy_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_qf32_sf)(Vu,Vv) 4992 #endif /* __HEXAGON_ARCH___ >= 68 */ 4993 4994 #if __HVX_ARCH__ >= 68 4995 /* ========================================================================== 4996 Assembly Syntax: Vdd32.sf=vmpy(Vu32.hf,Vv32.hf) 4997 C Intrinsic Prototype: HVX_VectorPair Q6_Wsf_vmpy_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 4998 Instruction Type: CVI_VX_DV 4999 Execution Slots: SLOT23 5000 ========================================================================== */ 5001 5002 #define Q6_Wsf_vmpy_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_sf_hf)(Vu,Vv) 5003 #endif /* __HEXAGON_ARCH___ >= 68 */ 5004 5005 #if __HVX_ARCH__ >= 68 5006 /* ========================================================================== 5007 Assembly Syntax: Vxx32.sf+=vmpy(Vu32.hf,Vv32.hf) 5008 C Intrinsic Prototype: HVX_VectorPair Q6_Wsf_vmpyacc_WsfVhfVhf(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 5009 Instruction Type: CVI_VX_DV 5010 Execution Slots: SLOT23 5011 ========================================================================== */ 5012 5013 #define Q6_Wsf_vmpyacc_WsfVhfVhf(Vxx,Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_sf_hf_acc)(Vxx,Vu,Vv) 5014 #endif /* __HEXAGON_ARCH___ >= 68 */ 5015 5016 #if __HVX_ARCH__ >= 68 5017 /* ========================================================================== 5018 Assembly Syntax: Vd32.sf=vmpy(Vu32.sf,Vv32.sf) 5019 C Intrinsic Prototype: HVX_Vector Q6_Vsf_vmpy_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 5020 Instruction Type: CVI_VX_DV 5021 Execution Slots: SLOT23 5022 ========================================================================== */ 5023 5024 #define Q6_Vsf_vmpy_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_sf_sf)(Vu,Vv) 5025 #endif /* __HEXAGON_ARCH___ >= 68 */ 5026 5027 #if __HVX_ARCH__ >= 68 5028 /* ========================================================================== 5029 Assembly Syntax: Vd32.qf16=vsub(Vu32.hf,Vv32.hf) 5030 C Intrinsic Prototype: HVX_Vector Q6_Vqf16_vsub_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 5031 Instruction Type: CVI_VS 5032 Execution Slots: SLOT0123 5033 ========================================================================== */ 5034 5035 #define Q6_Vqf16_vsub_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsub_hf)(Vu,Vv) 5036 #endif /* __HEXAGON_ARCH___ >= 68 */ 5037 5038 #if __HVX_ARCH__ >= 68 5039 /* ========================================================================== 5040 Assembly Syntax: Vd32.hf=vsub(Vu32.hf,Vv32.hf) 5041 C Intrinsic Prototype: HVX_Vector Q6_Vhf_vsub_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 5042 Instruction Type: CVI_VX 5043 Execution Slots: SLOT23 5044 ========================================================================== */ 5045 5046 #define Q6_Vhf_vsub_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsub_hf_hf)(Vu,Vv) 5047 #endif /* __HEXAGON_ARCH___ >= 68 */ 5048 5049 #if __HVX_ARCH__ >= 68 5050 /* ========================================================================== 5051 Assembly Syntax: Vd32.qf16=vsub(Vu32.qf16,Vv32.qf16) 5052 C Intrinsic Prototype: HVX_Vector Q6_Vqf16_vsub_Vqf16Vqf16(HVX_Vector Vu, HVX_Vector Vv) 5053 Instruction Type: CVI_VS 5054 Execution Slots: SLOT0123 5055 ========================================================================== */ 5056 5057 #define Q6_Vqf16_vsub_Vqf16Vqf16(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsub_qf16)(Vu,Vv) 5058 #endif /* __HEXAGON_ARCH___ >= 68 */ 5059 5060 #if __HVX_ARCH__ >= 68 5061 /* ========================================================================== 5062 Assembly Syntax: Vd32.qf16=vsub(Vu32.qf16,Vv32.hf) 5063 C Intrinsic Prototype: HVX_Vector Q6_Vqf16_vsub_Vqf16Vhf(HVX_Vector Vu, HVX_Vector Vv) 5064 Instruction Type: CVI_VS 5065 Execution Slots: SLOT0123 5066 ========================================================================== */ 5067 5068 #define Q6_Vqf16_vsub_Vqf16Vhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsub_qf16_mix)(Vu,Vv) 5069 #endif /* __HEXAGON_ARCH___ >= 68 */ 5070 5071 #if __HVX_ARCH__ >= 68 5072 /* ========================================================================== 5073 Assembly Syntax: Vd32.qf32=vsub(Vu32.qf32,Vv32.qf32) 5074 C Intrinsic Prototype: HVX_Vector Q6_Vqf32_vsub_Vqf32Vqf32(HVX_Vector Vu, HVX_Vector Vv) 5075 Instruction Type: CVI_VS 5076 Execution Slots: SLOT0123 5077 ========================================================================== */ 5078 5079 #define Q6_Vqf32_vsub_Vqf32Vqf32(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsub_qf32)(Vu,Vv) 5080 #endif /* __HEXAGON_ARCH___ >= 68 */ 5081 5082 #if __HVX_ARCH__ >= 68 5083 /* ========================================================================== 5084 Assembly Syntax: Vd32.qf32=vsub(Vu32.qf32,Vv32.sf) 5085 C Intrinsic Prototype: HVX_Vector Q6_Vqf32_vsub_Vqf32Vsf(HVX_Vector Vu, HVX_Vector Vv) 5086 Instruction Type: CVI_VS 5087 Execution Slots: SLOT0123 5088 ========================================================================== */ 5089 5090 #define Q6_Vqf32_vsub_Vqf32Vsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsub_qf32_mix)(Vu,Vv) 5091 #endif /* __HEXAGON_ARCH___ >= 68 */ 5092 5093 #if __HVX_ARCH__ >= 68 5094 /* ========================================================================== 5095 Assembly Syntax: Vd32.qf32=vsub(Vu32.sf,Vv32.sf) 5096 C Intrinsic Prototype: HVX_Vector Q6_Vqf32_vsub_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 5097 Instruction Type: CVI_VS 5098 Execution Slots: SLOT0123 5099 ========================================================================== */ 5100 5101 #define Q6_Vqf32_vsub_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsub_sf)(Vu,Vv) 5102 #endif /* __HEXAGON_ARCH___ >= 68 */ 5103 5104 #if __HVX_ARCH__ >= 68 5105 /* ========================================================================== 5106 Assembly Syntax: Vdd32.sf=vsub(Vu32.hf,Vv32.hf) 5107 C Intrinsic Prototype: HVX_VectorPair Q6_Wsf_vsub_VhfVhf(HVX_Vector Vu, HVX_Vector Vv) 5108 Instruction Type: CVI_VX_DV 5109 Execution Slots: SLOT23 5110 ========================================================================== */ 5111 5112 #define Q6_Wsf_vsub_VhfVhf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsub_sf_hf)(Vu,Vv) 5113 #endif /* __HEXAGON_ARCH___ >= 68 */ 5114 5115 #if __HVX_ARCH__ >= 68 5116 /* ========================================================================== 5117 Assembly Syntax: Vd32.sf=vsub(Vu32.sf,Vv32.sf) 5118 C Intrinsic Prototype: HVX_Vector Q6_Vsf_vsub_VsfVsf(HVX_Vector Vu, HVX_Vector Vv) 5119 Instruction Type: CVI_VX 5120 Execution Slots: SLOT23 5121 ========================================================================== */ 5122 5123 #define Q6_Vsf_vsub_VsfVsf(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsub_sf_sf)(Vu,Vv) 5124 #endif /* __HEXAGON_ARCH___ >= 68 */ 5125 5126 #if __HVX_ARCH__ >= 69 5127 /* ========================================================================== 5128 Assembly Syntax: Vd32.ub=vasr(Vuu32.uh,Vv32.ub):rnd:sat 5129 C Intrinsic Prototype: HVX_Vector Q6_Vub_vasr_WuhVub_rnd_sat(HVX_VectorPair Vuu, HVX_Vector Vv) 5130 Instruction Type: CVI_VS 5131 Execution Slots: SLOT0123 5132 ========================================================================== */ 5133 5134 #define Q6_Vub_vasr_WuhVub_rnd_sat(Vuu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrvuhubrndsat)(Vuu,Vv) 5135 #endif /* __HEXAGON_ARCH___ >= 69 */ 5136 5137 #if __HVX_ARCH__ >= 69 5138 /* ========================================================================== 5139 Assembly Syntax: Vd32.ub=vasr(Vuu32.uh,Vv32.ub):sat 5140 C Intrinsic Prototype: HVX_Vector Q6_Vub_vasr_WuhVub_sat(HVX_VectorPair Vuu, HVX_Vector Vv) 5141 Instruction Type: CVI_VS 5142 Execution Slots: SLOT0123 5143 ========================================================================== */ 5144 5145 #define Q6_Vub_vasr_WuhVub_sat(Vuu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrvuhubsat)(Vuu,Vv) 5146 #endif /* __HEXAGON_ARCH___ >= 69 */ 5147 5148 #if __HVX_ARCH__ >= 69 5149 /* ========================================================================== 5150 Assembly Syntax: Vd32.uh=vasr(Vuu32.w,Vv32.uh):rnd:sat 5151 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vasr_WwVuh_rnd_sat(HVX_VectorPair Vuu, HVX_Vector Vv) 5152 Instruction Type: CVI_VS 5153 Execution Slots: SLOT0123 5154 ========================================================================== */ 5155 5156 #define Q6_Vuh_vasr_WwVuh_rnd_sat(Vuu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrvwuhrndsat)(Vuu,Vv) 5157 #endif /* __HEXAGON_ARCH___ >= 69 */ 5158 5159 #if __HVX_ARCH__ >= 69 5160 /* ========================================================================== 5161 Assembly Syntax: Vd32.uh=vasr(Vuu32.w,Vv32.uh):sat 5162 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vasr_WwVuh_sat(HVX_VectorPair Vuu, HVX_Vector Vv) 5163 Instruction Type: CVI_VS 5164 Execution Slots: SLOT0123 5165 ========================================================================== */ 5166 5167 #define Q6_Vuh_vasr_WwVuh_sat(Vuu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrvwuhsat)(Vuu,Vv) 5168 #endif /* __HEXAGON_ARCH___ >= 69 */ 5169 5170 #if __HVX_ARCH__ >= 69 5171 /* ========================================================================== 5172 Assembly Syntax: Vd32.uh=vmpy(Vu32.uh,Vv32.uh):>>16 5173 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vmpy_VuhVuh_rs16(HVX_Vector Vu, HVX_Vector Vv) 5174 Instruction Type: CVI_VX 5175 Execution Slots: SLOT23 5176 ========================================================================== */ 5177 5178 #define Q6_Vuh_vmpy_VuhVuh_rs16(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuhvs)(Vu,Vv) 5179 #endif /* __HEXAGON_ARCH___ >= 69 */ 5180 5181 #endif /* __HVX__ */ 5182 5183 #endif 5184