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 13 #ifndef _HVX_HEXAGON_PROTOS_H_ 14 #define _HVX_HEXAGON_PROTOS_H_ 1 15 16 #ifdef __HVX__ 17 #if __HVX_LENGTH__ == 128 18 #define __BUILTIN_VECTOR_WRAP(a) a ## _128B 19 #else 20 #define __BUILTIN_VECTOR_WRAP(a) a 21 #endif 22 23 #if __HVX_ARCH__ >= 60 24 /* ========================================================================== 25 Assembly Syntax: Rd32=vextract(Vu32,Rs32) 26 C Intrinsic Prototype: Word32 Q6_R_vextract_VR(HVX_Vector Vu, Word32 Rs) 27 Instruction Type: LD 28 Execution Slots: SLOT0 29 ========================================================================== */ 30 31 #define Q6_R_vextract_VR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_extractw) 32 #endif /* __HEXAGON_ARCH___ >= 60 */ 33 34 #if __HVX_ARCH__ >= 60 35 /* ========================================================================== 36 Assembly Syntax: Vd32=hi(Vss32) 37 C Intrinsic Prototype: HVX_Vector Q6_V_hi_W(HVX_VectorPair Vss) 38 Instruction Type: CVI_VA 39 Execution Slots: SLOT0123 40 ========================================================================== */ 41 42 #define Q6_V_hi_W __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_hi) 43 #endif /* __HEXAGON_ARCH___ >= 60 */ 44 45 #if __HVX_ARCH__ >= 60 46 /* ========================================================================== 47 Assembly Syntax: Vd32=lo(Vss32) 48 C Intrinsic Prototype: HVX_Vector Q6_V_lo_W(HVX_VectorPair Vss) 49 Instruction Type: CVI_VA 50 Execution Slots: SLOT0123 51 ========================================================================== */ 52 53 #define Q6_V_lo_W __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_lo) 54 #endif /* __HEXAGON_ARCH___ >= 60 */ 55 56 #if __HVX_ARCH__ >= 60 57 /* ========================================================================== 58 Assembly Syntax: Vd32=vsplat(Rt32) 59 C Intrinsic Prototype: HVX_Vector Q6_V_vsplat_R(Word32 Rt) 60 Instruction Type: CVI_VX_LATE 61 Execution Slots: SLOT23 62 ========================================================================== */ 63 64 #define Q6_V_vsplat_R __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_lvsplatw) 65 #endif /* __HEXAGON_ARCH___ >= 60 */ 66 67 #if __HVX_ARCH__ >= 60 68 /* ========================================================================== 69 Assembly Syntax: Qd4=and(Qs4,Qt4) 70 C Intrinsic Prototype: HVX_VectorPred Q6_Q_and_QQ(HVX_VectorPred Qs, HVX_VectorPred Qt) 71 Instruction Type: CVI_VA_DV 72 Execution Slots: SLOT0123 73 ========================================================================== */ 74 75 #define Q6_Q_and_QQ __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_and) 76 #endif /* __HEXAGON_ARCH___ >= 60 */ 77 78 #if __HVX_ARCH__ >= 60 79 /* ========================================================================== 80 Assembly Syntax: Qd4=and(Qs4,!Qt4) 81 C Intrinsic Prototype: HVX_VectorPred Q6_Q_and_QQn(HVX_VectorPred Qs, HVX_VectorPred Qt) 82 Instruction Type: CVI_VA_DV 83 Execution Slots: SLOT0123 84 ========================================================================== */ 85 86 #define Q6_Q_and_QQn __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_and_n) 87 #endif /* __HEXAGON_ARCH___ >= 60 */ 88 89 #if __HVX_ARCH__ >= 60 90 /* ========================================================================== 91 Assembly Syntax: Qd4=not(Qs4) 92 C Intrinsic Prototype: HVX_VectorPred Q6_Q_not_Q(HVX_VectorPred Qs) 93 Instruction Type: CVI_VA 94 Execution Slots: SLOT0123 95 ========================================================================== */ 96 97 #define Q6_Q_not_Q __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_not) 98 #endif /* __HEXAGON_ARCH___ >= 60 */ 99 100 #if __HVX_ARCH__ >= 60 101 /* ========================================================================== 102 Assembly Syntax: Qd4=or(Qs4,Qt4) 103 C Intrinsic Prototype: HVX_VectorPred Q6_Q_or_QQ(HVX_VectorPred Qs, HVX_VectorPred Qt) 104 Instruction Type: CVI_VA_DV 105 Execution Slots: SLOT0123 106 ========================================================================== */ 107 108 #define Q6_Q_or_QQ __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_or) 109 #endif /* __HEXAGON_ARCH___ >= 60 */ 110 111 #if __HVX_ARCH__ >= 60 112 /* ========================================================================== 113 Assembly Syntax: Qd4=or(Qs4,!Qt4) 114 C Intrinsic Prototype: HVX_VectorPred Q6_Q_or_QQn(HVX_VectorPred Qs, HVX_VectorPred Qt) 115 Instruction Type: CVI_VA_DV 116 Execution Slots: SLOT0123 117 ========================================================================== */ 118 119 #define Q6_Q_or_QQn __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_or_n) 120 #endif /* __HEXAGON_ARCH___ >= 60 */ 121 122 #if __HVX_ARCH__ >= 60 123 /* ========================================================================== 124 Assembly Syntax: Qd4=vsetq(Rt32) 125 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vsetq_R(Word32 Rt) 126 Instruction Type: CVI_VP 127 Execution Slots: SLOT0123 128 ========================================================================== */ 129 130 #define Q6_Q_vsetq_R __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_scalar2) 131 #endif /* __HEXAGON_ARCH___ >= 60 */ 132 133 #if __HVX_ARCH__ >= 60 134 /* ========================================================================== 135 Assembly Syntax: Qd4=xor(Qs4,Qt4) 136 C Intrinsic Prototype: HVX_VectorPred Q6_Q_xor_QQ(HVX_VectorPred Qs, HVX_VectorPred Qt) 137 Instruction Type: CVI_VA_DV 138 Execution Slots: SLOT0123 139 ========================================================================== */ 140 141 #define Q6_Q_xor_QQ __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_xor) 142 #endif /* __HEXAGON_ARCH___ >= 60 */ 143 144 #if __HVX_ARCH__ >= 60 145 /* ========================================================================== 146 Assembly Syntax: if (!Qv4) vmem(Rt32+#s4)=Vs32 147 C Intrinsic Prototype: void Q6_vmem_QnRIV(HVX_VectorPred Qv, HVX_Vector* Rt, HVX_Vector Vs) 148 Instruction Type: CVI_VM_ST 149 Execution Slots: SLOT0 150 ========================================================================== */ 151 152 #define Q6_vmem_QnRIV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vS32b_nqpred_ai) 153 #endif /* __HEXAGON_ARCH___ >= 60 */ 154 155 #if __HVX_ARCH__ >= 60 156 /* ========================================================================== 157 Assembly Syntax: if (!Qv4) vmem(Rt32+#s4):nt=Vs32 158 C Intrinsic Prototype: void Q6_vmem_QnRIV_nt(HVX_VectorPred Qv, HVX_Vector* Rt, HVX_Vector Vs) 159 Instruction Type: CVI_VM_ST 160 Execution Slots: SLOT0 161 ========================================================================== */ 162 163 #define Q6_vmem_QnRIV_nt __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vS32b_nt_nqpred_ai) 164 #endif /* __HEXAGON_ARCH___ >= 60 */ 165 166 #if __HVX_ARCH__ >= 60 167 /* ========================================================================== 168 Assembly Syntax: if (Qv4) vmem(Rt32+#s4):nt=Vs32 169 C Intrinsic Prototype: void Q6_vmem_QRIV_nt(HVX_VectorPred Qv, HVX_Vector* Rt, HVX_Vector Vs) 170 Instruction Type: CVI_VM_ST 171 Execution Slots: SLOT0 172 ========================================================================== */ 173 174 #define Q6_vmem_QRIV_nt __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vS32b_nt_qpred_ai) 175 #endif /* __HEXAGON_ARCH___ >= 60 */ 176 177 #if __HVX_ARCH__ >= 60 178 /* ========================================================================== 179 Assembly Syntax: if (Qv4) vmem(Rt32+#s4)=Vs32 180 C Intrinsic Prototype: void Q6_vmem_QRIV(HVX_VectorPred Qv, HVX_Vector* Rt, HVX_Vector Vs) 181 Instruction Type: CVI_VM_ST 182 Execution Slots: SLOT0 183 ========================================================================== */ 184 185 #define Q6_vmem_QRIV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vS32b_qpred_ai) 186 #endif /* __HEXAGON_ARCH___ >= 60 */ 187 188 #if __HVX_ARCH__ >= 60 189 /* ========================================================================== 190 Assembly Syntax: Vd32.uh=vabsdiff(Vu32.h,Vv32.h) 191 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vabsdiff_VhVh(HVX_Vector Vu, HVX_Vector Vv) 192 Instruction Type: CVI_VX 193 Execution Slots: SLOT23 194 ========================================================================== */ 195 196 #define Q6_Vuh_vabsdiff_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsdiffh) 197 #endif /* __HEXAGON_ARCH___ >= 60 */ 198 199 #if __HVX_ARCH__ >= 60 200 /* ========================================================================== 201 Assembly Syntax: Vd32.ub=vabsdiff(Vu32.ub,Vv32.ub) 202 C Intrinsic Prototype: HVX_Vector Q6_Vub_vabsdiff_VubVub(HVX_Vector Vu, HVX_Vector Vv) 203 Instruction Type: CVI_VX 204 Execution Slots: SLOT23 205 ========================================================================== */ 206 207 #define Q6_Vub_vabsdiff_VubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsdiffub) 208 #endif /* __HEXAGON_ARCH___ >= 60 */ 209 210 #if __HVX_ARCH__ >= 60 211 /* ========================================================================== 212 Assembly Syntax: Vd32.uh=vabsdiff(Vu32.uh,Vv32.uh) 213 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vabsdiff_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 214 Instruction Type: CVI_VX 215 Execution Slots: SLOT23 216 ========================================================================== */ 217 218 #define Q6_Vuh_vabsdiff_VuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsdiffuh) 219 #endif /* __HEXAGON_ARCH___ >= 60 */ 220 221 #if __HVX_ARCH__ >= 60 222 /* ========================================================================== 223 Assembly Syntax: Vd32.uw=vabsdiff(Vu32.w,Vv32.w) 224 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vabsdiff_VwVw(HVX_Vector Vu, HVX_Vector Vv) 225 Instruction Type: CVI_VX 226 Execution Slots: SLOT23 227 ========================================================================== */ 228 229 #define Q6_Vuw_vabsdiff_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsdiffw) 230 #endif /* __HEXAGON_ARCH___ >= 60 */ 231 232 #if __HVX_ARCH__ >= 60 233 /* ========================================================================== 234 Assembly Syntax: Vd32.h=vabs(Vu32.h) 235 C Intrinsic Prototype: HVX_Vector Q6_Vh_vabs_Vh(HVX_Vector Vu) 236 Instruction Type: CVI_VA 237 Execution Slots: SLOT0123 238 ========================================================================== */ 239 240 #define Q6_Vh_vabs_Vh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsh) 241 #endif /* __HEXAGON_ARCH___ >= 60 */ 242 243 #if __HVX_ARCH__ >= 60 244 /* ========================================================================== 245 Assembly Syntax: Vd32.h=vabs(Vu32.h):sat 246 C Intrinsic Prototype: HVX_Vector Q6_Vh_vabs_Vh_sat(HVX_Vector Vu) 247 Instruction Type: CVI_VA 248 Execution Slots: SLOT0123 249 ========================================================================== */ 250 251 #define Q6_Vh_vabs_Vh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsh_sat) 252 #endif /* __HEXAGON_ARCH___ >= 60 */ 253 254 #if __HVX_ARCH__ >= 60 255 /* ========================================================================== 256 Assembly Syntax: Vd32.w=vabs(Vu32.w) 257 C Intrinsic Prototype: HVX_Vector Q6_Vw_vabs_Vw(HVX_Vector Vu) 258 Instruction Type: CVI_VA 259 Execution Slots: SLOT0123 260 ========================================================================== */ 261 262 #define Q6_Vw_vabs_Vw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsw) 263 #endif /* __HEXAGON_ARCH___ >= 60 */ 264 265 #if __HVX_ARCH__ >= 60 266 /* ========================================================================== 267 Assembly Syntax: Vd32.w=vabs(Vu32.w):sat 268 C Intrinsic Prototype: HVX_Vector Q6_Vw_vabs_Vw_sat(HVX_Vector Vu) 269 Instruction Type: CVI_VA 270 Execution Slots: SLOT0123 271 ========================================================================== */ 272 273 #define Q6_Vw_vabs_Vw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsw_sat) 274 #endif /* __HEXAGON_ARCH___ >= 60 */ 275 276 #if __HVX_ARCH__ >= 60 277 /* ========================================================================== 278 Assembly Syntax: Vd32.b=vadd(Vu32.b,Vv32.b) 279 C Intrinsic Prototype: HVX_Vector Q6_Vb_vadd_VbVb(HVX_Vector Vu, HVX_Vector Vv) 280 Instruction Type: CVI_VA 281 Execution Slots: SLOT0123 282 ========================================================================== */ 283 284 #define Q6_Vb_vadd_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddb) 285 #endif /* __HEXAGON_ARCH___ >= 60 */ 286 287 #if __HVX_ARCH__ >= 60 288 /* ========================================================================== 289 Assembly Syntax: Vdd32.b=vadd(Vuu32.b,Vvv32.b) 290 C Intrinsic Prototype: HVX_VectorPair Q6_Wb_vadd_WbWb(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 291 Instruction Type: CVI_VA_DV 292 Execution Slots: SLOT0123 293 ========================================================================== */ 294 295 #define Q6_Wb_vadd_WbWb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddb_dv) 296 #endif /* __HEXAGON_ARCH___ >= 60 */ 297 298 #if __HVX_ARCH__ >= 60 299 /* ========================================================================== 300 Assembly Syntax: if (!Qv4) Vx32.b+=Vu32.b 301 C Intrinsic Prototype: HVX_Vector Q6_Vb_condacc_QnVbVb(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 302 Instruction Type: CVI_VA 303 Execution Slots: SLOT0123 304 ========================================================================== */ 305 306 #define Q6_Vb_condacc_QnVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddbnq) 307 #endif /* __HEXAGON_ARCH___ >= 60 */ 308 309 #if __HVX_ARCH__ >= 60 310 /* ========================================================================== 311 Assembly Syntax: if (Qv4) Vx32.b+=Vu32.b 312 C Intrinsic Prototype: HVX_Vector Q6_Vb_condacc_QVbVb(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 313 Instruction Type: CVI_VA 314 Execution Slots: SLOT0123 315 ========================================================================== */ 316 317 #define Q6_Vb_condacc_QVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddbq) 318 #endif /* __HEXAGON_ARCH___ >= 60 */ 319 320 #if __HVX_ARCH__ >= 60 321 /* ========================================================================== 322 Assembly Syntax: Vd32.h=vadd(Vu32.h,Vv32.h) 323 C Intrinsic Prototype: HVX_Vector Q6_Vh_vadd_VhVh(HVX_Vector Vu, HVX_Vector Vv) 324 Instruction Type: CVI_VA 325 Execution Slots: SLOT0123 326 ========================================================================== */ 327 328 #define Q6_Vh_vadd_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddh) 329 #endif /* __HEXAGON_ARCH___ >= 60 */ 330 331 #if __HVX_ARCH__ >= 60 332 /* ========================================================================== 333 Assembly Syntax: Vdd32.h=vadd(Vuu32.h,Vvv32.h) 334 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vadd_WhWh(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 335 Instruction Type: CVI_VA_DV 336 Execution Slots: SLOT0123 337 ========================================================================== */ 338 339 #define Q6_Wh_vadd_WhWh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddh_dv) 340 #endif /* __HEXAGON_ARCH___ >= 60 */ 341 342 #if __HVX_ARCH__ >= 60 343 /* ========================================================================== 344 Assembly Syntax: if (!Qv4) Vx32.h+=Vu32.h 345 C Intrinsic Prototype: HVX_Vector Q6_Vh_condacc_QnVhVh(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 346 Instruction Type: CVI_VA 347 Execution Slots: SLOT0123 348 ========================================================================== */ 349 350 #define Q6_Vh_condacc_QnVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhnq) 351 #endif /* __HEXAGON_ARCH___ >= 60 */ 352 353 #if __HVX_ARCH__ >= 60 354 /* ========================================================================== 355 Assembly Syntax: if (Qv4) Vx32.h+=Vu32.h 356 C Intrinsic Prototype: HVX_Vector Q6_Vh_condacc_QVhVh(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 357 Instruction Type: CVI_VA 358 Execution Slots: SLOT0123 359 ========================================================================== */ 360 361 #define Q6_Vh_condacc_QVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhq) 362 #endif /* __HEXAGON_ARCH___ >= 60 */ 363 364 #if __HVX_ARCH__ >= 60 365 /* ========================================================================== 366 Assembly Syntax: Vd32.h=vadd(Vu32.h,Vv32.h):sat 367 C Intrinsic Prototype: HVX_Vector Q6_Vh_vadd_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 368 Instruction Type: CVI_VA 369 Execution Slots: SLOT0123 370 ========================================================================== */ 371 372 #define Q6_Vh_vadd_VhVh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhsat) 373 #endif /* __HEXAGON_ARCH___ >= 60 */ 374 375 #if __HVX_ARCH__ >= 60 376 /* ========================================================================== 377 Assembly Syntax: Vdd32.h=vadd(Vuu32.h,Vvv32.h):sat 378 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vadd_WhWh_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 379 Instruction Type: CVI_VA_DV 380 Execution Slots: SLOT0123 381 ========================================================================== */ 382 383 #define Q6_Wh_vadd_WhWh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhsat_dv) 384 #endif /* __HEXAGON_ARCH___ >= 60 */ 385 386 #if __HVX_ARCH__ >= 60 387 /* ========================================================================== 388 Assembly Syntax: Vdd32.w=vadd(Vu32.h,Vv32.h) 389 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vadd_VhVh(HVX_Vector Vu, HVX_Vector Vv) 390 Instruction Type: CVI_VX_DV 391 Execution Slots: SLOT23 392 ========================================================================== */ 393 394 #define Q6_Ww_vadd_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhw) 395 #endif /* __HEXAGON_ARCH___ >= 60 */ 396 397 #if __HVX_ARCH__ >= 60 398 /* ========================================================================== 399 Assembly Syntax: Vdd32.h=vadd(Vu32.ub,Vv32.ub) 400 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vadd_VubVub(HVX_Vector Vu, HVX_Vector Vv) 401 Instruction Type: CVI_VX_DV 402 Execution Slots: SLOT23 403 ========================================================================== */ 404 405 #define Q6_Wh_vadd_VubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddubh) 406 #endif /* __HEXAGON_ARCH___ >= 60 */ 407 408 #if __HVX_ARCH__ >= 60 409 /* ========================================================================== 410 Assembly Syntax: Vd32.ub=vadd(Vu32.ub,Vv32.ub):sat 411 C Intrinsic Prototype: HVX_Vector Q6_Vub_vadd_VubVub_sat(HVX_Vector Vu, HVX_Vector Vv) 412 Instruction Type: CVI_VA 413 Execution Slots: SLOT0123 414 ========================================================================== */ 415 416 #define Q6_Vub_vadd_VubVub_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddubsat) 417 #endif /* __HEXAGON_ARCH___ >= 60 */ 418 419 #if __HVX_ARCH__ >= 60 420 /* ========================================================================== 421 Assembly Syntax: Vdd32.ub=vadd(Vuu32.ub,Vvv32.ub):sat 422 C Intrinsic Prototype: HVX_VectorPair Q6_Wub_vadd_WubWub_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 423 Instruction Type: CVI_VA_DV 424 Execution Slots: SLOT0123 425 ========================================================================== */ 426 427 #define Q6_Wub_vadd_WubWub_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddubsat_dv) 428 #endif /* __HEXAGON_ARCH___ >= 60 */ 429 430 #if __HVX_ARCH__ >= 60 431 /* ========================================================================== 432 Assembly Syntax: Vd32.uh=vadd(Vu32.uh,Vv32.uh):sat 433 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vadd_VuhVuh_sat(HVX_Vector Vu, HVX_Vector Vv) 434 Instruction Type: CVI_VA 435 Execution Slots: SLOT0123 436 ========================================================================== */ 437 438 #define Q6_Vuh_vadd_VuhVuh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduhsat) 439 #endif /* __HEXAGON_ARCH___ >= 60 */ 440 441 #if __HVX_ARCH__ >= 60 442 /* ========================================================================== 443 Assembly Syntax: Vdd32.uh=vadd(Vuu32.uh,Vvv32.uh):sat 444 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vadd_WuhWuh_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 445 Instruction Type: CVI_VA_DV 446 Execution Slots: SLOT0123 447 ========================================================================== */ 448 449 #define Q6_Wuh_vadd_WuhWuh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduhsat_dv) 450 #endif /* __HEXAGON_ARCH___ >= 60 */ 451 452 #if __HVX_ARCH__ >= 60 453 /* ========================================================================== 454 Assembly Syntax: Vdd32.w=vadd(Vu32.uh,Vv32.uh) 455 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vadd_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 456 Instruction Type: CVI_VX_DV 457 Execution Slots: SLOT23 458 ========================================================================== */ 459 460 #define Q6_Ww_vadd_VuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduhw) 461 #endif /* __HEXAGON_ARCH___ >= 60 */ 462 463 #if __HVX_ARCH__ >= 60 464 /* ========================================================================== 465 Assembly Syntax: Vd32.w=vadd(Vu32.w,Vv32.w) 466 C Intrinsic Prototype: HVX_Vector Q6_Vw_vadd_VwVw(HVX_Vector Vu, HVX_Vector Vv) 467 Instruction Type: CVI_VA 468 Execution Slots: SLOT0123 469 ========================================================================== */ 470 471 #define Q6_Vw_vadd_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddw) 472 #endif /* __HEXAGON_ARCH___ >= 60 */ 473 474 #if __HVX_ARCH__ >= 60 475 /* ========================================================================== 476 Assembly Syntax: Vdd32.w=vadd(Vuu32.w,Vvv32.w) 477 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vadd_WwWw(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 478 Instruction Type: CVI_VA_DV 479 Execution Slots: SLOT0123 480 ========================================================================== */ 481 482 #define Q6_Ww_vadd_WwWw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddw_dv) 483 #endif /* __HEXAGON_ARCH___ >= 60 */ 484 485 #if __HVX_ARCH__ >= 60 486 /* ========================================================================== 487 Assembly Syntax: if (!Qv4) Vx32.w+=Vu32.w 488 C Intrinsic Prototype: HVX_Vector Q6_Vw_condacc_QnVwVw(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 489 Instruction Type: CVI_VA 490 Execution Slots: SLOT0123 491 ========================================================================== */ 492 493 #define Q6_Vw_condacc_QnVwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddwnq) 494 #endif /* __HEXAGON_ARCH___ >= 60 */ 495 496 #if __HVX_ARCH__ >= 60 497 /* ========================================================================== 498 Assembly Syntax: if (Qv4) Vx32.w+=Vu32.w 499 C Intrinsic Prototype: HVX_Vector Q6_Vw_condacc_QVwVw(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 500 Instruction Type: CVI_VA 501 Execution Slots: SLOT0123 502 ========================================================================== */ 503 504 #define Q6_Vw_condacc_QVwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddwq) 505 #endif /* __HEXAGON_ARCH___ >= 60 */ 506 507 #if __HVX_ARCH__ >= 60 508 /* ========================================================================== 509 Assembly Syntax: Vd32.w=vadd(Vu32.w,Vv32.w):sat 510 C Intrinsic Prototype: HVX_Vector Q6_Vw_vadd_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 511 Instruction Type: CVI_VA 512 Execution Slots: SLOT0123 513 ========================================================================== */ 514 515 #define Q6_Vw_vadd_VwVw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddwsat) 516 #endif /* __HEXAGON_ARCH___ >= 60 */ 517 518 #if __HVX_ARCH__ >= 60 519 /* ========================================================================== 520 Assembly Syntax: Vdd32.w=vadd(Vuu32.w,Vvv32.w):sat 521 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vadd_WwWw_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 522 Instruction Type: CVI_VA_DV 523 Execution Slots: SLOT0123 524 ========================================================================== */ 525 526 #define Q6_Ww_vadd_WwWw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddwsat_dv) 527 #endif /* __HEXAGON_ARCH___ >= 60 */ 528 529 #if __HVX_ARCH__ >= 60 530 /* ========================================================================== 531 Assembly Syntax: Vd32=valign(Vu32,Vv32,Rt8) 532 C Intrinsic Prototype: HVX_Vector Q6_V_valign_VVR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 533 Instruction Type: CVI_VP 534 Execution Slots: SLOT0123 535 ========================================================================== */ 536 537 #define Q6_V_valign_VVR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_valignb) 538 #endif /* __HEXAGON_ARCH___ >= 60 */ 539 540 #if __HVX_ARCH__ >= 60 541 /* ========================================================================== 542 Assembly Syntax: Vd32=valign(Vu32,Vv32,#u3) 543 C Intrinsic Prototype: HVX_Vector Q6_V_valign_VVI(HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 544 Instruction Type: CVI_VP 545 Execution Slots: SLOT0123 546 ========================================================================== */ 547 548 #define Q6_V_valign_VVI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_valignbi) 549 #endif /* __HEXAGON_ARCH___ >= 60 */ 550 551 #if __HVX_ARCH__ >= 60 552 /* ========================================================================== 553 Assembly Syntax: Vd32=vand(Vu32,Vv32) 554 C Intrinsic Prototype: HVX_Vector Q6_V_vand_VV(HVX_Vector Vu, HVX_Vector Vv) 555 Instruction Type: CVI_VA 556 Execution Slots: SLOT0123 557 ========================================================================== */ 558 559 #define Q6_V_vand_VV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vand) 560 #endif /* __HEXAGON_ARCH___ >= 60 */ 561 562 #if __HVX_ARCH__ >= 60 563 /* ========================================================================== 564 Assembly Syntax: Vd32=vand(Qu4,Rt32) 565 C Intrinsic Prototype: HVX_Vector Q6_V_vand_QR(HVX_VectorPred Qu, Word32 Rt) 566 Instruction Type: CVI_VX_LATE 567 Execution Slots: SLOT23 568 ========================================================================== */ 569 570 #define Q6_V_vand_QR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt) 571 #endif /* __HEXAGON_ARCH___ >= 60 */ 572 573 #if __HVX_ARCH__ >= 60 574 /* ========================================================================== 575 Assembly Syntax: Vx32|=vand(Qu4,Rt32) 576 C Intrinsic Prototype: HVX_Vector Q6_V_vandor_VQR(HVX_Vector Vx, HVX_VectorPred Qu, Word32 Rt) 577 Instruction Type: CVI_VX_LATE 578 Execution Slots: SLOT23 579 ========================================================================== */ 580 581 #define Q6_V_vandor_VQR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt_acc) 582 #endif /* __HEXAGON_ARCH___ >= 60 */ 583 584 #if __HVX_ARCH__ >= 60 585 /* ========================================================================== 586 Assembly Syntax: Qd4=vand(Vu32,Rt32) 587 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vand_VR(HVX_Vector Vu, Word32 Rt) 588 Instruction Type: CVI_VX_LATE 589 Execution Slots: SLOT23 590 ========================================================================== */ 591 592 #define Q6_Q_vand_VR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt) 593 #endif /* __HEXAGON_ARCH___ >= 60 */ 594 595 #if __HVX_ARCH__ >= 60 596 /* ========================================================================== 597 Assembly Syntax: Qx4|=vand(Vu32,Rt32) 598 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vandor_QVR(HVX_VectorPred Qx, HVX_Vector Vu, Word32 Rt) 599 Instruction Type: CVI_VX_LATE 600 Execution Slots: SLOT23 601 ========================================================================== */ 602 603 #define Q6_Q_vandor_QVR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt_acc) 604 #endif /* __HEXAGON_ARCH___ >= 60 */ 605 606 #if __HVX_ARCH__ >= 60 607 /* ========================================================================== 608 Assembly Syntax: Vd32.h=vasl(Vu32.h,Rt32) 609 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasl_VhR(HVX_Vector Vu, Word32 Rt) 610 Instruction Type: CVI_VS 611 Execution Slots: SLOT0123 612 ========================================================================== */ 613 614 #define Q6_Vh_vasl_VhR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslh) 615 #endif /* __HEXAGON_ARCH___ >= 60 */ 616 617 #if __HVX_ARCH__ >= 60 618 /* ========================================================================== 619 Assembly Syntax: Vd32.h=vasl(Vu32.h,Vv32.h) 620 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasl_VhVh(HVX_Vector Vu, HVX_Vector Vv) 621 Instruction Type: CVI_VS 622 Execution Slots: SLOT0123 623 ========================================================================== */ 624 625 #define Q6_Vh_vasl_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslhv) 626 #endif /* __HEXAGON_ARCH___ >= 60 */ 627 628 #if __HVX_ARCH__ >= 60 629 /* ========================================================================== 630 Assembly Syntax: Vd32.w=vasl(Vu32.w,Rt32) 631 C Intrinsic Prototype: HVX_Vector Q6_Vw_vasl_VwR(HVX_Vector Vu, Word32 Rt) 632 Instruction Type: CVI_VS 633 Execution Slots: SLOT0123 634 ========================================================================== */ 635 636 #define Q6_Vw_vasl_VwR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslw) 637 #endif /* __HEXAGON_ARCH___ >= 60 */ 638 639 #if __HVX_ARCH__ >= 60 640 /* ========================================================================== 641 Assembly Syntax: Vx32.w+=vasl(Vu32.w,Rt32) 642 C Intrinsic Prototype: HVX_Vector Q6_Vw_vaslacc_VwVwR(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 643 Instruction Type: CVI_VS 644 Execution Slots: SLOT0123 645 ========================================================================== */ 646 647 #define Q6_Vw_vaslacc_VwVwR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslw_acc) 648 #endif /* __HEXAGON_ARCH___ >= 60 */ 649 650 #if __HVX_ARCH__ >= 60 651 /* ========================================================================== 652 Assembly Syntax: Vd32.w=vasl(Vu32.w,Vv32.w) 653 C Intrinsic Prototype: HVX_Vector Q6_Vw_vasl_VwVw(HVX_Vector Vu, HVX_Vector Vv) 654 Instruction Type: CVI_VS 655 Execution Slots: SLOT0123 656 ========================================================================== */ 657 658 #define Q6_Vw_vasl_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslwv) 659 #endif /* __HEXAGON_ARCH___ >= 60 */ 660 661 #if __HVX_ARCH__ >= 60 662 /* ========================================================================== 663 Assembly Syntax: Vd32.h=vasr(Vu32.h,Rt32) 664 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasr_VhR(HVX_Vector Vu, Word32 Rt) 665 Instruction Type: CVI_VS 666 Execution Slots: SLOT0123 667 ========================================================================== */ 668 669 #define Q6_Vh_vasr_VhR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrh) 670 #endif /* __HEXAGON_ARCH___ >= 60 */ 671 672 #if __HVX_ARCH__ >= 60 673 /* ========================================================================== 674 Assembly Syntax: Vd32.b=vasr(Vu32.h,Vv32.h,Rt8):rnd:sat 675 C Intrinsic Prototype: HVX_Vector Q6_Vb_vasr_VhVhR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 676 Instruction Type: CVI_VS 677 Execution Slots: SLOT0123 678 ========================================================================== */ 679 680 #define Q6_Vb_vasr_VhVhR_rnd_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrhbrndsat) 681 #endif /* __HEXAGON_ARCH___ >= 60 */ 682 683 #if __HVX_ARCH__ >= 60 684 /* ========================================================================== 685 Assembly Syntax: Vd32.ub=vasr(Vu32.h,Vv32.h,Rt8):rnd:sat 686 C Intrinsic Prototype: HVX_Vector Q6_Vub_vasr_VhVhR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 687 Instruction Type: CVI_VS 688 Execution Slots: SLOT0123 689 ========================================================================== */ 690 691 #define Q6_Vub_vasr_VhVhR_rnd_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrhubrndsat) 692 #endif /* __HEXAGON_ARCH___ >= 60 */ 693 694 #if __HVX_ARCH__ >= 60 695 /* ========================================================================== 696 Assembly Syntax: Vd32.ub=vasr(Vu32.h,Vv32.h,Rt8):sat 697 C Intrinsic Prototype: HVX_Vector Q6_Vub_vasr_VhVhR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 698 Instruction Type: CVI_VS 699 Execution Slots: SLOT0123 700 ========================================================================== */ 701 702 #define Q6_Vub_vasr_VhVhR_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrhubsat) 703 #endif /* __HEXAGON_ARCH___ >= 60 */ 704 705 #if __HVX_ARCH__ >= 60 706 /* ========================================================================== 707 Assembly Syntax: Vd32.h=vasr(Vu32.h,Vv32.h) 708 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasr_VhVh(HVX_Vector Vu, HVX_Vector Vv) 709 Instruction Type: CVI_VS 710 Execution Slots: SLOT0123 711 ========================================================================== */ 712 713 #define Q6_Vh_vasr_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrhv) 714 #endif /* __HEXAGON_ARCH___ >= 60 */ 715 716 #if __HVX_ARCH__ >= 60 717 /* ========================================================================== 718 Assembly Syntax: Vd32.w=vasr(Vu32.w,Rt32) 719 C Intrinsic Prototype: HVX_Vector Q6_Vw_vasr_VwR(HVX_Vector Vu, Word32 Rt) 720 Instruction Type: CVI_VS 721 Execution Slots: SLOT0123 722 ========================================================================== */ 723 724 #define Q6_Vw_vasr_VwR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrw) 725 #endif /* __HEXAGON_ARCH___ >= 60 */ 726 727 #if __HVX_ARCH__ >= 60 728 /* ========================================================================== 729 Assembly Syntax: Vx32.w+=vasr(Vu32.w,Rt32) 730 C Intrinsic Prototype: HVX_Vector Q6_Vw_vasracc_VwVwR(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 731 Instruction Type: CVI_VS 732 Execution Slots: SLOT0123 733 ========================================================================== */ 734 735 #define Q6_Vw_vasracc_VwVwR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrw_acc) 736 #endif /* __HEXAGON_ARCH___ >= 60 */ 737 738 #if __HVX_ARCH__ >= 60 739 /* ========================================================================== 740 Assembly Syntax: Vd32.h=vasr(Vu32.w,Vv32.w,Rt8) 741 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasr_VwVwR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 742 Instruction Type: CVI_VS 743 Execution Slots: SLOT0123 744 ========================================================================== */ 745 746 #define Q6_Vh_vasr_VwVwR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwh) 747 #endif /* __HEXAGON_ARCH___ >= 60 */ 748 749 #if __HVX_ARCH__ >= 60 750 /* ========================================================================== 751 Assembly Syntax: Vd32.h=vasr(Vu32.w,Vv32.w,Rt8):rnd:sat 752 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasr_VwVwR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 753 Instruction Type: CVI_VS 754 Execution Slots: SLOT0123 755 ========================================================================== */ 756 757 #define Q6_Vh_vasr_VwVwR_rnd_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwhrndsat) 758 #endif /* __HEXAGON_ARCH___ >= 60 */ 759 760 #if __HVX_ARCH__ >= 60 761 /* ========================================================================== 762 Assembly Syntax: Vd32.h=vasr(Vu32.w,Vv32.w,Rt8):sat 763 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasr_VwVwR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 764 Instruction Type: CVI_VS 765 Execution Slots: SLOT0123 766 ========================================================================== */ 767 768 #define Q6_Vh_vasr_VwVwR_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwhsat) 769 #endif /* __HEXAGON_ARCH___ >= 60 */ 770 771 #if __HVX_ARCH__ >= 60 772 /* ========================================================================== 773 Assembly Syntax: Vd32.uh=vasr(Vu32.w,Vv32.w,Rt8):sat 774 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vasr_VwVwR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 775 Instruction Type: CVI_VS 776 Execution Slots: SLOT0123 777 ========================================================================== */ 778 779 #define Q6_Vuh_vasr_VwVwR_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwuhsat) 780 #endif /* __HEXAGON_ARCH___ >= 60 */ 781 782 #if __HVX_ARCH__ >= 60 783 /* ========================================================================== 784 Assembly Syntax: Vd32.w=vasr(Vu32.w,Vv32.w) 785 C Intrinsic Prototype: HVX_Vector Q6_Vw_vasr_VwVw(HVX_Vector Vu, HVX_Vector Vv) 786 Instruction Type: CVI_VS 787 Execution Slots: SLOT0123 788 ========================================================================== */ 789 790 #define Q6_Vw_vasr_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwv) 791 #endif /* __HEXAGON_ARCH___ >= 60 */ 792 793 #if __HVX_ARCH__ >= 60 794 /* ========================================================================== 795 Assembly Syntax: Vd32=Vu32 796 C Intrinsic Prototype: HVX_Vector Q6_V_equals_V(HVX_Vector Vu) 797 Instruction Type: CVI_VA 798 Execution Slots: SLOT0123 799 ========================================================================== */ 800 801 #define Q6_V_equals_V __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vassign) 802 #endif /* __HEXAGON_ARCH___ >= 60 */ 803 804 #if __HVX_ARCH__ >= 60 805 /* ========================================================================== 806 Assembly Syntax: Vdd32=Vuu32 807 C Intrinsic Prototype: HVX_VectorPair Q6_W_equals_W(HVX_VectorPair Vuu) 808 Instruction Type: CVI_VA_DV 809 Execution Slots: SLOT0123 810 ========================================================================== */ 811 812 #define Q6_W_equals_W __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vassignp) 813 #endif /* __HEXAGON_ARCH___ >= 60 */ 814 815 #if __HVX_ARCH__ >= 60 816 /* ========================================================================== 817 Assembly Syntax: Vd32.h=vavg(Vu32.h,Vv32.h) 818 C Intrinsic Prototype: HVX_Vector Q6_Vh_vavg_VhVh(HVX_Vector Vu, HVX_Vector Vv) 819 Instruction Type: CVI_VA 820 Execution Slots: SLOT0123 821 ========================================================================== */ 822 823 #define Q6_Vh_vavg_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgh) 824 #endif /* __HEXAGON_ARCH___ >= 60 */ 825 826 #if __HVX_ARCH__ >= 60 827 /* ========================================================================== 828 Assembly Syntax: Vd32.h=vavg(Vu32.h,Vv32.h):rnd 829 C Intrinsic Prototype: HVX_Vector Q6_Vh_vavg_VhVh_rnd(HVX_Vector Vu, HVX_Vector Vv) 830 Instruction Type: CVI_VA 831 Execution Slots: SLOT0123 832 ========================================================================== */ 833 834 #define Q6_Vh_vavg_VhVh_rnd __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavghrnd) 835 #endif /* __HEXAGON_ARCH___ >= 60 */ 836 837 #if __HVX_ARCH__ >= 60 838 /* ========================================================================== 839 Assembly Syntax: Vd32.ub=vavg(Vu32.ub,Vv32.ub) 840 C Intrinsic Prototype: HVX_Vector Q6_Vub_vavg_VubVub(HVX_Vector Vu, HVX_Vector Vv) 841 Instruction Type: CVI_VA 842 Execution Slots: SLOT0123 843 ========================================================================== */ 844 845 #define Q6_Vub_vavg_VubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgub) 846 #endif /* __HEXAGON_ARCH___ >= 60 */ 847 848 #if __HVX_ARCH__ >= 60 849 /* ========================================================================== 850 Assembly Syntax: Vd32.ub=vavg(Vu32.ub,Vv32.ub):rnd 851 C Intrinsic Prototype: HVX_Vector Q6_Vub_vavg_VubVub_rnd(HVX_Vector Vu, HVX_Vector Vv) 852 Instruction Type: CVI_VA 853 Execution Slots: SLOT0123 854 ========================================================================== */ 855 856 #define Q6_Vub_vavg_VubVub_rnd __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgubrnd) 857 #endif /* __HEXAGON_ARCH___ >= 60 */ 858 859 #if __HVX_ARCH__ >= 60 860 /* ========================================================================== 861 Assembly Syntax: Vd32.uh=vavg(Vu32.uh,Vv32.uh) 862 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vavg_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 863 Instruction Type: CVI_VA 864 Execution Slots: SLOT0123 865 ========================================================================== */ 866 867 #define Q6_Vuh_vavg_VuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavguh) 868 #endif /* __HEXAGON_ARCH___ >= 60 */ 869 870 #if __HVX_ARCH__ >= 60 871 /* ========================================================================== 872 Assembly Syntax: Vd32.uh=vavg(Vu32.uh,Vv32.uh):rnd 873 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vavg_VuhVuh_rnd(HVX_Vector Vu, HVX_Vector Vv) 874 Instruction Type: CVI_VA 875 Execution Slots: SLOT0123 876 ========================================================================== */ 877 878 #define Q6_Vuh_vavg_VuhVuh_rnd __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavguhrnd) 879 #endif /* __HEXAGON_ARCH___ >= 60 */ 880 881 #if __HVX_ARCH__ >= 60 882 /* ========================================================================== 883 Assembly Syntax: Vd32.w=vavg(Vu32.w,Vv32.w) 884 C Intrinsic Prototype: HVX_Vector Q6_Vw_vavg_VwVw(HVX_Vector Vu, HVX_Vector Vv) 885 Instruction Type: CVI_VA 886 Execution Slots: SLOT0123 887 ========================================================================== */ 888 889 #define Q6_Vw_vavg_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgw) 890 #endif /* __HEXAGON_ARCH___ >= 60 */ 891 892 #if __HVX_ARCH__ >= 60 893 /* ========================================================================== 894 Assembly Syntax: Vd32.w=vavg(Vu32.w,Vv32.w):rnd 895 C Intrinsic Prototype: HVX_Vector Q6_Vw_vavg_VwVw_rnd(HVX_Vector Vu, HVX_Vector Vv) 896 Instruction Type: CVI_VA 897 Execution Slots: SLOT0123 898 ========================================================================== */ 899 900 #define Q6_Vw_vavg_VwVw_rnd __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgwrnd) 901 #endif /* __HEXAGON_ARCH___ >= 60 */ 902 903 #if __HVX_ARCH__ >= 60 904 /* ========================================================================== 905 Assembly Syntax: Vd32.uh=vcl0(Vu32.uh) 906 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vcl0_Vuh(HVX_Vector Vu) 907 Instruction Type: CVI_VS 908 Execution Slots: SLOT0123 909 ========================================================================== */ 910 911 #define Q6_Vuh_vcl0_Vuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcl0h) 912 #endif /* __HEXAGON_ARCH___ >= 60 */ 913 914 #if __HVX_ARCH__ >= 60 915 /* ========================================================================== 916 Assembly Syntax: Vd32.uw=vcl0(Vu32.uw) 917 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vcl0_Vuw(HVX_Vector Vu) 918 Instruction Type: CVI_VS 919 Execution Slots: SLOT0123 920 ========================================================================== */ 921 922 #define Q6_Vuw_vcl0_Vuw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcl0w) 923 #endif /* __HEXAGON_ARCH___ >= 60 */ 924 925 #if __HVX_ARCH__ >= 60 926 /* ========================================================================== 927 Assembly Syntax: Vdd32=vcombine(Vu32,Vv32) 928 C Intrinsic Prototype: HVX_VectorPair Q6_W_vcombine_VV(HVX_Vector Vu, HVX_Vector Vv) 929 Instruction Type: CVI_VA_DV 930 Execution Slots: SLOT0123 931 ========================================================================== */ 932 933 #define Q6_W_vcombine_VV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcombine) 934 #endif /* __HEXAGON_ARCH___ >= 60 */ 935 936 #if __HVX_ARCH__ >= 60 937 /* ========================================================================== 938 Assembly Syntax: Vd32=#0 939 C Intrinsic Prototype: HVX_Vector Q6_V_vzero() 940 Instruction Type: CVI_VA 941 Execution Slots: SLOT0123 942 ========================================================================== */ 943 944 #define Q6_V_vzero __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vd0) 945 #endif /* __HEXAGON_ARCH___ >= 60 */ 946 947 #if __HVX_ARCH__ >= 60 948 /* ========================================================================== 949 Assembly Syntax: Vd32.b=vdeal(Vu32.b) 950 C Intrinsic Prototype: HVX_Vector Q6_Vb_vdeal_Vb(HVX_Vector Vu) 951 Instruction Type: CVI_VP 952 Execution Slots: SLOT0123 953 ========================================================================== */ 954 955 #define Q6_Vb_vdeal_Vb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdealb) 956 #endif /* __HEXAGON_ARCH___ >= 60 */ 957 958 #if __HVX_ARCH__ >= 60 959 /* ========================================================================== 960 Assembly Syntax: Vd32.b=vdeale(Vu32.b,Vv32.b) 961 C Intrinsic Prototype: HVX_Vector Q6_Vb_vdeale_VbVb(HVX_Vector Vu, HVX_Vector Vv) 962 Instruction Type: CVI_VP 963 Execution Slots: SLOT0123 964 ========================================================================== */ 965 966 #define Q6_Vb_vdeale_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdealb4w) 967 #endif /* __HEXAGON_ARCH___ >= 60 */ 968 969 #if __HVX_ARCH__ >= 60 970 /* ========================================================================== 971 Assembly Syntax: Vd32.h=vdeal(Vu32.h) 972 C Intrinsic Prototype: HVX_Vector Q6_Vh_vdeal_Vh(HVX_Vector Vu) 973 Instruction Type: CVI_VP 974 Execution Slots: SLOT0123 975 ========================================================================== */ 976 977 #define Q6_Vh_vdeal_Vh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdealh) 978 #endif /* __HEXAGON_ARCH___ >= 60 */ 979 980 #if __HVX_ARCH__ >= 60 981 /* ========================================================================== 982 Assembly Syntax: Vdd32=vdeal(Vu32,Vv32,Rt8) 983 C Intrinsic Prototype: HVX_VectorPair Q6_W_vdeal_VVR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 984 Instruction Type: CVI_VP_VS 985 Execution Slots: SLOT0123 986 ========================================================================== */ 987 988 #define Q6_W_vdeal_VVR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdealvdd) 989 #endif /* __HEXAGON_ARCH___ >= 60 */ 990 991 #if __HVX_ARCH__ >= 60 992 /* ========================================================================== 993 Assembly Syntax: Vd32=vdelta(Vu32,Vv32) 994 C Intrinsic Prototype: HVX_Vector Q6_V_vdelta_VV(HVX_Vector Vu, HVX_Vector Vv) 995 Instruction Type: CVI_VP 996 Execution Slots: SLOT0123 997 ========================================================================== */ 998 999 #define Q6_V_vdelta_VV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdelta) 1000 #endif /* __HEXAGON_ARCH___ >= 60 */ 1001 1002 #if __HVX_ARCH__ >= 60 1003 /* ========================================================================== 1004 Assembly Syntax: Vd32.h=vdmpy(Vu32.ub,Rt32.b) 1005 C Intrinsic Prototype: HVX_Vector Q6_Vh_vdmpy_VubRb(HVX_Vector Vu, Word32 Rt) 1006 Instruction Type: CVI_VX 1007 Execution Slots: SLOT23 1008 ========================================================================== */ 1009 1010 #define Q6_Vh_vdmpy_VubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpybus) 1011 #endif /* __HEXAGON_ARCH___ >= 60 */ 1012 1013 #if __HVX_ARCH__ >= 60 1014 /* ========================================================================== 1015 Assembly Syntax: Vx32.h+=vdmpy(Vu32.ub,Rt32.b) 1016 C Intrinsic Prototype: HVX_Vector Q6_Vh_vdmpyacc_VhVubRb(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 1017 Instruction Type: CVI_VX 1018 Execution Slots: SLOT23 1019 ========================================================================== */ 1020 1021 #define Q6_Vh_vdmpyacc_VhVubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpybus_acc) 1022 #endif /* __HEXAGON_ARCH___ >= 60 */ 1023 1024 #if __HVX_ARCH__ >= 60 1025 /* ========================================================================== 1026 Assembly Syntax: Vdd32.h=vdmpy(Vuu32.ub,Rt32.b) 1027 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vdmpy_WubRb(HVX_VectorPair Vuu, Word32 Rt) 1028 Instruction Type: CVI_VX_DV 1029 Execution Slots: SLOT23 1030 ========================================================================== */ 1031 1032 #define Q6_Wh_vdmpy_WubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpybus_dv) 1033 #endif /* __HEXAGON_ARCH___ >= 60 */ 1034 1035 #if __HVX_ARCH__ >= 60 1036 /* ========================================================================== 1037 Assembly Syntax: Vxx32.h+=vdmpy(Vuu32.ub,Rt32.b) 1038 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vdmpyacc_WhWubRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 1039 Instruction Type: CVI_VX_DV 1040 Execution Slots: SLOT23 1041 ========================================================================== */ 1042 1043 #define Q6_Wh_vdmpyacc_WhWubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpybus_dv_acc) 1044 #endif /* __HEXAGON_ARCH___ >= 60 */ 1045 1046 #if __HVX_ARCH__ >= 60 1047 /* ========================================================================== 1048 Assembly Syntax: Vd32.w=vdmpy(Vu32.h,Rt32.b) 1049 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_VhRb(HVX_Vector Vu, Word32 Rt) 1050 Instruction Type: CVI_VX 1051 Execution Slots: SLOT23 1052 ========================================================================== */ 1053 1054 #define Q6_Vw_vdmpy_VhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhb) 1055 #endif /* __HEXAGON_ARCH___ >= 60 */ 1056 1057 #if __HVX_ARCH__ >= 60 1058 /* ========================================================================== 1059 Assembly Syntax: Vx32.w+=vdmpy(Vu32.h,Rt32.b) 1060 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwVhRb(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 1061 Instruction Type: CVI_VX 1062 Execution Slots: SLOT23 1063 ========================================================================== */ 1064 1065 #define Q6_Vw_vdmpyacc_VwVhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhb_acc) 1066 #endif /* __HEXAGON_ARCH___ >= 60 */ 1067 1068 #if __HVX_ARCH__ >= 60 1069 /* ========================================================================== 1070 Assembly Syntax: Vdd32.w=vdmpy(Vuu32.h,Rt32.b) 1071 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vdmpy_WhRb(HVX_VectorPair Vuu, Word32 Rt) 1072 Instruction Type: CVI_VX_DV 1073 Execution Slots: SLOT23 1074 ========================================================================== */ 1075 1076 #define Q6_Ww_vdmpy_WhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhb_dv) 1077 #endif /* __HEXAGON_ARCH___ >= 60 */ 1078 1079 #if __HVX_ARCH__ >= 60 1080 /* ========================================================================== 1081 Assembly Syntax: Vxx32.w+=vdmpy(Vuu32.h,Rt32.b) 1082 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vdmpyacc_WwWhRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 1083 Instruction Type: CVI_VX_DV 1084 Execution Slots: SLOT23 1085 ========================================================================== */ 1086 1087 #define Q6_Ww_vdmpyacc_WwWhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhb_dv_acc) 1088 #endif /* __HEXAGON_ARCH___ >= 60 */ 1089 1090 #if __HVX_ARCH__ >= 60 1091 /* ========================================================================== 1092 Assembly Syntax: Vd32.w=vdmpy(Vuu32.h,Rt32.h):sat 1093 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_WhRh_sat(HVX_VectorPair Vuu, Word32 Rt) 1094 Instruction Type: CVI_VX_DV 1095 Execution Slots: SLOT23 1096 ========================================================================== */ 1097 1098 #define Q6_Vw_vdmpy_WhRh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhisat) 1099 #endif /* __HEXAGON_ARCH___ >= 60 */ 1100 1101 #if __HVX_ARCH__ >= 60 1102 /* ========================================================================== 1103 Assembly Syntax: Vx32.w+=vdmpy(Vuu32.h,Rt32.h):sat 1104 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwWhRh_sat(HVX_Vector Vx, HVX_VectorPair Vuu, Word32 Rt) 1105 Instruction Type: CVI_VX_DV 1106 Execution Slots: SLOT23 1107 ========================================================================== */ 1108 1109 #define Q6_Vw_vdmpyacc_VwWhRh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhisat_acc) 1110 #endif /* __HEXAGON_ARCH___ >= 60 */ 1111 1112 #if __HVX_ARCH__ >= 60 1113 /* ========================================================================== 1114 Assembly Syntax: Vd32.w=vdmpy(Vu32.h,Rt32.h):sat 1115 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_VhRh_sat(HVX_Vector Vu, Word32 Rt) 1116 Instruction Type: CVI_VX_DV 1117 Execution Slots: SLOT23 1118 ========================================================================== */ 1119 1120 #define Q6_Vw_vdmpy_VhRh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsat) 1121 #endif /* __HEXAGON_ARCH___ >= 60 */ 1122 1123 #if __HVX_ARCH__ >= 60 1124 /* ========================================================================== 1125 Assembly Syntax: Vx32.w+=vdmpy(Vu32.h,Rt32.h):sat 1126 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwVhRh_sat(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 1127 Instruction Type: CVI_VX_DV 1128 Execution Slots: SLOT23 1129 ========================================================================== */ 1130 1131 #define Q6_Vw_vdmpyacc_VwVhRh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsat_acc) 1132 #endif /* __HEXAGON_ARCH___ >= 60 */ 1133 1134 #if __HVX_ARCH__ >= 60 1135 /* ========================================================================== 1136 Assembly Syntax: Vd32.w=vdmpy(Vuu32.h,Rt32.uh,#1):sat 1137 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_WhRuh_sat(HVX_VectorPair Vuu, Word32 Rt) 1138 Instruction Type: CVI_VX_DV 1139 Execution Slots: SLOT23 1140 ========================================================================== */ 1141 1142 #define Q6_Vw_vdmpy_WhRuh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsuisat) 1143 #endif /* __HEXAGON_ARCH___ >= 60 */ 1144 1145 #if __HVX_ARCH__ >= 60 1146 /* ========================================================================== 1147 Assembly Syntax: Vx32.w+=vdmpy(Vuu32.h,Rt32.uh,#1):sat 1148 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwWhRuh_sat(HVX_Vector Vx, HVX_VectorPair Vuu, Word32 Rt) 1149 Instruction Type: CVI_VX_DV 1150 Execution Slots: SLOT23 1151 ========================================================================== */ 1152 1153 #define Q6_Vw_vdmpyacc_VwWhRuh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsuisat_acc) 1154 #endif /* __HEXAGON_ARCH___ >= 60 */ 1155 1156 #if __HVX_ARCH__ >= 60 1157 /* ========================================================================== 1158 Assembly Syntax: Vd32.w=vdmpy(Vu32.h,Rt32.uh):sat 1159 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_VhRuh_sat(HVX_Vector Vu, Word32 Rt) 1160 Instruction Type: CVI_VX_DV 1161 Execution Slots: SLOT23 1162 ========================================================================== */ 1163 1164 #define Q6_Vw_vdmpy_VhRuh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsusat) 1165 #endif /* __HEXAGON_ARCH___ >= 60 */ 1166 1167 #if __HVX_ARCH__ >= 60 1168 /* ========================================================================== 1169 Assembly Syntax: Vx32.w+=vdmpy(Vu32.h,Rt32.uh):sat 1170 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwVhRuh_sat(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 1171 Instruction Type: CVI_VX_DV 1172 Execution Slots: SLOT23 1173 ========================================================================== */ 1174 1175 #define Q6_Vw_vdmpyacc_VwVhRuh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhsusat_acc) 1176 #endif /* __HEXAGON_ARCH___ >= 60 */ 1177 1178 #if __HVX_ARCH__ >= 60 1179 /* ========================================================================== 1180 Assembly Syntax: Vd32.w=vdmpy(Vu32.h,Vv32.h):sat 1181 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpy_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 1182 Instruction Type: CVI_VX_DV 1183 Execution Slots: SLOT23 1184 ========================================================================== */ 1185 1186 #define Q6_Vw_vdmpy_VhVh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhvsat) 1187 #endif /* __HEXAGON_ARCH___ >= 60 */ 1188 1189 #if __HVX_ARCH__ >= 60 1190 /* ========================================================================== 1191 Assembly Syntax: Vx32.w+=vdmpy(Vu32.h,Vv32.h):sat 1192 C Intrinsic Prototype: HVX_Vector Q6_Vw_vdmpyacc_VwVhVh_sat(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 1193 Instruction Type: CVI_VX_DV 1194 Execution Slots: SLOT23 1195 ========================================================================== */ 1196 1197 #define Q6_Vw_vdmpyacc_VwVhVh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdmpyhvsat_acc) 1198 #endif /* __HEXAGON_ARCH___ >= 60 */ 1199 1200 #if __HVX_ARCH__ >= 60 1201 /* ========================================================================== 1202 Assembly Syntax: Vdd32.uw=vdsad(Vuu32.uh,Rt32.uh) 1203 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vdsad_WuhRuh(HVX_VectorPair Vuu, Word32 Rt) 1204 Instruction Type: CVI_VX_DV 1205 Execution Slots: SLOT23 1206 ========================================================================== */ 1207 1208 #define Q6_Wuw_vdsad_WuhRuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdsaduh) 1209 #endif /* __HEXAGON_ARCH___ >= 60 */ 1210 1211 #if __HVX_ARCH__ >= 60 1212 /* ========================================================================== 1213 Assembly Syntax: Vxx32.uw+=vdsad(Vuu32.uh,Rt32.uh) 1214 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vdsadacc_WuwWuhRuh(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 1215 Instruction Type: CVI_VX_DV 1216 Execution Slots: SLOT23 1217 ========================================================================== */ 1218 1219 #define Q6_Wuw_vdsadacc_WuwWuhRuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdsaduh_acc) 1220 #endif /* __HEXAGON_ARCH___ >= 60 */ 1221 1222 #if __HVX_ARCH__ >= 60 1223 /* ========================================================================== 1224 Assembly Syntax: Qd4=vcmp.eq(Vu32.b,Vv32.b) 1225 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eq_VbVb(HVX_Vector Vu, HVX_Vector Vv) 1226 Instruction Type: CVI_VA 1227 Execution Slots: SLOT0123 1228 ========================================================================== */ 1229 1230 #define Q6_Q_vcmp_eq_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqb) 1231 #endif /* __HEXAGON_ARCH___ >= 60 */ 1232 1233 #if __HVX_ARCH__ >= 60 1234 /* ========================================================================== 1235 Assembly Syntax: Qx4&=vcmp.eq(Vu32.b,Vv32.b) 1236 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqand_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1237 Instruction Type: CVI_VA 1238 Execution Slots: SLOT0123 1239 ========================================================================== */ 1240 1241 #define Q6_Q_vcmp_eqand_QVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqb_and) 1242 #endif /* __HEXAGON_ARCH___ >= 60 */ 1243 1244 #if __HVX_ARCH__ >= 60 1245 /* ========================================================================== 1246 Assembly Syntax: Qx4|=vcmp.eq(Vu32.b,Vv32.b) 1247 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqor_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1248 Instruction Type: CVI_VA 1249 Execution Slots: SLOT0123 1250 ========================================================================== */ 1251 1252 #define Q6_Q_vcmp_eqor_QVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqb_or) 1253 #endif /* __HEXAGON_ARCH___ >= 60 */ 1254 1255 #if __HVX_ARCH__ >= 60 1256 /* ========================================================================== 1257 Assembly Syntax: Qx4^=vcmp.eq(Vu32.b,Vv32.b) 1258 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqxacc_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1259 Instruction Type: CVI_VA 1260 Execution Slots: SLOT0123 1261 ========================================================================== */ 1262 1263 #define Q6_Q_vcmp_eqxacc_QVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqb_xor) 1264 #endif /* __HEXAGON_ARCH___ >= 60 */ 1265 1266 #if __HVX_ARCH__ >= 60 1267 /* ========================================================================== 1268 Assembly Syntax: Qd4=vcmp.eq(Vu32.h,Vv32.h) 1269 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eq_VhVh(HVX_Vector Vu, HVX_Vector Vv) 1270 Instruction Type: CVI_VA 1271 Execution Slots: SLOT0123 1272 ========================================================================== */ 1273 1274 #define Q6_Q_vcmp_eq_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqh) 1275 #endif /* __HEXAGON_ARCH___ >= 60 */ 1276 1277 #if __HVX_ARCH__ >= 60 1278 /* ========================================================================== 1279 Assembly Syntax: Qx4&=vcmp.eq(Vu32.h,Vv32.h) 1280 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqand_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1281 Instruction Type: CVI_VA 1282 Execution Slots: SLOT0123 1283 ========================================================================== */ 1284 1285 #define Q6_Q_vcmp_eqand_QVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqh_and) 1286 #endif /* __HEXAGON_ARCH___ >= 60 */ 1287 1288 #if __HVX_ARCH__ >= 60 1289 /* ========================================================================== 1290 Assembly Syntax: Qx4|=vcmp.eq(Vu32.h,Vv32.h) 1291 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqor_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1292 Instruction Type: CVI_VA 1293 Execution Slots: SLOT0123 1294 ========================================================================== */ 1295 1296 #define Q6_Q_vcmp_eqor_QVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqh_or) 1297 #endif /* __HEXAGON_ARCH___ >= 60 */ 1298 1299 #if __HVX_ARCH__ >= 60 1300 /* ========================================================================== 1301 Assembly Syntax: Qx4^=vcmp.eq(Vu32.h,Vv32.h) 1302 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqxacc_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1303 Instruction Type: CVI_VA 1304 Execution Slots: SLOT0123 1305 ========================================================================== */ 1306 1307 #define Q6_Q_vcmp_eqxacc_QVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqh_xor) 1308 #endif /* __HEXAGON_ARCH___ >= 60 */ 1309 1310 #if __HVX_ARCH__ >= 60 1311 /* ========================================================================== 1312 Assembly Syntax: Qd4=vcmp.eq(Vu32.w,Vv32.w) 1313 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eq_VwVw(HVX_Vector Vu, HVX_Vector Vv) 1314 Instruction Type: CVI_VA 1315 Execution Slots: SLOT0123 1316 ========================================================================== */ 1317 1318 #define Q6_Q_vcmp_eq_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqw) 1319 #endif /* __HEXAGON_ARCH___ >= 60 */ 1320 1321 #if __HVX_ARCH__ >= 60 1322 /* ========================================================================== 1323 Assembly Syntax: Qx4&=vcmp.eq(Vu32.w,Vv32.w) 1324 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqand_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1325 Instruction Type: CVI_VA 1326 Execution Slots: SLOT0123 1327 ========================================================================== */ 1328 1329 #define Q6_Q_vcmp_eqand_QVwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqw_and) 1330 #endif /* __HEXAGON_ARCH___ >= 60 */ 1331 1332 #if __HVX_ARCH__ >= 60 1333 /* ========================================================================== 1334 Assembly Syntax: Qx4|=vcmp.eq(Vu32.w,Vv32.w) 1335 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqor_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1336 Instruction Type: CVI_VA 1337 Execution Slots: SLOT0123 1338 ========================================================================== */ 1339 1340 #define Q6_Q_vcmp_eqor_QVwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqw_or) 1341 #endif /* __HEXAGON_ARCH___ >= 60 */ 1342 1343 #if __HVX_ARCH__ >= 60 1344 /* ========================================================================== 1345 Assembly Syntax: Qx4^=vcmp.eq(Vu32.w,Vv32.w) 1346 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_eqxacc_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1347 Instruction Type: CVI_VA 1348 Execution Slots: SLOT0123 1349 ========================================================================== */ 1350 1351 #define Q6_Q_vcmp_eqxacc_QVwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_veqw_xor) 1352 #endif /* __HEXAGON_ARCH___ >= 60 */ 1353 1354 #if __HVX_ARCH__ >= 60 1355 /* ========================================================================== 1356 Assembly Syntax: Qd4=vcmp.gt(Vu32.b,Vv32.b) 1357 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VbVb(HVX_Vector Vu, HVX_Vector Vv) 1358 Instruction Type: CVI_VA 1359 Execution Slots: SLOT0123 1360 ========================================================================== */ 1361 1362 #define Q6_Q_vcmp_gt_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtb) 1363 #endif /* __HEXAGON_ARCH___ >= 60 */ 1364 1365 #if __HVX_ARCH__ >= 60 1366 /* ========================================================================== 1367 Assembly Syntax: Qx4&=vcmp.gt(Vu32.b,Vv32.b) 1368 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1369 Instruction Type: CVI_VA 1370 Execution Slots: SLOT0123 1371 ========================================================================== */ 1372 1373 #define Q6_Q_vcmp_gtand_QVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtb_and) 1374 #endif /* __HEXAGON_ARCH___ >= 60 */ 1375 1376 #if __HVX_ARCH__ >= 60 1377 /* ========================================================================== 1378 Assembly Syntax: Qx4|=vcmp.gt(Vu32.b,Vv32.b) 1379 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1380 Instruction Type: CVI_VA 1381 Execution Slots: SLOT0123 1382 ========================================================================== */ 1383 1384 #define Q6_Q_vcmp_gtor_QVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtb_or) 1385 #endif /* __HEXAGON_ARCH___ >= 60 */ 1386 1387 #if __HVX_ARCH__ >= 60 1388 /* ========================================================================== 1389 Assembly Syntax: Qx4^=vcmp.gt(Vu32.b,Vv32.b) 1390 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVbVb(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1391 Instruction Type: CVI_VA 1392 Execution Slots: SLOT0123 1393 ========================================================================== */ 1394 1395 #define Q6_Q_vcmp_gtxacc_QVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtb_xor) 1396 #endif /* __HEXAGON_ARCH___ >= 60 */ 1397 1398 #if __HVX_ARCH__ >= 60 1399 /* ========================================================================== 1400 Assembly Syntax: Qd4=vcmp.gt(Vu32.h,Vv32.h) 1401 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VhVh(HVX_Vector Vu, HVX_Vector Vv) 1402 Instruction Type: CVI_VA 1403 Execution Slots: SLOT0123 1404 ========================================================================== */ 1405 1406 #define Q6_Q_vcmp_gt_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgth) 1407 #endif /* __HEXAGON_ARCH___ >= 60 */ 1408 1409 #if __HVX_ARCH__ >= 60 1410 /* ========================================================================== 1411 Assembly Syntax: Qx4&=vcmp.gt(Vu32.h,Vv32.h) 1412 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1413 Instruction Type: CVI_VA 1414 Execution Slots: SLOT0123 1415 ========================================================================== */ 1416 1417 #define Q6_Q_vcmp_gtand_QVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgth_and) 1418 #endif /* __HEXAGON_ARCH___ >= 60 */ 1419 1420 #if __HVX_ARCH__ >= 60 1421 /* ========================================================================== 1422 Assembly Syntax: Qx4|=vcmp.gt(Vu32.h,Vv32.h) 1423 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1424 Instruction Type: CVI_VA 1425 Execution Slots: SLOT0123 1426 ========================================================================== */ 1427 1428 #define Q6_Q_vcmp_gtor_QVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgth_or) 1429 #endif /* __HEXAGON_ARCH___ >= 60 */ 1430 1431 #if __HVX_ARCH__ >= 60 1432 /* ========================================================================== 1433 Assembly Syntax: Qx4^=vcmp.gt(Vu32.h,Vv32.h) 1434 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVhVh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1435 Instruction Type: CVI_VA 1436 Execution Slots: SLOT0123 1437 ========================================================================== */ 1438 1439 #define Q6_Q_vcmp_gtxacc_QVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgth_xor) 1440 #endif /* __HEXAGON_ARCH___ >= 60 */ 1441 1442 #if __HVX_ARCH__ >= 60 1443 /* ========================================================================== 1444 Assembly Syntax: Qd4=vcmp.gt(Vu32.ub,Vv32.ub) 1445 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VubVub(HVX_Vector Vu, HVX_Vector Vv) 1446 Instruction Type: CVI_VA 1447 Execution Slots: SLOT0123 1448 ========================================================================== */ 1449 1450 #define Q6_Q_vcmp_gt_VubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtub) 1451 #endif /* __HEXAGON_ARCH___ >= 60 */ 1452 1453 #if __HVX_ARCH__ >= 60 1454 /* ========================================================================== 1455 Assembly Syntax: Qx4&=vcmp.gt(Vu32.ub,Vv32.ub) 1456 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVubVub(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1457 Instruction Type: CVI_VA 1458 Execution Slots: SLOT0123 1459 ========================================================================== */ 1460 1461 #define Q6_Q_vcmp_gtand_QVubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtub_and) 1462 #endif /* __HEXAGON_ARCH___ >= 60 */ 1463 1464 #if __HVX_ARCH__ >= 60 1465 /* ========================================================================== 1466 Assembly Syntax: Qx4|=vcmp.gt(Vu32.ub,Vv32.ub) 1467 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVubVub(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1468 Instruction Type: CVI_VA 1469 Execution Slots: SLOT0123 1470 ========================================================================== */ 1471 1472 #define Q6_Q_vcmp_gtor_QVubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtub_or) 1473 #endif /* __HEXAGON_ARCH___ >= 60 */ 1474 1475 #if __HVX_ARCH__ >= 60 1476 /* ========================================================================== 1477 Assembly Syntax: Qx4^=vcmp.gt(Vu32.ub,Vv32.ub) 1478 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVubVub(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1479 Instruction Type: CVI_VA 1480 Execution Slots: SLOT0123 1481 ========================================================================== */ 1482 1483 #define Q6_Q_vcmp_gtxacc_QVubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtub_xor) 1484 #endif /* __HEXAGON_ARCH___ >= 60 */ 1485 1486 #if __HVX_ARCH__ >= 60 1487 /* ========================================================================== 1488 Assembly Syntax: Qd4=vcmp.gt(Vu32.uh,Vv32.uh) 1489 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 1490 Instruction Type: CVI_VA 1491 Execution Slots: SLOT0123 1492 ========================================================================== */ 1493 1494 #define Q6_Q_vcmp_gt_VuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuh) 1495 #endif /* __HEXAGON_ARCH___ >= 60 */ 1496 1497 #if __HVX_ARCH__ >= 60 1498 /* ========================================================================== 1499 Assembly Syntax: Qx4&=vcmp.gt(Vu32.uh,Vv32.uh) 1500 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVuhVuh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1501 Instruction Type: CVI_VA 1502 Execution Slots: SLOT0123 1503 ========================================================================== */ 1504 1505 #define Q6_Q_vcmp_gtand_QVuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuh_and) 1506 #endif /* __HEXAGON_ARCH___ >= 60 */ 1507 1508 #if __HVX_ARCH__ >= 60 1509 /* ========================================================================== 1510 Assembly Syntax: Qx4|=vcmp.gt(Vu32.uh,Vv32.uh) 1511 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVuhVuh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1512 Instruction Type: CVI_VA 1513 Execution Slots: SLOT0123 1514 ========================================================================== */ 1515 1516 #define Q6_Q_vcmp_gtor_QVuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuh_or) 1517 #endif /* __HEXAGON_ARCH___ >= 60 */ 1518 1519 #if __HVX_ARCH__ >= 60 1520 /* ========================================================================== 1521 Assembly Syntax: Qx4^=vcmp.gt(Vu32.uh,Vv32.uh) 1522 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVuhVuh(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1523 Instruction Type: CVI_VA 1524 Execution Slots: SLOT0123 1525 ========================================================================== */ 1526 1527 #define Q6_Q_vcmp_gtxacc_QVuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuh_xor) 1528 #endif /* __HEXAGON_ARCH___ >= 60 */ 1529 1530 #if __HVX_ARCH__ >= 60 1531 /* ========================================================================== 1532 Assembly Syntax: Qd4=vcmp.gt(Vu32.uw,Vv32.uw) 1533 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VuwVuw(HVX_Vector Vu, HVX_Vector Vv) 1534 Instruction Type: CVI_VA 1535 Execution Slots: SLOT0123 1536 ========================================================================== */ 1537 1538 #define Q6_Q_vcmp_gt_VuwVuw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuw) 1539 #endif /* __HEXAGON_ARCH___ >= 60 */ 1540 1541 #if __HVX_ARCH__ >= 60 1542 /* ========================================================================== 1543 Assembly Syntax: Qx4&=vcmp.gt(Vu32.uw,Vv32.uw) 1544 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVuwVuw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1545 Instruction Type: CVI_VA 1546 Execution Slots: SLOT0123 1547 ========================================================================== */ 1548 1549 #define Q6_Q_vcmp_gtand_QVuwVuw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuw_and) 1550 #endif /* __HEXAGON_ARCH___ >= 60 */ 1551 1552 #if __HVX_ARCH__ >= 60 1553 /* ========================================================================== 1554 Assembly Syntax: Qx4|=vcmp.gt(Vu32.uw,Vv32.uw) 1555 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVuwVuw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1556 Instruction Type: CVI_VA 1557 Execution Slots: SLOT0123 1558 ========================================================================== */ 1559 1560 #define Q6_Q_vcmp_gtor_QVuwVuw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuw_or) 1561 #endif /* __HEXAGON_ARCH___ >= 60 */ 1562 1563 #if __HVX_ARCH__ >= 60 1564 /* ========================================================================== 1565 Assembly Syntax: Qx4^=vcmp.gt(Vu32.uw,Vv32.uw) 1566 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVuwVuw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1567 Instruction Type: CVI_VA 1568 Execution Slots: SLOT0123 1569 ========================================================================== */ 1570 1571 #define Q6_Q_vcmp_gtxacc_QVuwVuw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtuw_xor) 1572 #endif /* __HEXAGON_ARCH___ >= 60 */ 1573 1574 #if __HVX_ARCH__ >= 60 1575 /* ========================================================================== 1576 Assembly Syntax: Qd4=vcmp.gt(Vu32.w,Vv32.w) 1577 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VwVw(HVX_Vector Vu, HVX_Vector Vv) 1578 Instruction Type: CVI_VA 1579 Execution Slots: SLOT0123 1580 ========================================================================== */ 1581 1582 #define Q6_Q_vcmp_gt_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtw) 1583 #endif /* __HEXAGON_ARCH___ >= 60 */ 1584 1585 #if __HVX_ARCH__ >= 60 1586 /* ========================================================================== 1587 Assembly Syntax: Qx4&=vcmp.gt(Vu32.w,Vv32.w) 1588 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1589 Instruction Type: CVI_VA 1590 Execution Slots: SLOT0123 1591 ========================================================================== */ 1592 1593 #define Q6_Q_vcmp_gtand_QVwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtw_and) 1594 #endif /* __HEXAGON_ARCH___ >= 60 */ 1595 1596 #if __HVX_ARCH__ >= 60 1597 /* ========================================================================== 1598 Assembly Syntax: Qx4|=vcmp.gt(Vu32.w,Vv32.w) 1599 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1600 Instruction Type: CVI_VA 1601 Execution Slots: SLOT0123 1602 ========================================================================== */ 1603 1604 #define Q6_Q_vcmp_gtor_QVwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtw_or) 1605 #endif /* __HEXAGON_ARCH___ >= 60 */ 1606 1607 #if __HVX_ARCH__ >= 60 1608 /* ========================================================================== 1609 Assembly Syntax: Qx4^=vcmp.gt(Vu32.w,Vv32.w) 1610 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVwVw(HVX_VectorPred Qx, HVX_Vector Vu, HVX_Vector Vv) 1611 Instruction Type: CVI_VA 1612 Execution Slots: SLOT0123 1613 ========================================================================== */ 1614 1615 #define Q6_Q_vcmp_gtxacc_QVwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtw_xor) 1616 #endif /* __HEXAGON_ARCH___ >= 60 */ 1617 1618 #if __HVX_ARCH__ >= 60 1619 /* ========================================================================== 1620 Assembly Syntax: Vx32.w=vinsert(Rt32) 1621 C Intrinsic Prototype: HVX_Vector Q6_Vw_vinsert_VwR(HVX_Vector Vx, Word32 Rt) 1622 Instruction Type: CVI_VX_LATE 1623 Execution Slots: SLOT23 1624 ========================================================================== */ 1625 1626 #define Q6_Vw_vinsert_VwR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vinsertwr) 1627 #endif /* __HEXAGON_ARCH___ >= 60 */ 1628 1629 #if __HVX_ARCH__ >= 60 1630 /* ========================================================================== 1631 Assembly Syntax: Vd32=vlalign(Vu32,Vv32,Rt8) 1632 C Intrinsic Prototype: HVX_Vector Q6_V_vlalign_VVR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 1633 Instruction Type: CVI_VP 1634 Execution Slots: SLOT0123 1635 ========================================================================== */ 1636 1637 #define Q6_V_vlalign_VVR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlalignb) 1638 #endif /* __HEXAGON_ARCH___ >= 60 */ 1639 1640 #if __HVX_ARCH__ >= 60 1641 /* ========================================================================== 1642 Assembly Syntax: Vd32=vlalign(Vu32,Vv32,#u3) 1643 C Intrinsic Prototype: HVX_Vector Q6_V_vlalign_VVI(HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 1644 Instruction Type: CVI_VP 1645 Execution Slots: SLOT0123 1646 ========================================================================== */ 1647 1648 #define Q6_V_vlalign_VVI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlalignbi) 1649 #endif /* __HEXAGON_ARCH___ >= 60 */ 1650 1651 #if __HVX_ARCH__ >= 60 1652 /* ========================================================================== 1653 Assembly Syntax: Vd32.uh=vlsr(Vu32.uh,Rt32) 1654 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vlsr_VuhR(HVX_Vector Vu, Word32 Rt) 1655 Instruction Type: CVI_VS 1656 Execution Slots: SLOT0123 1657 ========================================================================== */ 1658 1659 #define Q6_Vuh_vlsr_VuhR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlsrh) 1660 #endif /* __HEXAGON_ARCH___ >= 60 */ 1661 1662 #if __HVX_ARCH__ >= 60 1663 /* ========================================================================== 1664 Assembly Syntax: Vd32.h=vlsr(Vu32.h,Vv32.h) 1665 C Intrinsic Prototype: HVX_Vector Q6_Vh_vlsr_VhVh(HVX_Vector Vu, HVX_Vector Vv) 1666 Instruction Type: CVI_VS 1667 Execution Slots: SLOT0123 1668 ========================================================================== */ 1669 1670 #define Q6_Vh_vlsr_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlsrhv) 1671 #endif /* __HEXAGON_ARCH___ >= 60 */ 1672 1673 #if __HVX_ARCH__ >= 60 1674 /* ========================================================================== 1675 Assembly Syntax: Vd32.uw=vlsr(Vu32.uw,Rt32) 1676 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vlsr_VuwR(HVX_Vector Vu, Word32 Rt) 1677 Instruction Type: CVI_VS 1678 Execution Slots: SLOT0123 1679 ========================================================================== */ 1680 1681 #define Q6_Vuw_vlsr_VuwR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlsrw) 1682 #endif /* __HEXAGON_ARCH___ >= 60 */ 1683 1684 #if __HVX_ARCH__ >= 60 1685 /* ========================================================================== 1686 Assembly Syntax: Vd32.w=vlsr(Vu32.w,Vv32.w) 1687 C Intrinsic Prototype: HVX_Vector Q6_Vw_vlsr_VwVw(HVX_Vector Vu, HVX_Vector Vv) 1688 Instruction Type: CVI_VS 1689 Execution Slots: SLOT0123 1690 ========================================================================== */ 1691 1692 #define Q6_Vw_vlsr_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlsrwv) 1693 #endif /* __HEXAGON_ARCH___ >= 60 */ 1694 1695 #if __HVX_ARCH__ >= 60 1696 /* ========================================================================== 1697 Assembly Syntax: Vd32.b=vlut32(Vu32.b,Vv32.b,Rt8) 1698 C Intrinsic Prototype: HVX_Vector Q6_Vb_vlut32_VbVbR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 1699 Instruction Type: CVI_VP 1700 Execution Slots: SLOT0123 1701 ========================================================================== */ 1702 1703 #define Q6_Vb_vlut32_VbVbR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvvb) 1704 #endif /* __HEXAGON_ARCH___ >= 60 */ 1705 1706 #if __HVX_ARCH__ >= 60 1707 /* ========================================================================== 1708 Assembly Syntax: Vx32.b|=vlut32(Vu32.b,Vv32.b,Rt8) 1709 C Intrinsic Prototype: HVX_Vector Q6_Vb_vlut32or_VbVbVbR(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 1710 Instruction Type: CVI_VP_VS 1711 Execution Slots: SLOT0123 1712 ========================================================================== */ 1713 1714 #define Q6_Vb_vlut32or_VbVbVbR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvvb_oracc) 1715 #endif /* __HEXAGON_ARCH___ >= 60 */ 1716 1717 #if __HVX_ARCH__ >= 60 1718 /* ========================================================================== 1719 Assembly Syntax: Vdd32.h=vlut16(Vu32.b,Vv32.h,Rt8) 1720 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vlut16_VbVhR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 1721 Instruction Type: CVI_VP_VS 1722 Execution Slots: SLOT0123 1723 ========================================================================== */ 1724 1725 #define Q6_Wh_vlut16_VbVhR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvwh) 1726 #endif /* __HEXAGON_ARCH___ >= 60 */ 1727 1728 #if __HVX_ARCH__ >= 60 1729 /* ========================================================================== 1730 Assembly Syntax: Vxx32.h|=vlut16(Vu32.b,Vv32.h,Rt8) 1731 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vlut16or_WhVbVhR(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 1732 Instruction Type: CVI_VP_VS 1733 Execution Slots: SLOT0123 1734 ========================================================================== */ 1735 1736 #define Q6_Wh_vlut16or_WhVbVhR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvwh_oracc) 1737 #endif /* __HEXAGON_ARCH___ >= 60 */ 1738 1739 #if __HVX_ARCH__ >= 60 1740 /* ========================================================================== 1741 Assembly Syntax: Vd32.h=vmax(Vu32.h,Vv32.h) 1742 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmax_VhVh(HVX_Vector Vu, HVX_Vector Vv) 1743 Instruction Type: CVI_VA 1744 Execution Slots: SLOT0123 1745 ========================================================================== */ 1746 1747 #define Q6_Vh_vmax_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaxh) 1748 #endif /* __HEXAGON_ARCH___ >= 60 */ 1749 1750 #if __HVX_ARCH__ >= 60 1751 /* ========================================================================== 1752 Assembly Syntax: Vd32.ub=vmax(Vu32.ub,Vv32.ub) 1753 C Intrinsic Prototype: HVX_Vector Q6_Vub_vmax_VubVub(HVX_Vector Vu, HVX_Vector Vv) 1754 Instruction Type: CVI_VA 1755 Execution Slots: SLOT0123 1756 ========================================================================== */ 1757 1758 #define Q6_Vub_vmax_VubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaxub) 1759 #endif /* __HEXAGON_ARCH___ >= 60 */ 1760 1761 #if __HVX_ARCH__ >= 60 1762 /* ========================================================================== 1763 Assembly Syntax: Vd32.uh=vmax(Vu32.uh,Vv32.uh) 1764 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vmax_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 1765 Instruction Type: CVI_VA 1766 Execution Slots: SLOT0123 1767 ========================================================================== */ 1768 1769 #define Q6_Vuh_vmax_VuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaxuh) 1770 #endif /* __HEXAGON_ARCH___ >= 60 */ 1771 1772 #if __HVX_ARCH__ >= 60 1773 /* ========================================================================== 1774 Assembly Syntax: Vd32.w=vmax(Vu32.w,Vv32.w) 1775 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmax_VwVw(HVX_Vector Vu, HVX_Vector Vv) 1776 Instruction Type: CVI_VA 1777 Execution Slots: SLOT0123 1778 ========================================================================== */ 1779 1780 #define Q6_Vw_vmax_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaxw) 1781 #endif /* __HEXAGON_ARCH___ >= 60 */ 1782 1783 #if __HVX_ARCH__ >= 60 1784 /* ========================================================================== 1785 Assembly Syntax: Vd32.h=vmin(Vu32.h,Vv32.h) 1786 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmin_VhVh(HVX_Vector Vu, HVX_Vector Vv) 1787 Instruction Type: CVI_VA 1788 Execution Slots: SLOT0123 1789 ========================================================================== */ 1790 1791 #define Q6_Vh_vmin_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vminh) 1792 #endif /* __HEXAGON_ARCH___ >= 60 */ 1793 1794 #if __HVX_ARCH__ >= 60 1795 /* ========================================================================== 1796 Assembly Syntax: Vd32.ub=vmin(Vu32.ub,Vv32.ub) 1797 C Intrinsic Prototype: HVX_Vector Q6_Vub_vmin_VubVub(HVX_Vector Vu, HVX_Vector Vv) 1798 Instruction Type: CVI_VA 1799 Execution Slots: SLOT0123 1800 ========================================================================== */ 1801 1802 #define Q6_Vub_vmin_VubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vminub) 1803 #endif /* __HEXAGON_ARCH___ >= 60 */ 1804 1805 #if __HVX_ARCH__ >= 60 1806 /* ========================================================================== 1807 Assembly Syntax: Vd32.uh=vmin(Vu32.uh,Vv32.uh) 1808 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vmin_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 1809 Instruction Type: CVI_VA 1810 Execution Slots: SLOT0123 1811 ========================================================================== */ 1812 1813 #define Q6_Vuh_vmin_VuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vminuh) 1814 #endif /* __HEXAGON_ARCH___ >= 60 */ 1815 1816 #if __HVX_ARCH__ >= 60 1817 /* ========================================================================== 1818 Assembly Syntax: Vd32.w=vmin(Vu32.w,Vv32.w) 1819 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmin_VwVw(HVX_Vector Vu, HVX_Vector Vv) 1820 Instruction Type: CVI_VA 1821 Execution Slots: SLOT0123 1822 ========================================================================== */ 1823 1824 #define Q6_Vw_vmin_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vminw) 1825 #endif /* __HEXAGON_ARCH___ >= 60 */ 1826 1827 #if __HVX_ARCH__ >= 60 1828 /* ========================================================================== 1829 Assembly Syntax: Vdd32.h=vmpa(Vuu32.ub,Rt32.b) 1830 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpa_WubRb(HVX_VectorPair Vuu, Word32 Rt) 1831 Instruction Type: CVI_VX_DV 1832 Execution Slots: SLOT23 1833 ========================================================================== */ 1834 1835 #define Q6_Wh_vmpa_WubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabus) 1836 #endif /* __HEXAGON_ARCH___ >= 60 */ 1837 1838 #if __HVX_ARCH__ >= 60 1839 /* ========================================================================== 1840 Assembly Syntax: Vxx32.h+=vmpa(Vuu32.ub,Rt32.b) 1841 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpaacc_WhWubRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 1842 Instruction Type: CVI_VX_DV 1843 Execution Slots: SLOT23 1844 ========================================================================== */ 1845 1846 #define Q6_Wh_vmpaacc_WhWubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabus_acc) 1847 #endif /* __HEXAGON_ARCH___ >= 60 */ 1848 1849 #if __HVX_ARCH__ >= 60 1850 /* ========================================================================== 1851 Assembly Syntax: Vdd32.h=vmpa(Vuu32.ub,Vvv32.b) 1852 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpa_WubWb(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 1853 Instruction Type: CVI_VX_DV 1854 Execution Slots: SLOT23 1855 ========================================================================== */ 1856 1857 #define Q6_Wh_vmpa_WubWb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabusv) 1858 #endif /* __HEXAGON_ARCH___ >= 60 */ 1859 1860 #if __HVX_ARCH__ >= 60 1861 /* ========================================================================== 1862 Assembly Syntax: Vdd32.h=vmpa(Vuu32.ub,Vvv32.ub) 1863 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpa_WubWub(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 1864 Instruction Type: CVI_VX_DV 1865 Execution Slots: SLOT23 1866 ========================================================================== */ 1867 1868 #define Q6_Wh_vmpa_WubWub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabuuv) 1869 #endif /* __HEXAGON_ARCH___ >= 60 */ 1870 1871 #if __HVX_ARCH__ >= 60 1872 /* ========================================================================== 1873 Assembly Syntax: Vdd32.w=vmpa(Vuu32.h,Rt32.b) 1874 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpa_WhRb(HVX_VectorPair Vuu, Word32 Rt) 1875 Instruction Type: CVI_VX_DV 1876 Execution Slots: SLOT23 1877 ========================================================================== */ 1878 1879 #define Q6_Ww_vmpa_WhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpahb) 1880 #endif /* __HEXAGON_ARCH___ >= 60 */ 1881 1882 #if __HVX_ARCH__ >= 60 1883 /* ========================================================================== 1884 Assembly Syntax: Vxx32.w+=vmpa(Vuu32.h,Rt32.b) 1885 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpaacc_WwWhRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 1886 Instruction Type: CVI_VX_DV 1887 Execution Slots: SLOT23 1888 ========================================================================== */ 1889 1890 #define Q6_Ww_vmpaacc_WwWhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpahb_acc) 1891 #endif /* __HEXAGON_ARCH___ >= 60 */ 1892 1893 #if __HVX_ARCH__ >= 60 1894 /* ========================================================================== 1895 Assembly Syntax: Vdd32.h=vmpy(Vu32.ub,Rt32.b) 1896 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpy_VubRb(HVX_Vector Vu, Word32 Rt) 1897 Instruction Type: CVI_VX_DV 1898 Execution Slots: SLOT23 1899 ========================================================================== */ 1900 1901 #define Q6_Wh_vmpy_VubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybus) 1902 #endif /* __HEXAGON_ARCH___ >= 60 */ 1903 1904 #if __HVX_ARCH__ >= 60 1905 /* ========================================================================== 1906 Assembly Syntax: Vxx32.h+=vmpy(Vu32.ub,Rt32.b) 1907 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpyacc_WhVubRb(HVX_VectorPair Vxx, HVX_Vector Vu, Word32 Rt) 1908 Instruction Type: CVI_VX_DV 1909 Execution Slots: SLOT23 1910 ========================================================================== */ 1911 1912 #define Q6_Wh_vmpyacc_WhVubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybus_acc) 1913 #endif /* __HEXAGON_ARCH___ >= 60 */ 1914 1915 #if __HVX_ARCH__ >= 60 1916 /* ========================================================================== 1917 Assembly Syntax: Vdd32.h=vmpy(Vu32.ub,Vv32.b) 1918 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpy_VubVb(HVX_Vector Vu, HVX_Vector Vv) 1919 Instruction Type: CVI_VX_DV 1920 Execution Slots: SLOT23 1921 ========================================================================== */ 1922 1923 #define Q6_Wh_vmpy_VubVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybusv) 1924 #endif /* __HEXAGON_ARCH___ >= 60 */ 1925 1926 #if __HVX_ARCH__ >= 60 1927 /* ========================================================================== 1928 Assembly Syntax: Vxx32.h+=vmpy(Vu32.ub,Vv32.b) 1929 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpyacc_WhVubVb(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 1930 Instruction Type: CVI_VX_DV 1931 Execution Slots: SLOT23 1932 ========================================================================== */ 1933 1934 #define Q6_Wh_vmpyacc_WhVubVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybusv_acc) 1935 #endif /* __HEXAGON_ARCH___ >= 60 */ 1936 1937 #if __HVX_ARCH__ >= 60 1938 /* ========================================================================== 1939 Assembly Syntax: Vdd32.h=vmpy(Vu32.b,Vv32.b) 1940 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpy_VbVb(HVX_Vector Vu, HVX_Vector Vv) 1941 Instruction Type: CVI_VX_DV 1942 Execution Slots: SLOT23 1943 ========================================================================== */ 1944 1945 #define Q6_Wh_vmpy_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybv) 1946 #endif /* __HEXAGON_ARCH___ >= 60 */ 1947 1948 #if __HVX_ARCH__ >= 60 1949 /* ========================================================================== 1950 Assembly Syntax: Vxx32.h+=vmpy(Vu32.b,Vv32.b) 1951 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpyacc_WhVbVb(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 1952 Instruction Type: CVI_VX_DV 1953 Execution Slots: SLOT23 1954 ========================================================================== */ 1955 1956 #define Q6_Wh_vmpyacc_WhVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpybv_acc) 1957 #endif /* __HEXAGON_ARCH___ >= 60 */ 1958 1959 #if __HVX_ARCH__ >= 60 1960 /* ========================================================================== 1961 Assembly Syntax: Vd32.w=vmpye(Vu32.w,Vv32.uh) 1962 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpye_VwVuh(HVX_Vector Vu, HVX_Vector Vv) 1963 Instruction Type: CVI_VX_DV 1964 Execution Slots: SLOT23 1965 ========================================================================== */ 1966 1967 #define Q6_Vw_vmpye_VwVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyewuh) 1968 #endif /* __HEXAGON_ARCH___ >= 60 */ 1969 1970 #if __HVX_ARCH__ >= 60 1971 /* ========================================================================== 1972 Assembly Syntax: Vdd32.w=vmpy(Vu32.h,Rt32.h) 1973 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpy_VhRh(HVX_Vector Vu, Word32 Rt) 1974 Instruction Type: CVI_VX_DV 1975 Execution Slots: SLOT23 1976 ========================================================================== */ 1977 1978 #define Q6_Ww_vmpy_VhRh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyh) 1979 #endif /* __HEXAGON_ARCH___ >= 60 */ 1980 1981 #if __HVX_ARCH__ >= 60 1982 /* ========================================================================== 1983 Assembly Syntax: Vxx32.w+=vmpy(Vu32.h,Rt32.h):sat 1984 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpyacc_WwVhRh_sat(HVX_VectorPair Vxx, HVX_Vector Vu, Word32 Rt) 1985 Instruction Type: CVI_VX_DV 1986 Execution Slots: SLOT23 1987 ========================================================================== */ 1988 1989 #define Q6_Ww_vmpyacc_WwVhRh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhsat_acc) 1990 #endif /* __HEXAGON_ARCH___ >= 60 */ 1991 1992 #if __HVX_ARCH__ >= 60 1993 /* ========================================================================== 1994 Assembly Syntax: Vd32.h=vmpy(Vu32.h,Rt32.h):<<1:rnd:sat 1995 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpy_VhRh_s1_rnd_sat(HVX_Vector Vu, Word32 Rt) 1996 Instruction Type: CVI_VX_DV 1997 Execution Slots: SLOT23 1998 ========================================================================== */ 1999 2000 #define Q6_Vh_vmpy_VhRh_s1_rnd_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhsrs) 2001 #endif /* __HEXAGON_ARCH___ >= 60 */ 2002 2003 #if __HVX_ARCH__ >= 60 2004 /* ========================================================================== 2005 Assembly Syntax: Vd32.h=vmpy(Vu32.h,Rt32.h):<<1:sat 2006 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpy_VhRh_s1_sat(HVX_Vector Vu, Word32 Rt) 2007 Instruction Type: CVI_VX_DV 2008 Execution Slots: SLOT23 2009 ========================================================================== */ 2010 2011 #define Q6_Vh_vmpy_VhRh_s1_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhss) 2012 #endif /* __HEXAGON_ARCH___ >= 60 */ 2013 2014 #if __HVX_ARCH__ >= 60 2015 /* ========================================================================== 2016 Assembly Syntax: Vdd32.w=vmpy(Vu32.h,Vv32.uh) 2017 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpy_VhVuh(HVX_Vector Vu, HVX_Vector Vv) 2018 Instruction Type: CVI_VX_DV 2019 Execution Slots: SLOT23 2020 ========================================================================== */ 2021 2022 #define Q6_Ww_vmpy_VhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhus) 2023 #endif /* __HEXAGON_ARCH___ >= 60 */ 2024 2025 #if __HVX_ARCH__ >= 60 2026 /* ========================================================================== 2027 Assembly Syntax: Vxx32.w+=vmpy(Vu32.h,Vv32.uh) 2028 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpyacc_WwVhVuh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 2029 Instruction Type: CVI_VX_DV 2030 Execution Slots: SLOT23 2031 ========================================================================== */ 2032 2033 #define Q6_Ww_vmpyacc_WwVhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhus_acc) 2034 #endif /* __HEXAGON_ARCH___ >= 60 */ 2035 2036 #if __HVX_ARCH__ >= 60 2037 /* ========================================================================== 2038 Assembly Syntax: Vdd32.w=vmpy(Vu32.h,Vv32.h) 2039 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpy_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2040 Instruction Type: CVI_VX_DV 2041 Execution Slots: SLOT23 2042 ========================================================================== */ 2043 2044 #define Q6_Ww_vmpy_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhv) 2045 #endif /* __HEXAGON_ARCH___ >= 60 */ 2046 2047 #if __HVX_ARCH__ >= 60 2048 /* ========================================================================== 2049 Assembly Syntax: Vxx32.w+=vmpy(Vu32.h,Vv32.h) 2050 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpyacc_WwVhVh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 2051 Instruction Type: CVI_VX_DV 2052 Execution Slots: SLOT23 2053 ========================================================================== */ 2054 2055 #define Q6_Ww_vmpyacc_WwVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhv_acc) 2056 #endif /* __HEXAGON_ARCH___ >= 60 */ 2057 2058 #if __HVX_ARCH__ >= 60 2059 /* ========================================================================== 2060 Assembly Syntax: Vd32.h=vmpy(Vu32.h,Vv32.h):<<1:rnd:sat 2061 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpy_VhVh_s1_rnd_sat(HVX_Vector Vu, HVX_Vector Vv) 2062 Instruction Type: CVI_VX_DV 2063 Execution Slots: SLOT23 2064 ========================================================================== */ 2065 2066 #define Q6_Vh_vmpy_VhVh_s1_rnd_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyhvsrs) 2067 #endif /* __HEXAGON_ARCH___ >= 60 */ 2068 2069 #if __HVX_ARCH__ >= 60 2070 /* ========================================================================== 2071 Assembly Syntax: Vd32.w=vmpyieo(Vu32.h,Vv32.h) 2072 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyieo_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2073 Instruction Type: CVI_VX 2074 Execution Slots: SLOT23 2075 ========================================================================== */ 2076 2077 #define Q6_Vw_vmpyieo_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyieoh) 2078 #endif /* __HEXAGON_ARCH___ >= 60 */ 2079 2080 #if __HVX_ARCH__ >= 60 2081 /* ========================================================================== 2082 Assembly Syntax: Vx32.w+=vmpyie(Vu32.w,Vv32.h) 2083 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyieacc_VwVwVh(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2084 Instruction Type: CVI_VX_DV 2085 Execution Slots: SLOT23 2086 ========================================================================== */ 2087 2088 #define Q6_Vw_vmpyieacc_VwVwVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiewh_acc) 2089 #endif /* __HEXAGON_ARCH___ >= 60 */ 2090 2091 #if __HVX_ARCH__ >= 60 2092 /* ========================================================================== 2093 Assembly Syntax: Vd32.w=vmpyie(Vu32.w,Vv32.uh) 2094 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyie_VwVuh(HVX_Vector Vu, HVX_Vector Vv) 2095 Instruction Type: CVI_VX_DV 2096 Execution Slots: SLOT23 2097 ========================================================================== */ 2098 2099 #define Q6_Vw_vmpyie_VwVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiewuh) 2100 #endif /* __HEXAGON_ARCH___ >= 60 */ 2101 2102 #if __HVX_ARCH__ >= 60 2103 /* ========================================================================== 2104 Assembly Syntax: Vx32.w+=vmpyie(Vu32.w,Vv32.uh) 2105 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyieacc_VwVwVuh(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2106 Instruction Type: CVI_VX_DV 2107 Execution Slots: SLOT23 2108 ========================================================================== */ 2109 2110 #define Q6_Vw_vmpyieacc_VwVwVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiewuh_acc) 2111 #endif /* __HEXAGON_ARCH___ >= 60 */ 2112 2113 #if __HVX_ARCH__ >= 60 2114 /* ========================================================================== 2115 Assembly Syntax: Vd32.h=vmpyi(Vu32.h,Vv32.h) 2116 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpyi_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2117 Instruction Type: CVI_VX_DV 2118 Execution Slots: SLOT23 2119 ========================================================================== */ 2120 2121 #define Q6_Vh_vmpyi_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyih) 2122 #endif /* __HEXAGON_ARCH___ >= 60 */ 2123 2124 #if __HVX_ARCH__ >= 60 2125 /* ========================================================================== 2126 Assembly Syntax: Vx32.h+=vmpyi(Vu32.h,Vv32.h) 2127 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpyiacc_VhVhVh(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2128 Instruction Type: CVI_VX_DV 2129 Execution Slots: SLOT23 2130 ========================================================================== */ 2131 2132 #define Q6_Vh_vmpyiacc_VhVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyih_acc) 2133 #endif /* __HEXAGON_ARCH___ >= 60 */ 2134 2135 #if __HVX_ARCH__ >= 60 2136 /* ========================================================================== 2137 Assembly Syntax: Vd32.h=vmpyi(Vu32.h,Rt32.b) 2138 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpyi_VhRb(HVX_Vector Vu, Word32 Rt) 2139 Instruction Type: CVI_VX 2140 Execution Slots: SLOT23 2141 ========================================================================== */ 2142 2143 #define Q6_Vh_vmpyi_VhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyihb) 2144 #endif /* __HEXAGON_ARCH___ >= 60 */ 2145 2146 #if __HVX_ARCH__ >= 60 2147 /* ========================================================================== 2148 Assembly Syntax: Vx32.h+=vmpyi(Vu32.h,Rt32.b) 2149 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpyiacc_VhVhRb(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 2150 Instruction Type: CVI_VX 2151 Execution Slots: SLOT23 2152 ========================================================================== */ 2153 2154 #define Q6_Vh_vmpyiacc_VhVhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyihb_acc) 2155 #endif /* __HEXAGON_ARCH___ >= 60 */ 2156 2157 #if __HVX_ARCH__ >= 60 2158 /* ========================================================================== 2159 Assembly Syntax: Vd32.w=vmpyio(Vu32.w,Vv32.h) 2160 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyio_VwVh(HVX_Vector Vu, HVX_Vector Vv) 2161 Instruction Type: CVI_VX_DV 2162 Execution Slots: SLOT23 2163 ========================================================================== */ 2164 2165 #define Q6_Vw_vmpyio_VwVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiowh) 2166 #endif /* __HEXAGON_ARCH___ >= 60 */ 2167 2168 #if __HVX_ARCH__ >= 60 2169 /* ========================================================================== 2170 Assembly Syntax: Vd32.w=vmpyi(Vu32.w,Rt32.b) 2171 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyi_VwRb(HVX_Vector Vu, Word32 Rt) 2172 Instruction Type: CVI_VX 2173 Execution Slots: SLOT23 2174 ========================================================================== */ 2175 2176 #define Q6_Vw_vmpyi_VwRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwb) 2177 #endif /* __HEXAGON_ARCH___ >= 60 */ 2178 2179 #if __HVX_ARCH__ >= 60 2180 /* ========================================================================== 2181 Assembly Syntax: Vx32.w+=vmpyi(Vu32.w,Rt32.b) 2182 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyiacc_VwVwRb(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 2183 Instruction Type: CVI_VX 2184 Execution Slots: SLOT23 2185 ========================================================================== */ 2186 2187 #define Q6_Vw_vmpyiacc_VwVwRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwb_acc) 2188 #endif /* __HEXAGON_ARCH___ >= 60 */ 2189 2190 #if __HVX_ARCH__ >= 60 2191 /* ========================================================================== 2192 Assembly Syntax: Vd32.w=vmpyi(Vu32.w,Rt32.h) 2193 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyi_VwRh(HVX_Vector Vu, Word32 Rt) 2194 Instruction Type: CVI_VX_DV 2195 Execution Slots: SLOT23 2196 ========================================================================== */ 2197 2198 #define Q6_Vw_vmpyi_VwRh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwh) 2199 #endif /* __HEXAGON_ARCH___ >= 60 */ 2200 2201 #if __HVX_ARCH__ >= 60 2202 /* ========================================================================== 2203 Assembly Syntax: Vx32.w+=vmpyi(Vu32.w,Rt32.h) 2204 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyiacc_VwVwRh(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 2205 Instruction Type: CVI_VX_DV 2206 Execution Slots: SLOT23 2207 ========================================================================== */ 2208 2209 #define Q6_Vw_vmpyiacc_VwVwRh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwh_acc) 2210 #endif /* __HEXAGON_ARCH___ >= 60 */ 2211 2212 #if __HVX_ARCH__ >= 60 2213 /* ========================================================================== 2214 Assembly Syntax: Vd32.w=vmpyo(Vu32.w,Vv32.h):<<1:sat 2215 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyo_VwVh_s1_sat(HVX_Vector Vu, HVX_Vector Vv) 2216 Instruction Type: CVI_VX_DV 2217 Execution Slots: SLOT23 2218 ========================================================================== */ 2219 2220 #define Q6_Vw_vmpyo_VwVh_s1_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyowh) 2221 #endif /* __HEXAGON_ARCH___ >= 60 */ 2222 2223 #if __HVX_ARCH__ >= 60 2224 /* ========================================================================== 2225 Assembly Syntax: Vd32.w=vmpyo(Vu32.w,Vv32.h):<<1:rnd:sat 2226 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyo_VwVh_s1_rnd_sat(HVX_Vector Vu, HVX_Vector Vv) 2227 Instruction Type: CVI_VX_DV 2228 Execution Slots: SLOT23 2229 ========================================================================== */ 2230 2231 #define Q6_Vw_vmpyo_VwVh_s1_rnd_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyowh_rnd) 2232 #endif /* __HEXAGON_ARCH___ >= 60 */ 2233 2234 #if __HVX_ARCH__ >= 60 2235 /* ========================================================================== 2236 Assembly Syntax: Vx32.w+=vmpyo(Vu32.w,Vv32.h):<<1:rnd:sat:shift 2237 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyoacc_VwVwVh_s1_rnd_sat_shift(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2238 Instruction Type: CVI_VX_DV 2239 Execution Slots: SLOT23 2240 ========================================================================== */ 2241 2242 #define Q6_Vw_vmpyoacc_VwVwVh_s1_rnd_sat_shift __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyowh_rnd_sacc) 2243 #endif /* __HEXAGON_ARCH___ >= 60 */ 2244 2245 #if __HVX_ARCH__ >= 60 2246 /* ========================================================================== 2247 Assembly Syntax: Vx32.w+=vmpyo(Vu32.w,Vv32.h):<<1:sat:shift 2248 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyoacc_VwVwVh_s1_sat_shift(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2249 Instruction Type: CVI_VX_DV 2250 Execution Slots: SLOT23 2251 ========================================================================== */ 2252 2253 #define Q6_Vw_vmpyoacc_VwVwVh_s1_sat_shift __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyowh_sacc) 2254 #endif /* __HEXAGON_ARCH___ >= 60 */ 2255 2256 #if __HVX_ARCH__ >= 60 2257 /* ========================================================================== 2258 Assembly Syntax: Vdd32.uh=vmpy(Vu32.ub,Rt32.ub) 2259 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vmpy_VubRub(HVX_Vector Vu, Word32 Rt) 2260 Instruction Type: CVI_VX_DV 2261 Execution Slots: SLOT23 2262 ========================================================================== */ 2263 2264 #define Q6_Wuh_vmpy_VubRub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyub) 2265 #endif /* __HEXAGON_ARCH___ >= 60 */ 2266 2267 #if __HVX_ARCH__ >= 60 2268 /* ========================================================================== 2269 Assembly Syntax: Vxx32.uh+=vmpy(Vu32.ub,Rt32.ub) 2270 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vmpyacc_WuhVubRub(HVX_VectorPair Vxx, HVX_Vector Vu, Word32 Rt) 2271 Instruction Type: CVI_VX_DV 2272 Execution Slots: SLOT23 2273 ========================================================================== */ 2274 2275 #define Q6_Wuh_vmpyacc_WuhVubRub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyub_acc) 2276 #endif /* __HEXAGON_ARCH___ >= 60 */ 2277 2278 #if __HVX_ARCH__ >= 60 2279 /* ========================================================================== 2280 Assembly Syntax: Vdd32.uh=vmpy(Vu32.ub,Vv32.ub) 2281 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vmpy_VubVub(HVX_Vector Vu, HVX_Vector Vv) 2282 Instruction Type: CVI_VX_DV 2283 Execution Slots: SLOT23 2284 ========================================================================== */ 2285 2286 #define Q6_Wuh_vmpy_VubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyubv) 2287 #endif /* __HEXAGON_ARCH___ >= 60 */ 2288 2289 #if __HVX_ARCH__ >= 60 2290 /* ========================================================================== 2291 Assembly Syntax: Vxx32.uh+=vmpy(Vu32.ub,Vv32.ub) 2292 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vmpyacc_WuhVubVub(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 2293 Instruction Type: CVI_VX_DV 2294 Execution Slots: SLOT23 2295 ========================================================================== */ 2296 2297 #define Q6_Wuh_vmpyacc_WuhVubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyubv_acc) 2298 #endif /* __HEXAGON_ARCH___ >= 60 */ 2299 2300 #if __HVX_ARCH__ >= 60 2301 /* ========================================================================== 2302 Assembly Syntax: Vdd32.uw=vmpy(Vu32.uh,Rt32.uh) 2303 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vmpy_VuhRuh(HVX_Vector Vu, Word32 Rt) 2304 Instruction Type: CVI_VX_DV 2305 Execution Slots: SLOT23 2306 ========================================================================== */ 2307 2308 #define Q6_Wuw_vmpy_VuhRuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuh) 2309 #endif /* __HEXAGON_ARCH___ >= 60 */ 2310 2311 #if __HVX_ARCH__ >= 60 2312 /* ========================================================================== 2313 Assembly Syntax: Vxx32.uw+=vmpy(Vu32.uh,Rt32.uh) 2314 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vmpyacc_WuwVuhRuh(HVX_VectorPair Vxx, HVX_Vector Vu, Word32 Rt) 2315 Instruction Type: CVI_VX_DV 2316 Execution Slots: SLOT23 2317 ========================================================================== */ 2318 2319 #define Q6_Wuw_vmpyacc_WuwVuhRuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuh_acc) 2320 #endif /* __HEXAGON_ARCH___ >= 60 */ 2321 2322 #if __HVX_ARCH__ >= 60 2323 /* ========================================================================== 2324 Assembly Syntax: Vdd32.uw=vmpy(Vu32.uh,Vv32.uh) 2325 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vmpy_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 2326 Instruction Type: CVI_VX_DV 2327 Execution Slots: SLOT23 2328 ========================================================================== */ 2329 2330 #define Q6_Wuw_vmpy_VuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuhv) 2331 #endif /* __HEXAGON_ARCH___ >= 60 */ 2332 2333 #if __HVX_ARCH__ >= 60 2334 /* ========================================================================== 2335 Assembly Syntax: Vxx32.uw+=vmpy(Vu32.uh,Vv32.uh) 2336 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vmpyacc_WuwVuhVuh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 2337 Instruction Type: CVI_VX_DV 2338 Execution Slots: SLOT23 2339 ========================================================================== */ 2340 2341 #define Q6_Wuw_vmpyacc_WuwVuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuhv_acc) 2342 #endif /* __HEXAGON_ARCH___ >= 60 */ 2343 2344 #if __HVX_ARCH__ >= 60 2345 /* ========================================================================== 2346 Assembly Syntax: Vd32=vmux(Qt4,Vu32,Vv32) 2347 C Intrinsic Prototype: HVX_Vector Q6_V_vmux_QVV(HVX_VectorPred Qt, HVX_Vector Vu, HVX_Vector Vv) 2348 Instruction Type: CVI_VA 2349 Execution Slots: SLOT0123 2350 ========================================================================== */ 2351 2352 #define Q6_V_vmux_QVV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmux) 2353 #endif /* __HEXAGON_ARCH___ >= 60 */ 2354 2355 #if __HVX_ARCH__ >= 60 2356 /* ========================================================================== 2357 Assembly Syntax: Vd32.h=vnavg(Vu32.h,Vv32.h) 2358 C Intrinsic Prototype: HVX_Vector Q6_Vh_vnavg_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2359 Instruction Type: CVI_VA 2360 Execution Slots: SLOT0123 2361 ========================================================================== */ 2362 2363 #define Q6_Vh_vnavg_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnavgh) 2364 #endif /* __HEXAGON_ARCH___ >= 60 */ 2365 2366 #if __HVX_ARCH__ >= 60 2367 /* ========================================================================== 2368 Assembly Syntax: Vd32.b=vnavg(Vu32.ub,Vv32.ub) 2369 C Intrinsic Prototype: HVX_Vector Q6_Vb_vnavg_VubVub(HVX_Vector Vu, HVX_Vector Vv) 2370 Instruction Type: CVI_VA 2371 Execution Slots: SLOT0123 2372 ========================================================================== */ 2373 2374 #define Q6_Vb_vnavg_VubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnavgub) 2375 #endif /* __HEXAGON_ARCH___ >= 60 */ 2376 2377 #if __HVX_ARCH__ >= 60 2378 /* ========================================================================== 2379 Assembly Syntax: Vd32.w=vnavg(Vu32.w,Vv32.w) 2380 C Intrinsic Prototype: HVX_Vector Q6_Vw_vnavg_VwVw(HVX_Vector Vu, HVX_Vector Vv) 2381 Instruction Type: CVI_VA 2382 Execution Slots: SLOT0123 2383 ========================================================================== */ 2384 2385 #define Q6_Vw_vnavg_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnavgw) 2386 #endif /* __HEXAGON_ARCH___ >= 60 */ 2387 2388 #if __HVX_ARCH__ >= 60 2389 /* ========================================================================== 2390 Assembly Syntax: Vd32.h=vnormamt(Vu32.h) 2391 C Intrinsic Prototype: HVX_Vector Q6_Vh_vnormamt_Vh(HVX_Vector Vu) 2392 Instruction Type: CVI_VS 2393 Execution Slots: SLOT0123 2394 ========================================================================== */ 2395 2396 #define Q6_Vh_vnormamt_Vh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnormamth) 2397 #endif /* __HEXAGON_ARCH___ >= 60 */ 2398 2399 #if __HVX_ARCH__ >= 60 2400 /* ========================================================================== 2401 Assembly Syntax: Vd32.w=vnormamt(Vu32.w) 2402 C Intrinsic Prototype: HVX_Vector Q6_Vw_vnormamt_Vw(HVX_Vector Vu) 2403 Instruction Type: CVI_VS 2404 Execution Slots: SLOT0123 2405 ========================================================================== */ 2406 2407 #define Q6_Vw_vnormamt_Vw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnormamtw) 2408 #endif /* __HEXAGON_ARCH___ >= 60 */ 2409 2410 #if __HVX_ARCH__ >= 60 2411 /* ========================================================================== 2412 Assembly Syntax: Vd32=vnot(Vu32) 2413 C Intrinsic Prototype: HVX_Vector Q6_V_vnot_V(HVX_Vector Vu) 2414 Instruction Type: CVI_VA 2415 Execution Slots: SLOT0123 2416 ========================================================================== */ 2417 2418 #define Q6_V_vnot_V __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnot) 2419 #endif /* __HEXAGON_ARCH___ >= 60 */ 2420 2421 #if __HVX_ARCH__ >= 60 2422 /* ========================================================================== 2423 Assembly Syntax: Vd32=vor(Vu32,Vv32) 2424 C Intrinsic Prototype: HVX_Vector Q6_V_vor_VV(HVX_Vector Vu, HVX_Vector Vv) 2425 Instruction Type: CVI_VA 2426 Execution Slots: SLOT0123 2427 ========================================================================== */ 2428 2429 #define Q6_V_vor_VV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vor) 2430 #endif /* __HEXAGON_ARCH___ >= 60 */ 2431 2432 #if __HVX_ARCH__ >= 60 2433 /* ========================================================================== 2434 Assembly Syntax: Vd32.b=vpacke(Vu32.h,Vv32.h) 2435 C Intrinsic Prototype: HVX_Vector Q6_Vb_vpacke_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2436 Instruction Type: CVI_VP 2437 Execution Slots: SLOT0123 2438 ========================================================================== */ 2439 2440 #define Q6_Vb_vpacke_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackeb) 2441 #endif /* __HEXAGON_ARCH___ >= 60 */ 2442 2443 #if __HVX_ARCH__ >= 60 2444 /* ========================================================================== 2445 Assembly Syntax: Vd32.h=vpacke(Vu32.w,Vv32.w) 2446 C Intrinsic Prototype: HVX_Vector Q6_Vh_vpacke_VwVw(HVX_Vector Vu, HVX_Vector Vv) 2447 Instruction Type: CVI_VP 2448 Execution Slots: SLOT0123 2449 ========================================================================== */ 2450 2451 #define Q6_Vh_vpacke_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackeh) 2452 #endif /* __HEXAGON_ARCH___ >= 60 */ 2453 2454 #if __HVX_ARCH__ >= 60 2455 /* ========================================================================== 2456 Assembly Syntax: Vd32.b=vpack(Vu32.h,Vv32.h):sat 2457 C Intrinsic Prototype: HVX_Vector Q6_Vb_vpack_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 2458 Instruction Type: CVI_VP 2459 Execution Slots: SLOT0123 2460 ========================================================================== */ 2461 2462 #define Q6_Vb_vpack_VhVh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackhb_sat) 2463 #endif /* __HEXAGON_ARCH___ >= 60 */ 2464 2465 #if __HVX_ARCH__ >= 60 2466 /* ========================================================================== 2467 Assembly Syntax: Vd32.ub=vpack(Vu32.h,Vv32.h):sat 2468 C Intrinsic Prototype: HVX_Vector Q6_Vub_vpack_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 2469 Instruction Type: CVI_VP 2470 Execution Slots: SLOT0123 2471 ========================================================================== */ 2472 2473 #define Q6_Vub_vpack_VhVh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackhub_sat) 2474 #endif /* __HEXAGON_ARCH___ >= 60 */ 2475 2476 #if __HVX_ARCH__ >= 60 2477 /* ========================================================================== 2478 Assembly Syntax: Vd32.b=vpacko(Vu32.h,Vv32.h) 2479 C Intrinsic Prototype: HVX_Vector Q6_Vb_vpacko_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2480 Instruction Type: CVI_VP 2481 Execution Slots: SLOT0123 2482 ========================================================================== */ 2483 2484 #define Q6_Vb_vpacko_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackob) 2485 #endif /* __HEXAGON_ARCH___ >= 60 */ 2486 2487 #if __HVX_ARCH__ >= 60 2488 /* ========================================================================== 2489 Assembly Syntax: Vd32.h=vpacko(Vu32.w,Vv32.w) 2490 C Intrinsic Prototype: HVX_Vector Q6_Vh_vpacko_VwVw(HVX_Vector Vu, HVX_Vector Vv) 2491 Instruction Type: CVI_VP 2492 Execution Slots: SLOT0123 2493 ========================================================================== */ 2494 2495 #define Q6_Vh_vpacko_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackoh) 2496 #endif /* __HEXAGON_ARCH___ >= 60 */ 2497 2498 #if __HVX_ARCH__ >= 60 2499 /* ========================================================================== 2500 Assembly Syntax: Vd32.h=vpack(Vu32.w,Vv32.w):sat 2501 C Intrinsic Prototype: HVX_Vector Q6_Vh_vpack_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 2502 Instruction Type: CVI_VP 2503 Execution Slots: SLOT0123 2504 ========================================================================== */ 2505 2506 #define Q6_Vh_vpack_VwVw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackwh_sat) 2507 #endif /* __HEXAGON_ARCH___ >= 60 */ 2508 2509 #if __HVX_ARCH__ >= 60 2510 /* ========================================================================== 2511 Assembly Syntax: Vd32.uh=vpack(Vu32.w,Vv32.w):sat 2512 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vpack_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 2513 Instruction Type: CVI_VP 2514 Execution Slots: SLOT0123 2515 ========================================================================== */ 2516 2517 #define Q6_Vuh_vpack_VwVw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpackwuh_sat) 2518 #endif /* __HEXAGON_ARCH___ >= 60 */ 2519 2520 #if __HVX_ARCH__ >= 60 2521 /* ========================================================================== 2522 Assembly Syntax: Vd32.h=vpopcount(Vu32.h) 2523 C Intrinsic Prototype: HVX_Vector Q6_Vh_vpopcount_Vh(HVX_Vector Vu) 2524 Instruction Type: CVI_VS 2525 Execution Slots: SLOT0123 2526 ========================================================================== */ 2527 2528 #define Q6_Vh_vpopcount_Vh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vpopcounth) 2529 #endif /* __HEXAGON_ARCH___ >= 60 */ 2530 2531 #if __HVX_ARCH__ >= 60 2532 /* ========================================================================== 2533 Assembly Syntax: Vd32=vrdelta(Vu32,Vv32) 2534 C Intrinsic Prototype: HVX_Vector Q6_V_vrdelta_VV(HVX_Vector Vu, HVX_Vector Vv) 2535 Instruction Type: CVI_VP 2536 Execution Slots: SLOT0123 2537 ========================================================================== */ 2538 2539 #define Q6_V_vrdelta_VV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrdelta) 2540 #endif /* __HEXAGON_ARCH___ >= 60 */ 2541 2542 #if __HVX_ARCH__ >= 60 2543 /* ========================================================================== 2544 Assembly Syntax: Vd32.w=vrmpy(Vu32.ub,Rt32.b) 2545 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpy_VubRb(HVX_Vector Vu, Word32 Rt) 2546 Instruction Type: CVI_VX 2547 Execution Slots: SLOT23 2548 ========================================================================== */ 2549 2550 #define Q6_Vw_vrmpy_VubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybus) 2551 #endif /* __HEXAGON_ARCH___ >= 60 */ 2552 2553 #if __HVX_ARCH__ >= 60 2554 /* ========================================================================== 2555 Assembly Syntax: Vx32.w+=vrmpy(Vu32.ub,Rt32.b) 2556 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpyacc_VwVubRb(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 2557 Instruction Type: CVI_VX 2558 Execution Slots: SLOT23 2559 ========================================================================== */ 2560 2561 #define Q6_Vw_vrmpyacc_VwVubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybus_acc) 2562 #endif /* __HEXAGON_ARCH___ >= 60 */ 2563 2564 #if __HVX_ARCH__ >= 60 2565 /* ========================================================================== 2566 Assembly Syntax: Vdd32.w=vrmpy(Vuu32.ub,Rt32.b,#u1) 2567 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vrmpy_WubRbI(HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2568 Instruction Type: CVI_VX_DV 2569 Execution Slots: SLOT23 2570 ========================================================================== */ 2571 2572 #define Q6_Ww_vrmpy_WubRbI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybusi) 2573 #endif /* __HEXAGON_ARCH___ >= 60 */ 2574 2575 #if __HVX_ARCH__ >= 60 2576 /* ========================================================================== 2577 Assembly Syntax: Vxx32.w+=vrmpy(Vuu32.ub,Rt32.b,#u1) 2578 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vrmpyacc_WwWubRbI(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2579 Instruction Type: CVI_VX_DV 2580 Execution Slots: SLOT23 2581 ========================================================================== */ 2582 2583 #define Q6_Ww_vrmpyacc_WwWubRbI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybusi_acc) 2584 #endif /* __HEXAGON_ARCH___ >= 60 */ 2585 2586 #if __HVX_ARCH__ >= 60 2587 /* ========================================================================== 2588 Assembly Syntax: Vd32.w=vrmpy(Vu32.ub,Vv32.b) 2589 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpy_VubVb(HVX_Vector Vu, HVX_Vector Vv) 2590 Instruction Type: CVI_VX 2591 Execution Slots: SLOT23 2592 ========================================================================== */ 2593 2594 #define Q6_Vw_vrmpy_VubVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybusv) 2595 #endif /* __HEXAGON_ARCH___ >= 60 */ 2596 2597 #if __HVX_ARCH__ >= 60 2598 /* ========================================================================== 2599 Assembly Syntax: Vx32.w+=vrmpy(Vu32.ub,Vv32.b) 2600 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpyacc_VwVubVb(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2601 Instruction Type: CVI_VX_DV 2602 Execution Slots: SLOT23 2603 ========================================================================== */ 2604 2605 #define Q6_Vw_vrmpyacc_VwVubVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybusv_acc) 2606 #endif /* __HEXAGON_ARCH___ >= 60 */ 2607 2608 #if __HVX_ARCH__ >= 60 2609 /* ========================================================================== 2610 Assembly Syntax: Vd32.w=vrmpy(Vu32.b,Vv32.b) 2611 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpy_VbVb(HVX_Vector Vu, HVX_Vector Vv) 2612 Instruction Type: CVI_VX 2613 Execution Slots: SLOT23 2614 ========================================================================== */ 2615 2616 #define Q6_Vw_vrmpy_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybv) 2617 #endif /* __HEXAGON_ARCH___ >= 60 */ 2618 2619 #if __HVX_ARCH__ >= 60 2620 /* ========================================================================== 2621 Assembly Syntax: Vx32.w+=vrmpy(Vu32.b,Vv32.b) 2622 C Intrinsic Prototype: HVX_Vector Q6_Vw_vrmpyacc_VwVbVb(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2623 Instruction Type: CVI_VX_DV 2624 Execution Slots: SLOT23 2625 ========================================================================== */ 2626 2627 #define Q6_Vw_vrmpyacc_VwVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpybv_acc) 2628 #endif /* __HEXAGON_ARCH___ >= 60 */ 2629 2630 #if __HVX_ARCH__ >= 60 2631 /* ========================================================================== 2632 Assembly Syntax: Vd32.uw=vrmpy(Vu32.ub,Rt32.ub) 2633 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vrmpy_VubRub(HVX_Vector Vu, Word32 Rt) 2634 Instruction Type: CVI_VX 2635 Execution Slots: SLOT23 2636 ========================================================================== */ 2637 2638 #define Q6_Vuw_vrmpy_VubRub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyub) 2639 #endif /* __HEXAGON_ARCH___ >= 60 */ 2640 2641 #if __HVX_ARCH__ >= 60 2642 /* ========================================================================== 2643 Assembly Syntax: Vx32.uw+=vrmpy(Vu32.ub,Rt32.ub) 2644 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vrmpyacc_VuwVubRub(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 2645 Instruction Type: CVI_VX 2646 Execution Slots: SLOT23 2647 ========================================================================== */ 2648 2649 #define Q6_Vuw_vrmpyacc_VuwVubRub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyub_acc) 2650 #endif /* __HEXAGON_ARCH___ >= 60 */ 2651 2652 #if __HVX_ARCH__ >= 60 2653 /* ========================================================================== 2654 Assembly Syntax: Vdd32.uw=vrmpy(Vuu32.ub,Rt32.ub,#u1) 2655 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vrmpy_WubRubI(HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2656 Instruction Type: CVI_VX_DV 2657 Execution Slots: SLOT23 2658 ========================================================================== */ 2659 2660 #define Q6_Wuw_vrmpy_WubRubI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyubi) 2661 #endif /* __HEXAGON_ARCH___ >= 60 */ 2662 2663 #if __HVX_ARCH__ >= 60 2664 /* ========================================================================== 2665 Assembly Syntax: Vxx32.uw+=vrmpy(Vuu32.ub,Rt32.ub,#u1) 2666 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vrmpyacc_WuwWubRubI(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2667 Instruction Type: CVI_VX_DV 2668 Execution Slots: SLOT23 2669 ========================================================================== */ 2670 2671 #define Q6_Wuw_vrmpyacc_WuwWubRubI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyubi_acc) 2672 #endif /* __HEXAGON_ARCH___ >= 60 */ 2673 2674 #if __HVX_ARCH__ >= 60 2675 /* ========================================================================== 2676 Assembly Syntax: Vd32.uw=vrmpy(Vu32.ub,Vv32.ub) 2677 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vrmpy_VubVub(HVX_Vector Vu, HVX_Vector Vv) 2678 Instruction Type: CVI_VX 2679 Execution Slots: SLOT23 2680 ========================================================================== */ 2681 2682 #define Q6_Vuw_vrmpy_VubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyubv) 2683 #endif /* __HEXAGON_ARCH___ >= 60 */ 2684 2685 #if __HVX_ARCH__ >= 60 2686 /* ========================================================================== 2687 Assembly Syntax: Vx32.uw+=vrmpy(Vu32.ub,Vv32.ub) 2688 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vrmpyacc_VuwVubVub(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv) 2689 Instruction Type: CVI_VX_DV 2690 Execution Slots: SLOT23 2691 ========================================================================== */ 2692 2693 #define Q6_Vuw_vrmpyacc_VuwVubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrmpyubv_acc) 2694 #endif /* __HEXAGON_ARCH___ >= 60 */ 2695 2696 #if __HVX_ARCH__ >= 60 2697 /* ========================================================================== 2698 Assembly Syntax: Vd32=vror(Vu32,Rt32) 2699 C Intrinsic Prototype: HVX_Vector Q6_V_vror_VR(HVX_Vector Vu, Word32 Rt) 2700 Instruction Type: CVI_VP 2701 Execution Slots: SLOT0123 2702 ========================================================================== */ 2703 2704 #define Q6_V_vror_VR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vror) 2705 #endif /* __HEXAGON_ARCH___ >= 60 */ 2706 2707 #if __HVX_ARCH__ >= 60 2708 /* ========================================================================== 2709 Assembly Syntax: Vd32.b=vround(Vu32.h,Vv32.h):sat 2710 C Intrinsic Prototype: HVX_Vector Q6_Vb_vround_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 2711 Instruction Type: CVI_VS 2712 Execution Slots: SLOT0123 2713 ========================================================================== */ 2714 2715 #define Q6_Vb_vround_VhVh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vroundhb) 2716 #endif /* __HEXAGON_ARCH___ >= 60 */ 2717 2718 #if __HVX_ARCH__ >= 60 2719 /* ========================================================================== 2720 Assembly Syntax: Vd32.ub=vround(Vu32.h,Vv32.h):sat 2721 C Intrinsic Prototype: HVX_Vector Q6_Vub_vround_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 2722 Instruction Type: CVI_VS 2723 Execution Slots: SLOT0123 2724 ========================================================================== */ 2725 2726 #define Q6_Vub_vround_VhVh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vroundhub) 2727 #endif /* __HEXAGON_ARCH___ >= 60 */ 2728 2729 #if __HVX_ARCH__ >= 60 2730 /* ========================================================================== 2731 Assembly Syntax: Vd32.h=vround(Vu32.w,Vv32.w):sat 2732 C Intrinsic Prototype: HVX_Vector Q6_Vh_vround_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 2733 Instruction Type: CVI_VS 2734 Execution Slots: SLOT0123 2735 ========================================================================== */ 2736 2737 #define Q6_Vh_vround_VwVw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vroundwh) 2738 #endif /* __HEXAGON_ARCH___ >= 60 */ 2739 2740 #if __HVX_ARCH__ >= 60 2741 /* ========================================================================== 2742 Assembly Syntax: Vd32.uh=vround(Vu32.w,Vv32.w):sat 2743 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vround_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 2744 Instruction Type: CVI_VS 2745 Execution Slots: SLOT0123 2746 ========================================================================== */ 2747 2748 #define Q6_Vuh_vround_VwVw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vroundwuh) 2749 #endif /* __HEXAGON_ARCH___ >= 60 */ 2750 2751 #if __HVX_ARCH__ >= 60 2752 /* ========================================================================== 2753 Assembly Syntax: Vdd32.uw=vrsad(Vuu32.ub,Rt32.ub,#u1) 2754 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vrsad_WubRubI(HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2755 Instruction Type: CVI_VX_DV 2756 Execution Slots: SLOT23 2757 ========================================================================== */ 2758 2759 #define Q6_Wuw_vrsad_WubRubI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrsadubi) 2760 #endif /* __HEXAGON_ARCH___ >= 60 */ 2761 2762 #if __HVX_ARCH__ >= 60 2763 /* ========================================================================== 2764 Assembly Syntax: Vxx32.uw+=vrsad(Vuu32.ub,Rt32.ub,#u1) 2765 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vrsadacc_WuwWubRubI(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt, Word32 Iu1) 2766 Instruction Type: CVI_VX_DV 2767 Execution Slots: SLOT23 2768 ========================================================================== */ 2769 2770 #define Q6_Wuw_vrsadacc_WuwWubRubI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrsadubi_acc) 2771 #endif /* __HEXAGON_ARCH___ >= 60 */ 2772 2773 #if __HVX_ARCH__ >= 60 2774 /* ========================================================================== 2775 Assembly Syntax: Vd32.ub=vsat(Vu32.h,Vv32.h) 2776 C Intrinsic Prototype: HVX_Vector Q6_Vub_vsat_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2777 Instruction Type: CVI_VA 2778 Execution Slots: SLOT0123 2779 ========================================================================== */ 2780 2781 #define Q6_Vub_vsat_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsathub) 2782 #endif /* __HEXAGON_ARCH___ >= 60 */ 2783 2784 #if __HVX_ARCH__ >= 60 2785 /* ========================================================================== 2786 Assembly Syntax: Vd32.h=vsat(Vu32.w,Vv32.w) 2787 C Intrinsic Prototype: HVX_Vector Q6_Vh_vsat_VwVw(HVX_Vector Vu, HVX_Vector Vv) 2788 Instruction Type: CVI_VA 2789 Execution Slots: SLOT0123 2790 ========================================================================== */ 2791 2792 #define Q6_Vh_vsat_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsatwh) 2793 #endif /* __HEXAGON_ARCH___ >= 60 */ 2794 2795 #if __HVX_ARCH__ >= 60 2796 /* ========================================================================== 2797 Assembly Syntax: Vdd32.h=vsxt(Vu32.b) 2798 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vsxt_Vb(HVX_Vector Vu) 2799 Instruction Type: CVI_VA_DV 2800 Execution Slots: SLOT0123 2801 ========================================================================== */ 2802 2803 #define Q6_Wh_vsxt_Vb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsb) 2804 #endif /* __HEXAGON_ARCH___ >= 60 */ 2805 2806 #if __HVX_ARCH__ >= 60 2807 /* ========================================================================== 2808 Assembly Syntax: Vdd32.w=vsxt(Vu32.h) 2809 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vsxt_Vh(HVX_Vector Vu) 2810 Instruction Type: CVI_VA_DV 2811 Execution Slots: SLOT0123 2812 ========================================================================== */ 2813 2814 #define Q6_Ww_vsxt_Vh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsh) 2815 #endif /* __HEXAGON_ARCH___ >= 60 */ 2816 2817 #if __HVX_ARCH__ >= 60 2818 /* ========================================================================== 2819 Assembly Syntax: Vd32.h=vshuffe(Vu32.h,Vv32.h) 2820 C Intrinsic Prototype: HVX_Vector Q6_Vh_vshuffe_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2821 Instruction Type: CVI_VA 2822 Execution Slots: SLOT0123 2823 ========================================================================== */ 2824 2825 #define Q6_Vh_vshuffe_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshufeh) 2826 #endif /* __HEXAGON_ARCH___ >= 60 */ 2827 2828 #if __HVX_ARCH__ >= 60 2829 /* ========================================================================== 2830 Assembly Syntax: Vd32.b=vshuff(Vu32.b) 2831 C Intrinsic Prototype: HVX_Vector Q6_Vb_vshuff_Vb(HVX_Vector Vu) 2832 Instruction Type: CVI_VP 2833 Execution Slots: SLOT0123 2834 ========================================================================== */ 2835 2836 #define Q6_Vb_vshuff_Vb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshuffb) 2837 #endif /* __HEXAGON_ARCH___ >= 60 */ 2838 2839 #if __HVX_ARCH__ >= 60 2840 /* ========================================================================== 2841 Assembly Syntax: Vd32.b=vshuffe(Vu32.b,Vv32.b) 2842 C Intrinsic Prototype: HVX_Vector Q6_Vb_vshuffe_VbVb(HVX_Vector Vu, HVX_Vector Vv) 2843 Instruction Type: CVI_VA 2844 Execution Slots: SLOT0123 2845 ========================================================================== */ 2846 2847 #define Q6_Vb_vshuffe_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshuffeb) 2848 #endif /* __HEXAGON_ARCH___ >= 60 */ 2849 2850 #if __HVX_ARCH__ >= 60 2851 /* ========================================================================== 2852 Assembly Syntax: Vd32.h=vshuff(Vu32.h) 2853 C Intrinsic Prototype: HVX_Vector Q6_Vh_vshuff_Vh(HVX_Vector Vu) 2854 Instruction Type: CVI_VP 2855 Execution Slots: SLOT0123 2856 ========================================================================== */ 2857 2858 #define Q6_Vh_vshuff_Vh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshuffh) 2859 #endif /* __HEXAGON_ARCH___ >= 60 */ 2860 2861 #if __HVX_ARCH__ >= 60 2862 /* ========================================================================== 2863 Assembly Syntax: Vd32.b=vshuffo(Vu32.b,Vv32.b) 2864 C Intrinsic Prototype: HVX_Vector Q6_Vb_vshuffo_VbVb(HVX_Vector Vu, HVX_Vector Vv) 2865 Instruction Type: CVI_VA 2866 Execution Slots: SLOT0123 2867 ========================================================================== */ 2868 2869 #define Q6_Vb_vshuffo_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshuffob) 2870 #endif /* __HEXAGON_ARCH___ >= 60 */ 2871 2872 #if __HVX_ARCH__ >= 60 2873 /* ========================================================================== 2874 Assembly Syntax: Vdd32=vshuff(Vu32,Vv32,Rt8) 2875 C Intrinsic Prototype: HVX_VectorPair Q6_W_vshuff_VVR(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 2876 Instruction Type: CVI_VP_VS 2877 Execution Slots: SLOT0123 2878 ========================================================================== */ 2879 2880 #define Q6_W_vshuff_VVR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshuffvdd) 2881 #endif /* __HEXAGON_ARCH___ >= 60 */ 2882 2883 #if __HVX_ARCH__ >= 60 2884 /* ========================================================================== 2885 Assembly Syntax: Vdd32.b=vshuffoe(Vu32.b,Vv32.b) 2886 C Intrinsic Prototype: HVX_VectorPair Q6_Wb_vshuffoe_VbVb(HVX_Vector Vu, HVX_Vector Vv) 2887 Instruction Type: CVI_VA_DV 2888 Execution Slots: SLOT0123 2889 ========================================================================== */ 2890 2891 #define Q6_Wb_vshuffoe_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshufoeb) 2892 #endif /* __HEXAGON_ARCH___ >= 60 */ 2893 2894 #if __HVX_ARCH__ >= 60 2895 /* ========================================================================== 2896 Assembly Syntax: Vdd32.h=vshuffoe(Vu32.h,Vv32.h) 2897 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vshuffoe_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2898 Instruction Type: CVI_VA_DV 2899 Execution Slots: SLOT0123 2900 ========================================================================== */ 2901 2902 #define Q6_Wh_vshuffoe_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshufoeh) 2903 #endif /* __HEXAGON_ARCH___ >= 60 */ 2904 2905 #if __HVX_ARCH__ >= 60 2906 /* ========================================================================== 2907 Assembly Syntax: Vd32.h=vshuffo(Vu32.h,Vv32.h) 2908 C Intrinsic Prototype: HVX_Vector Q6_Vh_vshuffo_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2909 Instruction Type: CVI_VA 2910 Execution Slots: SLOT0123 2911 ========================================================================== */ 2912 2913 #define Q6_Vh_vshuffo_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vshufoh) 2914 #endif /* __HEXAGON_ARCH___ >= 60 */ 2915 2916 #if __HVX_ARCH__ >= 60 2917 /* ========================================================================== 2918 Assembly Syntax: Vd32.b=vsub(Vu32.b,Vv32.b) 2919 C Intrinsic Prototype: HVX_Vector Q6_Vb_vsub_VbVb(HVX_Vector Vu, HVX_Vector Vv) 2920 Instruction Type: CVI_VA 2921 Execution Slots: SLOT0123 2922 ========================================================================== */ 2923 2924 #define Q6_Vb_vsub_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubb) 2925 #endif /* __HEXAGON_ARCH___ >= 60 */ 2926 2927 #if __HVX_ARCH__ >= 60 2928 /* ========================================================================== 2929 Assembly Syntax: Vdd32.b=vsub(Vuu32.b,Vvv32.b) 2930 C Intrinsic Prototype: HVX_VectorPair Q6_Wb_vsub_WbWb(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 2931 Instruction Type: CVI_VA_DV 2932 Execution Slots: SLOT0123 2933 ========================================================================== */ 2934 2935 #define Q6_Wb_vsub_WbWb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubb_dv) 2936 #endif /* __HEXAGON_ARCH___ >= 60 */ 2937 2938 #if __HVX_ARCH__ >= 60 2939 /* ========================================================================== 2940 Assembly Syntax: if (!Qv4) Vx32.b-=Vu32.b 2941 C Intrinsic Prototype: HVX_Vector Q6_Vb_condnac_QnVbVb(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 2942 Instruction Type: CVI_VA 2943 Execution Slots: SLOT0123 2944 ========================================================================== */ 2945 2946 #define Q6_Vb_condnac_QnVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubbnq) 2947 #endif /* __HEXAGON_ARCH___ >= 60 */ 2948 2949 #if __HVX_ARCH__ >= 60 2950 /* ========================================================================== 2951 Assembly Syntax: if (Qv4) Vx32.b-=Vu32.b 2952 C Intrinsic Prototype: HVX_Vector Q6_Vb_condnac_QVbVb(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 2953 Instruction Type: CVI_VA 2954 Execution Slots: SLOT0123 2955 ========================================================================== */ 2956 2957 #define Q6_Vb_condnac_QVbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubbq) 2958 #endif /* __HEXAGON_ARCH___ >= 60 */ 2959 2960 #if __HVX_ARCH__ >= 60 2961 /* ========================================================================== 2962 Assembly Syntax: Vd32.h=vsub(Vu32.h,Vv32.h) 2963 C Intrinsic Prototype: HVX_Vector Q6_Vh_vsub_VhVh(HVX_Vector Vu, HVX_Vector Vv) 2964 Instruction Type: CVI_VA 2965 Execution Slots: SLOT0123 2966 ========================================================================== */ 2967 2968 #define Q6_Vh_vsub_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubh) 2969 #endif /* __HEXAGON_ARCH___ >= 60 */ 2970 2971 #if __HVX_ARCH__ >= 60 2972 /* ========================================================================== 2973 Assembly Syntax: Vdd32.h=vsub(Vuu32.h,Vvv32.h) 2974 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vsub_WhWh(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 2975 Instruction Type: CVI_VA_DV 2976 Execution Slots: SLOT0123 2977 ========================================================================== */ 2978 2979 #define Q6_Wh_vsub_WhWh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubh_dv) 2980 #endif /* __HEXAGON_ARCH___ >= 60 */ 2981 2982 #if __HVX_ARCH__ >= 60 2983 /* ========================================================================== 2984 Assembly Syntax: if (!Qv4) Vx32.h-=Vu32.h 2985 C Intrinsic Prototype: HVX_Vector Q6_Vh_condnac_QnVhVh(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 2986 Instruction Type: CVI_VA 2987 Execution Slots: SLOT0123 2988 ========================================================================== */ 2989 2990 #define Q6_Vh_condnac_QnVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubhnq) 2991 #endif /* __HEXAGON_ARCH___ >= 60 */ 2992 2993 #if __HVX_ARCH__ >= 60 2994 /* ========================================================================== 2995 Assembly Syntax: if (Qv4) Vx32.h-=Vu32.h 2996 C Intrinsic Prototype: HVX_Vector Q6_Vh_condnac_QVhVh(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 2997 Instruction Type: CVI_VA 2998 Execution Slots: SLOT0123 2999 ========================================================================== */ 3000 3001 #define Q6_Vh_condnac_QVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubhq) 3002 #endif /* __HEXAGON_ARCH___ >= 60 */ 3003 3004 #if __HVX_ARCH__ >= 60 3005 /* ========================================================================== 3006 Assembly Syntax: Vd32.h=vsub(Vu32.h,Vv32.h):sat 3007 C Intrinsic Prototype: HVX_Vector Q6_Vh_vsub_VhVh_sat(HVX_Vector Vu, HVX_Vector Vv) 3008 Instruction Type: CVI_VA 3009 Execution Slots: SLOT0123 3010 ========================================================================== */ 3011 3012 #define Q6_Vh_vsub_VhVh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubhsat) 3013 #endif /* __HEXAGON_ARCH___ >= 60 */ 3014 3015 #if __HVX_ARCH__ >= 60 3016 /* ========================================================================== 3017 Assembly Syntax: Vdd32.h=vsub(Vuu32.h,Vvv32.h):sat 3018 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vsub_WhWh_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3019 Instruction Type: CVI_VA_DV 3020 Execution Slots: SLOT0123 3021 ========================================================================== */ 3022 3023 #define Q6_Wh_vsub_WhWh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubhsat_dv) 3024 #endif /* __HEXAGON_ARCH___ >= 60 */ 3025 3026 #if __HVX_ARCH__ >= 60 3027 /* ========================================================================== 3028 Assembly Syntax: Vdd32.w=vsub(Vu32.h,Vv32.h) 3029 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vsub_VhVh(HVX_Vector Vu, HVX_Vector Vv) 3030 Instruction Type: CVI_VX_DV 3031 Execution Slots: SLOT23 3032 ========================================================================== */ 3033 3034 #define Q6_Ww_vsub_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubhw) 3035 #endif /* __HEXAGON_ARCH___ >= 60 */ 3036 3037 #if __HVX_ARCH__ >= 60 3038 /* ========================================================================== 3039 Assembly Syntax: Vdd32.h=vsub(Vu32.ub,Vv32.ub) 3040 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vsub_VubVub(HVX_Vector Vu, HVX_Vector Vv) 3041 Instruction Type: CVI_VX_DV 3042 Execution Slots: SLOT23 3043 ========================================================================== */ 3044 3045 #define Q6_Wh_vsub_VubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsububh) 3046 #endif /* __HEXAGON_ARCH___ >= 60 */ 3047 3048 #if __HVX_ARCH__ >= 60 3049 /* ========================================================================== 3050 Assembly Syntax: Vd32.ub=vsub(Vu32.ub,Vv32.ub):sat 3051 C Intrinsic Prototype: HVX_Vector Q6_Vub_vsub_VubVub_sat(HVX_Vector Vu, HVX_Vector Vv) 3052 Instruction Type: CVI_VA 3053 Execution Slots: SLOT0123 3054 ========================================================================== */ 3055 3056 #define Q6_Vub_vsub_VubVub_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsububsat) 3057 #endif /* __HEXAGON_ARCH___ >= 60 */ 3058 3059 #if __HVX_ARCH__ >= 60 3060 /* ========================================================================== 3061 Assembly Syntax: Vdd32.ub=vsub(Vuu32.ub,Vvv32.ub):sat 3062 C Intrinsic Prototype: HVX_VectorPair Q6_Wub_vsub_WubWub_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3063 Instruction Type: CVI_VA_DV 3064 Execution Slots: SLOT0123 3065 ========================================================================== */ 3066 3067 #define Q6_Wub_vsub_WubWub_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsububsat_dv) 3068 #endif /* __HEXAGON_ARCH___ >= 60 */ 3069 3070 #if __HVX_ARCH__ >= 60 3071 /* ========================================================================== 3072 Assembly Syntax: Vd32.uh=vsub(Vu32.uh,Vv32.uh):sat 3073 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vsub_VuhVuh_sat(HVX_Vector Vu, HVX_Vector Vv) 3074 Instruction Type: CVI_VA 3075 Execution Slots: SLOT0123 3076 ========================================================================== */ 3077 3078 #define Q6_Vuh_vsub_VuhVuh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubuhsat) 3079 #endif /* __HEXAGON_ARCH___ >= 60 */ 3080 3081 #if __HVX_ARCH__ >= 60 3082 /* ========================================================================== 3083 Assembly Syntax: Vdd32.uh=vsub(Vuu32.uh,Vvv32.uh):sat 3084 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vsub_WuhWuh_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3085 Instruction Type: CVI_VA_DV 3086 Execution Slots: SLOT0123 3087 ========================================================================== */ 3088 3089 #define Q6_Wuh_vsub_WuhWuh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubuhsat_dv) 3090 #endif /* __HEXAGON_ARCH___ >= 60 */ 3091 3092 #if __HVX_ARCH__ >= 60 3093 /* ========================================================================== 3094 Assembly Syntax: Vdd32.w=vsub(Vu32.uh,Vv32.uh) 3095 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vsub_VuhVuh(HVX_Vector Vu, HVX_Vector Vv) 3096 Instruction Type: CVI_VX_DV 3097 Execution Slots: SLOT23 3098 ========================================================================== */ 3099 3100 #define Q6_Ww_vsub_VuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubuhw) 3101 #endif /* __HEXAGON_ARCH___ >= 60 */ 3102 3103 #if __HVX_ARCH__ >= 60 3104 /* ========================================================================== 3105 Assembly Syntax: Vd32.w=vsub(Vu32.w,Vv32.w) 3106 C Intrinsic Prototype: HVX_Vector Q6_Vw_vsub_VwVw(HVX_Vector Vu, HVX_Vector Vv) 3107 Instruction Type: CVI_VA 3108 Execution Slots: SLOT0123 3109 ========================================================================== */ 3110 3111 #define Q6_Vw_vsub_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubw) 3112 #endif /* __HEXAGON_ARCH___ >= 60 */ 3113 3114 #if __HVX_ARCH__ >= 60 3115 /* ========================================================================== 3116 Assembly Syntax: Vdd32.w=vsub(Vuu32.w,Vvv32.w) 3117 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vsub_WwWw(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3118 Instruction Type: CVI_VA_DV 3119 Execution Slots: SLOT0123 3120 ========================================================================== */ 3121 3122 #define Q6_Ww_vsub_WwWw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubw_dv) 3123 #endif /* __HEXAGON_ARCH___ >= 60 */ 3124 3125 #if __HVX_ARCH__ >= 60 3126 /* ========================================================================== 3127 Assembly Syntax: if (!Qv4) Vx32.w-=Vu32.w 3128 C Intrinsic Prototype: HVX_Vector Q6_Vw_condnac_QnVwVw(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 3129 Instruction Type: CVI_VA 3130 Execution Slots: SLOT0123 3131 ========================================================================== */ 3132 3133 #define Q6_Vw_condnac_QnVwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubwnq) 3134 #endif /* __HEXAGON_ARCH___ >= 60 */ 3135 3136 #if __HVX_ARCH__ >= 60 3137 /* ========================================================================== 3138 Assembly Syntax: if (Qv4) Vx32.w-=Vu32.w 3139 C Intrinsic Prototype: HVX_Vector Q6_Vw_condnac_QVwVw(HVX_VectorPred Qv, HVX_Vector Vx, HVX_Vector Vu) 3140 Instruction Type: CVI_VA 3141 Execution Slots: SLOT0123 3142 ========================================================================== */ 3143 3144 #define Q6_Vw_condnac_QVwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubwq) 3145 #endif /* __HEXAGON_ARCH___ >= 60 */ 3146 3147 #if __HVX_ARCH__ >= 60 3148 /* ========================================================================== 3149 Assembly Syntax: Vd32.w=vsub(Vu32.w,Vv32.w):sat 3150 C Intrinsic Prototype: HVX_Vector Q6_Vw_vsub_VwVw_sat(HVX_Vector Vu, HVX_Vector Vv) 3151 Instruction Type: CVI_VA 3152 Execution Slots: SLOT0123 3153 ========================================================================== */ 3154 3155 #define Q6_Vw_vsub_VwVw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubwsat) 3156 #endif /* __HEXAGON_ARCH___ >= 60 */ 3157 3158 #if __HVX_ARCH__ >= 60 3159 /* ========================================================================== 3160 Assembly Syntax: Vdd32.w=vsub(Vuu32.w,Vvv32.w):sat 3161 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vsub_WwWw_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3162 Instruction Type: CVI_VA_DV 3163 Execution Slots: SLOT0123 3164 ========================================================================== */ 3165 3166 #define Q6_Ww_vsub_WwWw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubwsat_dv) 3167 #endif /* __HEXAGON_ARCH___ >= 60 */ 3168 3169 #if __HVX_ARCH__ >= 60 3170 /* ========================================================================== 3171 Assembly Syntax: Vdd32=vswap(Qt4,Vu32,Vv32) 3172 C Intrinsic Prototype: HVX_VectorPair Q6_W_vswap_QVV(HVX_VectorPred Qt, HVX_Vector Vu, HVX_Vector Vv) 3173 Instruction Type: CVI_VA_DV 3174 Execution Slots: SLOT0123 3175 ========================================================================== */ 3176 3177 #define Q6_W_vswap_QVV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vswap) 3178 #endif /* __HEXAGON_ARCH___ >= 60 */ 3179 3180 #if __HVX_ARCH__ >= 60 3181 /* ========================================================================== 3182 Assembly Syntax: Vdd32.h=vtmpy(Vuu32.b,Rt32.b) 3183 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vtmpy_WbRb(HVX_VectorPair Vuu, Word32 Rt) 3184 Instruction Type: CVI_VX_DV 3185 Execution Slots: SLOT23 3186 ========================================================================== */ 3187 3188 #define Q6_Wh_vtmpy_WbRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpyb) 3189 #endif /* __HEXAGON_ARCH___ >= 60 */ 3190 3191 #if __HVX_ARCH__ >= 60 3192 /* ========================================================================== 3193 Assembly Syntax: Vxx32.h+=vtmpy(Vuu32.b,Rt32.b) 3194 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vtmpyacc_WhWbRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 3195 Instruction Type: CVI_VX_DV 3196 Execution Slots: SLOT23 3197 ========================================================================== */ 3198 3199 #define Q6_Wh_vtmpyacc_WhWbRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpyb_acc) 3200 #endif /* __HEXAGON_ARCH___ >= 60 */ 3201 3202 #if __HVX_ARCH__ >= 60 3203 /* ========================================================================== 3204 Assembly Syntax: Vdd32.h=vtmpy(Vuu32.ub,Rt32.b) 3205 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vtmpy_WubRb(HVX_VectorPair Vuu, Word32 Rt) 3206 Instruction Type: CVI_VX_DV 3207 Execution Slots: SLOT23 3208 ========================================================================== */ 3209 3210 #define Q6_Wh_vtmpy_WubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpybus) 3211 #endif /* __HEXAGON_ARCH___ >= 60 */ 3212 3213 #if __HVX_ARCH__ >= 60 3214 /* ========================================================================== 3215 Assembly Syntax: Vxx32.h+=vtmpy(Vuu32.ub,Rt32.b) 3216 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vtmpyacc_WhWubRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 3217 Instruction Type: CVI_VX_DV 3218 Execution Slots: SLOT23 3219 ========================================================================== */ 3220 3221 #define Q6_Wh_vtmpyacc_WhWubRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpybus_acc) 3222 #endif /* __HEXAGON_ARCH___ >= 60 */ 3223 3224 #if __HVX_ARCH__ >= 60 3225 /* ========================================================================== 3226 Assembly Syntax: Vdd32.w=vtmpy(Vuu32.h,Rt32.b) 3227 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vtmpy_WhRb(HVX_VectorPair Vuu, Word32 Rt) 3228 Instruction Type: CVI_VX_DV 3229 Execution Slots: SLOT23 3230 ========================================================================== */ 3231 3232 #define Q6_Ww_vtmpy_WhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpyhb) 3233 #endif /* __HEXAGON_ARCH___ >= 60 */ 3234 3235 #if __HVX_ARCH__ >= 60 3236 /* ========================================================================== 3237 Assembly Syntax: Vxx32.w+=vtmpy(Vuu32.h,Rt32.b) 3238 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vtmpyacc_WwWhRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 3239 Instruction Type: CVI_VX_DV 3240 Execution Slots: SLOT23 3241 ========================================================================== */ 3242 3243 #define Q6_Ww_vtmpyacc_WwWhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vtmpyhb_acc) 3244 #endif /* __HEXAGON_ARCH___ >= 60 */ 3245 3246 #if __HVX_ARCH__ >= 60 3247 /* ========================================================================== 3248 Assembly Syntax: Vdd32.h=vunpack(Vu32.b) 3249 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vunpack_Vb(HVX_Vector Vu) 3250 Instruction Type: CVI_VP_VS 3251 Execution Slots: SLOT0123 3252 ========================================================================== */ 3253 3254 #define Q6_Wh_vunpack_Vb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackb) 3255 #endif /* __HEXAGON_ARCH___ >= 60 */ 3256 3257 #if __HVX_ARCH__ >= 60 3258 /* ========================================================================== 3259 Assembly Syntax: Vdd32.w=vunpack(Vu32.h) 3260 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vunpack_Vh(HVX_Vector Vu) 3261 Instruction Type: CVI_VP_VS 3262 Execution Slots: SLOT0123 3263 ========================================================================== */ 3264 3265 #define Q6_Ww_vunpack_Vh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackh) 3266 #endif /* __HEXAGON_ARCH___ >= 60 */ 3267 3268 #if __HVX_ARCH__ >= 60 3269 /* ========================================================================== 3270 Assembly Syntax: Vxx32.h|=vunpacko(Vu32.b) 3271 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vunpackoor_WhVb(HVX_VectorPair Vxx, HVX_Vector Vu) 3272 Instruction Type: CVI_VP_VS 3273 Execution Slots: SLOT0123 3274 ========================================================================== */ 3275 3276 #define Q6_Wh_vunpackoor_WhVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackob) 3277 #endif /* __HEXAGON_ARCH___ >= 60 */ 3278 3279 #if __HVX_ARCH__ >= 60 3280 /* ========================================================================== 3281 Assembly Syntax: Vxx32.w|=vunpacko(Vu32.h) 3282 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vunpackoor_WwVh(HVX_VectorPair Vxx, HVX_Vector Vu) 3283 Instruction Type: CVI_VP_VS 3284 Execution Slots: SLOT0123 3285 ========================================================================== */ 3286 3287 #define Q6_Ww_vunpackoor_WwVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackoh) 3288 #endif /* __HEXAGON_ARCH___ >= 60 */ 3289 3290 #if __HVX_ARCH__ >= 60 3291 /* ========================================================================== 3292 Assembly Syntax: Vdd32.uh=vunpack(Vu32.ub) 3293 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vunpack_Vub(HVX_Vector Vu) 3294 Instruction Type: CVI_VP_VS 3295 Execution Slots: SLOT0123 3296 ========================================================================== */ 3297 3298 #define Q6_Wuh_vunpack_Vub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackub) 3299 #endif /* __HEXAGON_ARCH___ >= 60 */ 3300 3301 #if __HVX_ARCH__ >= 60 3302 /* ========================================================================== 3303 Assembly Syntax: Vdd32.uw=vunpack(Vu32.uh) 3304 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vunpack_Vuh(HVX_Vector Vu) 3305 Instruction Type: CVI_VP_VS 3306 Execution Slots: SLOT0123 3307 ========================================================================== */ 3308 3309 #define Q6_Wuw_vunpack_Vuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vunpackuh) 3310 #endif /* __HEXAGON_ARCH___ >= 60 */ 3311 3312 #if __HVX_ARCH__ >= 60 3313 /* ========================================================================== 3314 Assembly Syntax: Vd32=vxor(Vu32,Vv32) 3315 C Intrinsic Prototype: HVX_Vector Q6_V_vxor_VV(HVX_Vector Vu, HVX_Vector Vv) 3316 Instruction Type: CVI_VA 3317 Execution Slots: SLOT0123 3318 ========================================================================== */ 3319 3320 #define Q6_V_vxor_VV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vxor) 3321 #endif /* __HEXAGON_ARCH___ >= 60 */ 3322 3323 #if __HVX_ARCH__ >= 60 3324 /* ========================================================================== 3325 Assembly Syntax: Vdd32.uh=vzxt(Vu32.ub) 3326 C Intrinsic Prototype: HVX_VectorPair Q6_Wuh_vzxt_Vub(HVX_Vector Vu) 3327 Instruction Type: CVI_VA_DV 3328 Execution Slots: SLOT0123 3329 ========================================================================== */ 3330 3331 #define Q6_Wuh_vzxt_Vub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vzb) 3332 #endif /* __HEXAGON_ARCH___ >= 60 */ 3333 3334 #if __HVX_ARCH__ >= 60 3335 /* ========================================================================== 3336 Assembly Syntax: Vdd32.uw=vzxt(Vu32.uh) 3337 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vzxt_Vuh(HVX_Vector Vu) 3338 Instruction Type: CVI_VA_DV 3339 Execution Slots: SLOT0123 3340 ========================================================================== */ 3341 3342 #define Q6_Wuw_vzxt_Vuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vzh) 3343 #endif /* __HEXAGON_ARCH___ >= 60 */ 3344 3345 #if __HVX_ARCH__ >= 62 3346 /* ========================================================================== 3347 Assembly Syntax: Vd32.b=vsplat(Rt32) 3348 C Intrinsic Prototype: HVX_Vector Q6_Vb_vsplat_R(Word32 Rt) 3349 Instruction Type: CVI_VX_LATE 3350 Execution Slots: SLOT23 3351 ========================================================================== */ 3352 3353 #define Q6_Vb_vsplat_R __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_lvsplatb) 3354 #endif /* __HEXAGON_ARCH___ >= 62 */ 3355 3356 #if __HVX_ARCH__ >= 62 3357 /* ========================================================================== 3358 Assembly Syntax: Vd32.h=vsplat(Rt32) 3359 C Intrinsic Prototype: HVX_Vector Q6_Vh_vsplat_R(Word32 Rt) 3360 Instruction Type: CVI_VX_LATE 3361 Execution Slots: SLOT23 3362 ========================================================================== */ 3363 3364 #define Q6_Vh_vsplat_R __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_lvsplath) 3365 #endif /* __HEXAGON_ARCH___ >= 62 */ 3366 3367 #if __HVX_ARCH__ >= 62 3368 /* ========================================================================== 3369 Assembly Syntax: Qd4=vsetq2(Rt32) 3370 C Intrinsic Prototype: HVX_VectorPred Q6_Q_vsetq2_R(Word32 Rt) 3371 Instruction Type: CVI_VP 3372 Execution Slots: SLOT0123 3373 ========================================================================== */ 3374 3375 #define Q6_Q_vsetq2_R __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_pred_scalar2v2) 3376 #endif /* __HEXAGON_ARCH___ >= 62 */ 3377 3378 #if __HVX_ARCH__ >= 62 3379 /* ========================================================================== 3380 Assembly Syntax: Qd4.b=vshuffe(Qs4.h,Qt4.h) 3381 C Intrinsic Prototype: HVX_VectorPred Q6_Qb_vshuffe_QhQh(HVX_VectorPred Qs, HVX_VectorPred Qt) 3382 Instruction Type: CVI_VA_DV 3383 Execution Slots: SLOT0123 3384 ========================================================================== */ 3385 3386 #define Q6_Qb_vshuffe_QhQh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_shuffeqh) 3387 #endif /* __HEXAGON_ARCH___ >= 62 */ 3388 3389 #if __HVX_ARCH__ >= 62 3390 /* ========================================================================== 3391 Assembly Syntax: Qd4.h=vshuffe(Qs4.w,Qt4.w) 3392 C Intrinsic Prototype: HVX_VectorPred Q6_Qh_vshuffe_QwQw(HVX_VectorPred Qs, HVX_VectorPred Qt) 3393 Instruction Type: CVI_VA_DV 3394 Execution Slots: SLOT0123 3395 ========================================================================== */ 3396 3397 #define Q6_Qh_vshuffe_QwQw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_shuffeqw) 3398 #endif /* __HEXAGON_ARCH___ >= 62 */ 3399 3400 #if __HVX_ARCH__ >= 62 3401 /* ========================================================================== 3402 Assembly Syntax: Vd32.b=vadd(Vu32.b,Vv32.b):sat 3403 C Intrinsic Prototype: HVX_Vector Q6_Vb_vadd_VbVb_sat(HVX_Vector Vu, HVX_Vector Vv) 3404 Instruction Type: CVI_VA 3405 Execution Slots: SLOT0123 3406 ========================================================================== */ 3407 3408 #define Q6_Vb_vadd_VbVb_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddbsat) 3409 #endif /* __HEXAGON_ARCH___ >= 62 */ 3410 3411 #if __HVX_ARCH__ >= 62 3412 /* ========================================================================== 3413 Assembly Syntax: Vdd32.b=vadd(Vuu32.b,Vvv32.b):sat 3414 C Intrinsic Prototype: HVX_VectorPair Q6_Wb_vadd_WbWb_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3415 Instruction Type: CVI_VA_DV 3416 Execution Slots: SLOT0123 3417 ========================================================================== */ 3418 3419 #define Q6_Wb_vadd_WbWb_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddbsat_dv) 3420 #endif /* __HEXAGON_ARCH___ >= 62 */ 3421 3422 #if __HVX_ARCH__ >= 62 3423 /* ========================================================================== 3424 Assembly Syntax: Vd32.w=vadd(Vu32.w,Vv32.w,Qx4):carry 3425 C Intrinsic Prototype: HVX_Vector Q6_Vw_vadd_VwVwQ_carry(HVX_Vector Vu, HVX_Vector Vv, HVX_VectorPred* Qx) 3426 Instruction Type: CVI_VA 3427 Execution Slots: SLOT0123 3428 ========================================================================== */ 3429 3430 #define Q6_Vw_vadd_VwVwQ_carry __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddcarry) 3431 #endif /* __HEXAGON_ARCH___ >= 62 */ 3432 3433 #if __HVX_ARCH__ >= 62 3434 /* ========================================================================== 3435 Assembly Syntax: Vd32.h=vadd(vclb(Vu32.h),Vv32.h) 3436 C Intrinsic Prototype: HVX_Vector Q6_Vh_vadd_vclb_VhVh(HVX_Vector Vu, HVX_Vector Vv) 3437 Instruction Type: CVI_VS 3438 Execution Slots: SLOT0123 3439 ========================================================================== */ 3440 3441 #define Q6_Vh_vadd_vclb_VhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddclbh) 3442 #endif /* __HEXAGON_ARCH___ >= 62 */ 3443 3444 #if __HVX_ARCH__ >= 62 3445 /* ========================================================================== 3446 Assembly Syntax: Vd32.w=vadd(vclb(Vu32.w),Vv32.w) 3447 C Intrinsic Prototype: HVX_Vector Q6_Vw_vadd_vclb_VwVw(HVX_Vector Vu, HVX_Vector Vv) 3448 Instruction Type: CVI_VS 3449 Execution Slots: SLOT0123 3450 ========================================================================== */ 3451 3452 #define Q6_Vw_vadd_vclb_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddclbw) 3453 #endif /* __HEXAGON_ARCH___ >= 62 */ 3454 3455 #if __HVX_ARCH__ >= 62 3456 /* ========================================================================== 3457 Assembly Syntax: Vxx32.w+=vadd(Vu32.h,Vv32.h) 3458 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vaddacc_WwVhVh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 3459 Instruction Type: CVI_VX_DV 3460 Execution Slots: SLOT23 3461 ========================================================================== */ 3462 3463 #define Q6_Ww_vaddacc_WwVhVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddhw_acc) 3464 #endif /* __HEXAGON_ARCH___ >= 62 */ 3465 3466 #if __HVX_ARCH__ >= 62 3467 /* ========================================================================== 3468 Assembly Syntax: Vxx32.h+=vadd(Vu32.ub,Vv32.ub) 3469 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vaddacc_WhVubVub(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 3470 Instruction Type: CVI_VX_DV 3471 Execution Slots: SLOT23 3472 ========================================================================== */ 3473 3474 #define Q6_Wh_vaddacc_WhVubVub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddubh_acc) 3475 #endif /* __HEXAGON_ARCH___ >= 62 */ 3476 3477 #if __HVX_ARCH__ >= 62 3478 /* ========================================================================== 3479 Assembly Syntax: Vd32.ub=vadd(Vu32.ub,Vv32.b):sat 3480 C Intrinsic Prototype: HVX_Vector Q6_Vub_vadd_VubVb_sat(HVX_Vector Vu, HVX_Vector Vv) 3481 Instruction Type: CVI_VA 3482 Execution Slots: SLOT0123 3483 ========================================================================== */ 3484 3485 #define Q6_Vub_vadd_VubVb_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddububb_sat) 3486 #endif /* __HEXAGON_ARCH___ >= 62 */ 3487 3488 #if __HVX_ARCH__ >= 62 3489 /* ========================================================================== 3490 Assembly Syntax: Vxx32.w+=vadd(Vu32.uh,Vv32.uh) 3491 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vaddacc_WwVuhVuh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 3492 Instruction Type: CVI_VX_DV 3493 Execution Slots: SLOT23 3494 ========================================================================== */ 3495 3496 #define Q6_Ww_vaddacc_WwVuhVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduhw_acc) 3497 #endif /* __HEXAGON_ARCH___ >= 62 */ 3498 3499 #if __HVX_ARCH__ >= 62 3500 /* ========================================================================== 3501 Assembly Syntax: Vd32.uw=vadd(Vu32.uw,Vv32.uw):sat 3502 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vadd_VuwVuw_sat(HVX_Vector Vu, HVX_Vector Vv) 3503 Instruction Type: CVI_VA 3504 Execution Slots: SLOT0123 3505 ========================================================================== */ 3506 3507 #define Q6_Vuw_vadd_VuwVuw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduwsat) 3508 #endif /* __HEXAGON_ARCH___ >= 62 */ 3509 3510 #if __HVX_ARCH__ >= 62 3511 /* ========================================================================== 3512 Assembly Syntax: Vdd32.uw=vadd(Vuu32.uw,Vvv32.uw):sat 3513 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vadd_WuwWuw_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3514 Instruction Type: CVI_VA_DV 3515 Execution Slots: SLOT0123 3516 ========================================================================== */ 3517 3518 #define Q6_Wuw_vadd_WuwWuw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadduwsat_dv) 3519 #endif /* __HEXAGON_ARCH___ >= 62 */ 3520 3521 #if __HVX_ARCH__ >= 62 3522 /* ========================================================================== 3523 Assembly Syntax: Vd32=vand(!Qu4,Rt32) 3524 C Intrinsic Prototype: HVX_Vector Q6_V_vand_QnR(HVX_VectorPred Qu, Word32 Rt) 3525 Instruction Type: CVI_VX_LATE 3526 Execution Slots: SLOT23 3527 ========================================================================== */ 3528 3529 #define Q6_V_vand_QnR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandnqrt) 3530 #endif /* __HEXAGON_ARCH___ >= 62 */ 3531 3532 #if __HVX_ARCH__ >= 62 3533 /* ========================================================================== 3534 Assembly Syntax: Vx32|=vand(!Qu4,Rt32) 3535 C Intrinsic Prototype: HVX_Vector Q6_V_vandor_VQnR(HVX_Vector Vx, HVX_VectorPred Qu, Word32 Rt) 3536 Instruction Type: CVI_VX_LATE 3537 Execution Slots: SLOT23 3538 ========================================================================== */ 3539 3540 #define Q6_V_vandor_VQnR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandnqrt_acc) 3541 #endif /* __HEXAGON_ARCH___ >= 62 */ 3542 3543 #if __HVX_ARCH__ >= 62 3544 /* ========================================================================== 3545 Assembly Syntax: Vd32=vand(!Qv4,Vu32) 3546 C Intrinsic Prototype: HVX_Vector Q6_V_vand_QnV(HVX_VectorPred Qv, HVX_Vector Vu) 3547 Instruction Type: CVI_VA 3548 Execution Slots: SLOT0123 3549 ========================================================================== */ 3550 3551 #define Q6_V_vand_QnV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvnqv) 3552 #endif /* __HEXAGON_ARCH___ >= 62 */ 3553 3554 #if __HVX_ARCH__ >= 62 3555 /* ========================================================================== 3556 Assembly Syntax: Vd32=vand(Qv4,Vu32) 3557 C Intrinsic Prototype: HVX_Vector Q6_V_vand_QV(HVX_VectorPred Qv, HVX_Vector Vu) 3558 Instruction Type: CVI_VA 3559 Execution Slots: SLOT0123 3560 ========================================================================== */ 3561 3562 #define Q6_V_vand_QV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvqv) 3563 #endif /* __HEXAGON_ARCH___ >= 62 */ 3564 3565 #if __HVX_ARCH__ >= 62 3566 /* ========================================================================== 3567 Assembly Syntax: Vd32.b=vasr(Vu32.h,Vv32.h,Rt8):sat 3568 C Intrinsic Prototype: HVX_Vector Q6_Vb_vasr_VhVhR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3569 Instruction Type: CVI_VS 3570 Execution Slots: SLOT0123 3571 ========================================================================== */ 3572 3573 #define Q6_Vb_vasr_VhVhR_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrhbsat) 3574 #endif /* __HEXAGON_ARCH___ >= 62 */ 3575 3576 #if __HVX_ARCH__ >= 62 3577 /* ========================================================================== 3578 Assembly Syntax: Vd32.uh=vasr(Vu32.uw,Vv32.uw,Rt8):rnd:sat 3579 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vasr_VuwVuwR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3580 Instruction Type: CVI_VS 3581 Execution Slots: SLOT0123 3582 ========================================================================== */ 3583 3584 #define Q6_Vuh_vasr_VuwVuwR_rnd_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasruwuhrndsat) 3585 #endif /* __HEXAGON_ARCH___ >= 62 */ 3586 3587 #if __HVX_ARCH__ >= 62 3588 /* ========================================================================== 3589 Assembly Syntax: Vd32.uh=vasr(Vu32.w,Vv32.w,Rt8):rnd:sat 3590 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vasr_VwVwR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3591 Instruction Type: CVI_VS 3592 Execution Slots: SLOT0123 3593 ========================================================================== */ 3594 3595 #define Q6_Vuh_vasr_VwVwR_rnd_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrwuhrndsat) 3596 #endif /* __HEXAGON_ARCH___ >= 62 */ 3597 3598 #if __HVX_ARCH__ >= 62 3599 /* ========================================================================== 3600 Assembly Syntax: Vd32.ub=vlsr(Vu32.ub,Rt32) 3601 C Intrinsic Prototype: HVX_Vector Q6_Vub_vlsr_VubR(HVX_Vector Vu, Word32 Rt) 3602 Instruction Type: CVI_VS 3603 Execution Slots: SLOT0123 3604 ========================================================================== */ 3605 3606 #define Q6_Vub_vlsr_VubR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlsrb) 3607 #endif /* __HEXAGON_ARCH___ >= 62 */ 3608 3609 #if __HVX_ARCH__ >= 62 3610 /* ========================================================================== 3611 Assembly Syntax: Vd32.b=vlut32(Vu32.b,Vv32.b,Rt8):nomatch 3612 C Intrinsic Prototype: HVX_Vector Q6_Vb_vlut32_VbVbR_nomatch(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3613 Instruction Type: CVI_VP 3614 Execution Slots: SLOT0123 3615 ========================================================================== */ 3616 3617 #define Q6_Vb_vlut32_VbVbR_nomatch __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvvb_nm) 3618 #endif /* __HEXAGON_ARCH___ >= 62 */ 3619 3620 #if __HVX_ARCH__ >= 62 3621 /* ========================================================================== 3622 Assembly Syntax: Vx32.b|=vlut32(Vu32.b,Vv32.b,#u3) 3623 C Intrinsic Prototype: HVX_Vector Q6_Vb_vlut32or_VbVbVbI(HVX_Vector Vx, HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 3624 Instruction Type: CVI_VP_VS 3625 Execution Slots: SLOT0123 3626 ========================================================================== */ 3627 3628 #define Q6_Vb_vlut32or_VbVbVbI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvvb_oracci) 3629 #endif /* __HEXAGON_ARCH___ >= 62 */ 3630 3631 #if __HVX_ARCH__ >= 62 3632 /* ========================================================================== 3633 Assembly Syntax: Vd32.b=vlut32(Vu32.b,Vv32.b,#u3) 3634 C Intrinsic Prototype: HVX_Vector Q6_Vb_vlut32_VbVbI(HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 3635 Instruction Type: CVI_VP 3636 Execution Slots: SLOT0123 3637 ========================================================================== */ 3638 3639 #define Q6_Vb_vlut32_VbVbI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvvbi) 3640 #endif /* __HEXAGON_ARCH___ >= 62 */ 3641 3642 #if __HVX_ARCH__ >= 62 3643 /* ========================================================================== 3644 Assembly Syntax: Vdd32.h=vlut16(Vu32.b,Vv32.h,Rt8):nomatch 3645 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vlut16_VbVhR_nomatch(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3646 Instruction Type: CVI_VP_VS 3647 Execution Slots: SLOT0123 3648 ========================================================================== */ 3649 3650 #define Q6_Wh_vlut16_VbVhR_nomatch __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvwh_nm) 3651 #endif /* __HEXAGON_ARCH___ >= 62 */ 3652 3653 #if __HVX_ARCH__ >= 62 3654 /* ========================================================================== 3655 Assembly Syntax: Vxx32.h|=vlut16(Vu32.b,Vv32.h,#u3) 3656 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vlut16or_WhVbVhI(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 3657 Instruction Type: CVI_VP_VS 3658 Execution Slots: SLOT0123 3659 ========================================================================== */ 3660 3661 #define Q6_Wh_vlut16or_WhVbVhI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvwh_oracci) 3662 #endif /* __HEXAGON_ARCH___ >= 62 */ 3663 3664 #if __HVX_ARCH__ >= 62 3665 /* ========================================================================== 3666 Assembly Syntax: Vdd32.h=vlut16(Vu32.b,Vv32.h,#u3) 3667 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vlut16_VbVhI(HVX_Vector Vu, HVX_Vector Vv, Word32 Iu3) 3668 Instruction Type: CVI_VP_VS 3669 Execution Slots: SLOT0123 3670 ========================================================================== */ 3671 3672 #define Q6_Wh_vlut16_VbVhI __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlutvwhi) 3673 #endif /* __HEXAGON_ARCH___ >= 62 */ 3674 3675 #if __HVX_ARCH__ >= 62 3676 /* ========================================================================== 3677 Assembly Syntax: Vd32.b=vmax(Vu32.b,Vv32.b) 3678 C Intrinsic Prototype: HVX_Vector Q6_Vb_vmax_VbVb(HVX_Vector Vu, HVX_Vector Vv) 3679 Instruction Type: CVI_VA 3680 Execution Slots: SLOT0123 3681 ========================================================================== */ 3682 3683 #define Q6_Vb_vmax_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaxb) 3684 #endif /* __HEXAGON_ARCH___ >= 62 */ 3685 3686 #if __HVX_ARCH__ >= 62 3687 /* ========================================================================== 3688 Assembly Syntax: Vd32.b=vmin(Vu32.b,Vv32.b) 3689 C Intrinsic Prototype: HVX_Vector Q6_Vb_vmin_VbVb(HVX_Vector Vu, HVX_Vector Vv) 3690 Instruction Type: CVI_VA 3691 Execution Slots: SLOT0123 3692 ========================================================================== */ 3693 3694 #define Q6_Vb_vmin_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vminb) 3695 #endif /* __HEXAGON_ARCH___ >= 62 */ 3696 3697 #if __HVX_ARCH__ >= 62 3698 /* ========================================================================== 3699 Assembly Syntax: Vdd32.w=vmpa(Vuu32.uh,Rt32.b) 3700 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpa_WuhRb(HVX_VectorPair Vuu, Word32 Rt) 3701 Instruction Type: CVI_VX_DV 3702 Execution Slots: SLOT23 3703 ========================================================================== */ 3704 3705 #define Q6_Ww_vmpa_WuhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpauhb) 3706 #endif /* __HEXAGON_ARCH___ >= 62 */ 3707 3708 #if __HVX_ARCH__ >= 62 3709 /* ========================================================================== 3710 Assembly Syntax: Vxx32.w+=vmpa(Vuu32.uh,Rt32.b) 3711 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpaacc_WwWuhRb(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 3712 Instruction Type: CVI_VX_DV 3713 Execution Slots: SLOT23 3714 ========================================================================== */ 3715 3716 #define Q6_Ww_vmpaacc_WwWuhRb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpauhb_acc) 3717 #endif /* __HEXAGON_ARCH___ >= 62 */ 3718 3719 #if __HVX_ARCH__ >= 62 3720 /* ========================================================================== 3721 Assembly Syntax: Vdd32=vmpye(Vu32.w,Vv32.uh) 3722 C Intrinsic Prototype: HVX_VectorPair Q6_W_vmpye_VwVuh(HVX_Vector Vu, HVX_Vector Vv) 3723 Instruction Type: CVI_VX_DV 3724 Execution Slots: SLOT23 3725 ========================================================================== */ 3726 3727 #define Q6_W_vmpye_VwVuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyewuh_64) 3728 #endif /* __HEXAGON_ARCH___ >= 62 */ 3729 3730 #if __HVX_ARCH__ >= 62 3731 /* ========================================================================== 3732 Assembly Syntax: Vd32.w=vmpyi(Vu32.w,Rt32.ub) 3733 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyi_VwRub(HVX_Vector Vu, Word32 Rt) 3734 Instruction Type: CVI_VX 3735 Execution Slots: SLOT23 3736 ========================================================================== */ 3737 3738 #define Q6_Vw_vmpyi_VwRub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwub) 3739 #endif /* __HEXAGON_ARCH___ >= 62 */ 3740 3741 #if __HVX_ARCH__ >= 62 3742 /* ========================================================================== 3743 Assembly Syntax: Vx32.w+=vmpyi(Vu32.w,Rt32.ub) 3744 C Intrinsic Prototype: HVX_Vector Q6_Vw_vmpyiacc_VwVwRub(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 3745 Instruction Type: CVI_VX 3746 Execution Slots: SLOT23 3747 ========================================================================== */ 3748 3749 #define Q6_Vw_vmpyiacc_VwVwRub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyiwub_acc) 3750 #endif /* __HEXAGON_ARCH___ >= 62 */ 3751 3752 #if __HVX_ARCH__ >= 62 3753 /* ========================================================================== 3754 Assembly Syntax: Vxx32+=vmpyo(Vu32.w,Vv32.h) 3755 C Intrinsic Prototype: HVX_VectorPair Q6_W_vmpyoacc_WVwVh(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 3756 Instruction Type: CVI_VX_DV 3757 Execution Slots: SLOT23 3758 ========================================================================== */ 3759 3760 #define Q6_W_vmpyoacc_WVwVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyowh_64_acc) 3761 #endif /* __HEXAGON_ARCH___ >= 62 */ 3762 3763 #if __HVX_ARCH__ >= 62 3764 /* ========================================================================== 3765 Assembly Syntax: Vd32.ub=vround(Vu32.uh,Vv32.uh):sat 3766 C Intrinsic Prototype: HVX_Vector Q6_Vub_vround_VuhVuh_sat(HVX_Vector Vu, HVX_Vector Vv) 3767 Instruction Type: CVI_VS 3768 Execution Slots: SLOT0123 3769 ========================================================================== */ 3770 3771 #define Q6_Vub_vround_VuhVuh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrounduhub) 3772 #endif /* __HEXAGON_ARCH___ >= 62 */ 3773 3774 #if __HVX_ARCH__ >= 62 3775 /* ========================================================================== 3776 Assembly Syntax: Vd32.uh=vround(Vu32.uw,Vv32.uw):sat 3777 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vround_VuwVuw_sat(HVX_Vector Vu, HVX_Vector Vv) 3778 Instruction Type: CVI_VS 3779 Execution Slots: SLOT0123 3780 ========================================================================== */ 3781 3782 #define Q6_Vuh_vround_VuwVuw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrounduwuh) 3783 #endif /* __HEXAGON_ARCH___ >= 62 */ 3784 3785 #if __HVX_ARCH__ >= 62 3786 /* ========================================================================== 3787 Assembly Syntax: Vd32.uh=vsat(Vu32.uw,Vv32.uw) 3788 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vsat_VuwVuw(HVX_Vector Vu, HVX_Vector Vv) 3789 Instruction Type: CVI_VA 3790 Execution Slots: SLOT0123 3791 ========================================================================== */ 3792 3793 #define Q6_Vuh_vsat_VuwVuw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsatuwuh) 3794 #endif /* __HEXAGON_ARCH___ >= 62 */ 3795 3796 #if __HVX_ARCH__ >= 62 3797 /* ========================================================================== 3798 Assembly Syntax: Vd32.b=vsub(Vu32.b,Vv32.b):sat 3799 C Intrinsic Prototype: HVX_Vector Q6_Vb_vsub_VbVb_sat(HVX_Vector Vu, HVX_Vector Vv) 3800 Instruction Type: CVI_VA 3801 Execution Slots: SLOT0123 3802 ========================================================================== */ 3803 3804 #define Q6_Vb_vsub_VbVb_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubbsat) 3805 #endif /* __HEXAGON_ARCH___ >= 62 */ 3806 3807 #if __HVX_ARCH__ >= 62 3808 /* ========================================================================== 3809 Assembly Syntax: Vdd32.b=vsub(Vuu32.b,Vvv32.b):sat 3810 C Intrinsic Prototype: HVX_VectorPair Q6_Wb_vsub_WbWb_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3811 Instruction Type: CVI_VA_DV 3812 Execution Slots: SLOT0123 3813 ========================================================================== */ 3814 3815 #define Q6_Wb_vsub_WbWb_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubbsat_dv) 3816 #endif /* __HEXAGON_ARCH___ >= 62 */ 3817 3818 #if __HVX_ARCH__ >= 62 3819 /* ========================================================================== 3820 Assembly Syntax: Vd32.w=vsub(Vu32.w,Vv32.w,Qx4):carry 3821 C Intrinsic Prototype: HVX_Vector Q6_Vw_vsub_VwVwQ_carry(HVX_Vector Vu, HVX_Vector Vv, HVX_VectorPred* Qx) 3822 Instruction Type: CVI_VA 3823 Execution Slots: SLOT0123 3824 ========================================================================== */ 3825 3826 #define Q6_Vw_vsub_VwVwQ_carry __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubcarry) 3827 #endif /* __HEXAGON_ARCH___ >= 62 */ 3828 3829 #if __HVX_ARCH__ >= 62 3830 /* ========================================================================== 3831 Assembly Syntax: Vd32.ub=vsub(Vu32.ub,Vv32.b):sat 3832 C Intrinsic Prototype: HVX_Vector Q6_Vub_vsub_VubVb_sat(HVX_Vector Vu, HVX_Vector Vv) 3833 Instruction Type: CVI_VA 3834 Execution Slots: SLOT0123 3835 ========================================================================== */ 3836 3837 #define Q6_Vub_vsub_VubVb_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubububb_sat) 3838 #endif /* __HEXAGON_ARCH___ >= 62 */ 3839 3840 #if __HVX_ARCH__ >= 62 3841 /* ========================================================================== 3842 Assembly Syntax: Vd32.uw=vsub(Vu32.uw,Vv32.uw):sat 3843 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vsub_VuwVuw_sat(HVX_Vector Vu, HVX_Vector Vv) 3844 Instruction Type: CVI_VA 3845 Execution Slots: SLOT0123 3846 ========================================================================== */ 3847 3848 #define Q6_Vuw_vsub_VuwVuw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubuwsat) 3849 #endif /* __HEXAGON_ARCH___ >= 62 */ 3850 3851 #if __HVX_ARCH__ >= 62 3852 /* ========================================================================== 3853 Assembly Syntax: Vdd32.uw=vsub(Vuu32.uw,Vvv32.uw):sat 3854 C Intrinsic Prototype: HVX_VectorPair Q6_Wuw_vsub_WuwWuw_sat(HVX_VectorPair Vuu, HVX_VectorPair Vvv) 3855 Instruction Type: CVI_VA_DV 3856 Execution Slots: SLOT0123 3857 ========================================================================== */ 3858 3859 #define Q6_Wuw_vsub_WuwWuw_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsubuwsat_dv) 3860 #endif /* __HEXAGON_ARCH___ >= 62 */ 3861 3862 #if __HVX_ARCH__ >= 65 3863 /* ========================================================================== 3864 Assembly Syntax: Vd32.b=vabs(Vu32.b) 3865 C Intrinsic Prototype: HVX_Vector Q6_Vb_vabs_Vb(HVX_Vector Vu) 3866 Instruction Type: CVI_VA 3867 Execution Slots: SLOT0123 3868 ========================================================================== */ 3869 3870 #define Q6_Vb_vabs_Vb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsb) 3871 #endif /* __HEXAGON_ARCH___ >= 65 */ 3872 3873 #if __HVX_ARCH__ >= 65 3874 /* ========================================================================== 3875 Assembly Syntax: Vd32.b=vabs(Vu32.b):sat 3876 C Intrinsic Prototype: HVX_Vector Q6_Vb_vabs_Vb_sat(HVX_Vector Vu) 3877 Instruction Type: CVI_VA 3878 Execution Slots: SLOT0123 3879 ========================================================================== */ 3880 3881 #define Q6_Vb_vabs_Vb_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabsb_sat) 3882 #endif /* __HEXAGON_ARCH___ >= 65 */ 3883 3884 #if __HVX_ARCH__ >= 65 3885 /* ========================================================================== 3886 Assembly Syntax: Vx32.h+=vasl(Vu32.h,Rt32) 3887 C Intrinsic Prototype: HVX_Vector Q6_Vh_vaslacc_VhVhR(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 3888 Instruction Type: CVI_VS 3889 Execution Slots: SLOT0123 3890 ========================================================================== */ 3891 3892 #define Q6_Vh_vaslacc_VhVhR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaslh_acc) 3893 #endif /* __HEXAGON_ARCH___ >= 65 */ 3894 3895 #if __HVX_ARCH__ >= 65 3896 /* ========================================================================== 3897 Assembly Syntax: Vx32.h+=vasr(Vu32.h,Rt32) 3898 C Intrinsic Prototype: HVX_Vector Q6_Vh_vasracc_VhVhR(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 3899 Instruction Type: CVI_VS 3900 Execution Slots: SLOT0123 3901 ========================================================================== */ 3902 3903 #define Q6_Vh_vasracc_VhVhR __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasrh_acc) 3904 #endif /* __HEXAGON_ARCH___ >= 65 */ 3905 3906 #if __HVX_ARCH__ >= 65 3907 /* ========================================================================== 3908 Assembly Syntax: Vd32.ub=vasr(Vu32.uh,Vv32.uh,Rt8):rnd:sat 3909 C Intrinsic Prototype: HVX_Vector Q6_Vub_vasr_VuhVuhR_rnd_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3910 Instruction Type: CVI_VS 3911 Execution Slots: SLOT0123 3912 ========================================================================== */ 3913 3914 #define Q6_Vub_vasr_VuhVuhR_rnd_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasruhubrndsat) 3915 #endif /* __HEXAGON_ARCH___ >= 65 */ 3916 3917 #if __HVX_ARCH__ >= 65 3918 /* ========================================================================== 3919 Assembly Syntax: Vd32.ub=vasr(Vu32.uh,Vv32.uh,Rt8):sat 3920 C Intrinsic Prototype: HVX_Vector Q6_Vub_vasr_VuhVuhR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3921 Instruction Type: CVI_VS 3922 Execution Slots: SLOT0123 3923 ========================================================================== */ 3924 3925 #define Q6_Vub_vasr_VuhVuhR_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasruhubsat) 3926 #endif /* __HEXAGON_ARCH___ >= 65 */ 3927 3928 #if __HVX_ARCH__ >= 65 3929 /* ========================================================================== 3930 Assembly Syntax: Vd32.uh=vasr(Vu32.uw,Vv32.uw,Rt8):sat 3931 C Intrinsic Prototype: HVX_Vector Q6_Vuh_vasr_VuwVuwR_sat(HVX_Vector Vu, HVX_Vector Vv, Word32 Rt) 3932 Instruction Type: CVI_VS 3933 Execution Slots: SLOT0123 3934 ========================================================================== */ 3935 3936 #define Q6_Vuh_vasr_VuwVuwR_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasruwuhsat) 3937 #endif /* __HEXAGON_ARCH___ >= 65 */ 3938 3939 #if __HVX_ARCH__ >= 65 3940 /* ========================================================================== 3941 Assembly Syntax: Vd32.b=vavg(Vu32.b,Vv32.b) 3942 C Intrinsic Prototype: HVX_Vector Q6_Vb_vavg_VbVb(HVX_Vector Vu, HVX_Vector Vv) 3943 Instruction Type: CVI_VA 3944 Execution Slots: SLOT0123 3945 ========================================================================== */ 3946 3947 #define Q6_Vb_vavg_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgb) 3948 #endif /* __HEXAGON_ARCH___ >= 65 */ 3949 3950 #if __HVX_ARCH__ >= 65 3951 /* ========================================================================== 3952 Assembly Syntax: Vd32.b=vavg(Vu32.b,Vv32.b):rnd 3953 C Intrinsic Prototype: HVX_Vector Q6_Vb_vavg_VbVb_rnd(HVX_Vector Vu, HVX_Vector Vv) 3954 Instruction Type: CVI_VA 3955 Execution Slots: SLOT0123 3956 ========================================================================== */ 3957 3958 #define Q6_Vb_vavg_VbVb_rnd __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavgbrnd) 3959 #endif /* __HEXAGON_ARCH___ >= 65 */ 3960 3961 #if __HVX_ARCH__ >= 65 3962 /* ========================================================================== 3963 Assembly Syntax: Vd32.uw=vavg(Vu32.uw,Vv32.uw) 3964 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vavg_VuwVuw(HVX_Vector Vu, HVX_Vector Vv) 3965 Instruction Type: CVI_VA 3966 Execution Slots: SLOT0123 3967 ========================================================================== */ 3968 3969 #define Q6_Vuw_vavg_VuwVuw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavguw) 3970 #endif /* __HEXAGON_ARCH___ >= 65 */ 3971 3972 #if __HVX_ARCH__ >= 65 3973 /* ========================================================================== 3974 Assembly Syntax: Vd32.uw=vavg(Vu32.uw,Vv32.uw):rnd 3975 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vavg_VuwVuw_rnd(HVX_Vector Vu, HVX_Vector Vv) 3976 Instruction Type: CVI_VA 3977 Execution Slots: SLOT0123 3978 ========================================================================== */ 3979 3980 #define Q6_Vuw_vavg_VuwVuw_rnd __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vavguwrnd) 3981 #endif /* __HEXAGON_ARCH___ >= 65 */ 3982 3983 #if __HVX_ARCH__ >= 65 3984 /* ========================================================================== 3985 Assembly Syntax: Vdd32=#0 3986 C Intrinsic Prototype: HVX_VectorPair Q6_W_vzero() 3987 Instruction Type: MAPPING 3988 Execution Slots: SLOT0123 3989 ========================================================================== */ 3990 3991 #define Q6_W_vzero __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vdd0) 3992 #endif /* __HEXAGON_ARCH___ >= 65 */ 3993 3994 #if __HVX_ARCH__ >= 65 3995 /* ========================================================================== 3996 Assembly Syntax: vtmp.h=vgather(Rt32,Mu2,Vv32.h).h 3997 C Intrinsic Prototype: void Q6_vgather_ARMVh(HVX_Vector* Rs, Word32 Rt, Word32 Mu, HVX_Vector Vv) 3998 Instruction Type: CVI_GATHER 3999 Execution Slots: SLOT01 4000 ========================================================================== */ 4001 4002 #define Q6_vgather_ARMVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermh) 4003 #endif /* __HEXAGON_ARCH___ >= 65 */ 4004 4005 #if __HVX_ARCH__ >= 65 4006 /* ========================================================================== 4007 Assembly Syntax: if (Qs4) vtmp.h=vgather(Rt32,Mu2,Vv32.h).h 4008 C Intrinsic Prototype: void Q6_vgather_AQRMVh(HVX_Vector* Rs, HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_Vector Vv) 4009 Instruction Type: CVI_GATHER 4010 Execution Slots: SLOT01 4011 ========================================================================== */ 4012 4013 #define Q6_vgather_AQRMVh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermhq) 4014 #endif /* __HEXAGON_ARCH___ >= 65 */ 4015 4016 #if __HVX_ARCH__ >= 65 4017 /* ========================================================================== 4018 Assembly Syntax: vtmp.h=vgather(Rt32,Mu2,Vvv32.w).h 4019 C Intrinsic Prototype: void Q6_vgather_ARMWw(HVX_Vector* Rs, Word32 Rt, Word32 Mu, HVX_VectorPair Vvv) 4020 Instruction Type: CVI_GATHER_DV 4021 Execution Slots: SLOT01 4022 ========================================================================== */ 4023 4024 #define Q6_vgather_ARMWw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermhw) 4025 #endif /* __HEXAGON_ARCH___ >= 65 */ 4026 4027 #if __HVX_ARCH__ >= 65 4028 /* ========================================================================== 4029 Assembly Syntax: if (Qs4) vtmp.h=vgather(Rt32,Mu2,Vvv32.w).h 4030 C Intrinsic Prototype: void Q6_vgather_AQRMWw(HVX_Vector* Rs, HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_VectorPair Vvv) 4031 Instruction Type: CVI_GATHER_DV 4032 Execution Slots: SLOT01 4033 ========================================================================== */ 4034 4035 #define Q6_vgather_AQRMWw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermhwq) 4036 #endif /* __HEXAGON_ARCH___ >= 65 */ 4037 4038 #if __HVX_ARCH__ >= 65 4039 /* ========================================================================== 4040 Assembly Syntax: vtmp.w=vgather(Rt32,Mu2,Vv32.w).w 4041 C Intrinsic Prototype: void Q6_vgather_ARMVw(HVX_Vector* Rs, Word32 Rt, Word32 Mu, HVX_Vector Vv) 4042 Instruction Type: CVI_GATHER 4043 Execution Slots: SLOT01 4044 ========================================================================== */ 4045 4046 #define Q6_vgather_ARMVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermw) 4047 #endif /* __HEXAGON_ARCH___ >= 65 */ 4048 4049 #if __HVX_ARCH__ >= 65 4050 /* ========================================================================== 4051 Assembly Syntax: if (Qs4) vtmp.w=vgather(Rt32,Mu2,Vv32.w).w 4052 C Intrinsic Prototype: void Q6_vgather_AQRMVw(HVX_Vector* Rs, HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_Vector Vv) 4053 Instruction Type: CVI_GATHER 4054 Execution Slots: SLOT01 4055 ========================================================================== */ 4056 4057 #define Q6_vgather_AQRMVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgathermwq) 4058 #endif /* __HEXAGON_ARCH___ >= 65 */ 4059 4060 #if __HVX_ARCH__ >= 65 4061 /* ========================================================================== 4062 Assembly Syntax: Vd32.h=vlut4(Vu32.uh,Rtt32.h) 4063 C Intrinsic Prototype: HVX_Vector Q6_Vh_vlut4_VuhPh(HVX_Vector Vu, Word64 Rtt) 4064 Instruction Type: CVI_VX_DV 4065 Execution Slots: SLOT2 4066 ========================================================================== */ 4067 4068 #define Q6_Vh_vlut4_VuhPh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vlut4) 4069 #endif /* __HEXAGON_ARCH___ >= 65 */ 4070 4071 #if __HVX_ARCH__ >= 65 4072 /* ========================================================================== 4073 Assembly Syntax: Vdd32.h=vmpa(Vuu32.ub,Rt32.ub) 4074 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpa_WubRub(HVX_VectorPair Vuu, Word32 Rt) 4075 Instruction Type: CVI_VX_DV 4076 Execution Slots: SLOT23 4077 ========================================================================== */ 4078 4079 #define Q6_Wh_vmpa_WubRub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabuu) 4080 #endif /* __HEXAGON_ARCH___ >= 65 */ 4081 4082 #if __HVX_ARCH__ >= 65 4083 /* ========================================================================== 4084 Assembly Syntax: Vxx32.h+=vmpa(Vuu32.ub,Rt32.ub) 4085 C Intrinsic Prototype: HVX_VectorPair Q6_Wh_vmpaacc_WhWubRub(HVX_VectorPair Vxx, HVX_VectorPair Vuu, Word32 Rt) 4086 Instruction Type: CVI_VX_DV 4087 Execution Slots: SLOT23 4088 ========================================================================== */ 4089 4090 #define Q6_Wh_vmpaacc_WhWubRub __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpabuu_acc) 4091 #endif /* __HEXAGON_ARCH___ >= 65 */ 4092 4093 #if __HVX_ARCH__ >= 65 4094 /* ========================================================================== 4095 Assembly Syntax: Vx32.h=vmpa(Vx32.h,Vu32.h,Rtt32.h):sat 4096 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpa_VhVhVhPh_sat(HVX_Vector Vx, HVX_Vector Vu, Word64 Rtt) 4097 Instruction Type: CVI_VX_DV 4098 Execution Slots: SLOT2 4099 ========================================================================== */ 4100 4101 #define Q6_Vh_vmpa_VhVhVhPh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpahhsat) 4102 #endif /* __HEXAGON_ARCH___ >= 65 */ 4103 4104 #if __HVX_ARCH__ >= 65 4105 /* ========================================================================== 4106 Assembly Syntax: Vx32.h=vmpa(Vx32.h,Vu32.uh,Rtt32.uh):sat 4107 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmpa_VhVhVuhPuh_sat(HVX_Vector Vx, HVX_Vector Vu, Word64 Rtt) 4108 Instruction Type: CVI_VX_DV 4109 Execution Slots: SLOT2 4110 ========================================================================== */ 4111 4112 #define Q6_Vh_vmpa_VhVhVuhPuh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpauhuhsat) 4113 #endif /* __HEXAGON_ARCH___ >= 65 */ 4114 4115 #if __HVX_ARCH__ >= 65 4116 /* ========================================================================== 4117 Assembly Syntax: Vx32.h=vmps(Vx32.h,Vu32.uh,Rtt32.uh):sat 4118 C Intrinsic Prototype: HVX_Vector Q6_Vh_vmps_VhVhVuhPuh_sat(HVX_Vector Vx, HVX_Vector Vu, Word64 Rtt) 4119 Instruction Type: CVI_VX_DV 4120 Execution Slots: SLOT2 4121 ========================================================================== */ 4122 4123 #define Q6_Vh_vmps_VhVhVuhPuh_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpsuhuhsat) 4124 #endif /* __HEXAGON_ARCH___ >= 65 */ 4125 4126 #if __HVX_ARCH__ >= 65 4127 /* ========================================================================== 4128 Assembly Syntax: Vxx32.w+=vmpy(Vu32.h,Rt32.h) 4129 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vmpyacc_WwVhRh(HVX_VectorPair Vxx, HVX_Vector Vu, Word32 Rt) 4130 Instruction Type: CVI_VX_DV 4131 Execution Slots: SLOT23 4132 ========================================================================== */ 4133 4134 #define Q6_Ww_vmpyacc_WwVhRh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyh_acc) 4135 #endif /* __HEXAGON_ARCH___ >= 65 */ 4136 4137 #if __HVX_ARCH__ >= 65 4138 /* ========================================================================== 4139 Assembly Syntax: Vd32.uw=vmpye(Vu32.uh,Rt32.uh) 4140 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vmpye_VuhRuh(HVX_Vector Vu, Word32 Rt) 4141 Instruction Type: CVI_VX 4142 Execution Slots: SLOT23 4143 ========================================================================== */ 4144 4145 #define Q6_Vuw_vmpye_VuhRuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuhe) 4146 #endif /* __HEXAGON_ARCH___ >= 65 */ 4147 4148 #if __HVX_ARCH__ >= 65 4149 /* ========================================================================== 4150 Assembly Syntax: Vx32.uw+=vmpye(Vu32.uh,Rt32.uh) 4151 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vmpyeacc_VuwVuhRuh(HVX_Vector Vx, HVX_Vector Vu, Word32 Rt) 4152 Instruction Type: CVI_VX 4153 Execution Slots: SLOT23 4154 ========================================================================== */ 4155 4156 #define Q6_Vuw_vmpyeacc_VuwVuhRuh __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuhe_acc) 4157 #endif /* __HEXAGON_ARCH___ >= 65 */ 4158 4159 #if __HVX_ARCH__ >= 65 4160 /* ========================================================================== 4161 Assembly Syntax: Vd32.b=vnavg(Vu32.b,Vv32.b) 4162 C Intrinsic Prototype: HVX_Vector Q6_Vb_vnavg_VbVb(HVX_Vector Vu, HVX_Vector Vv) 4163 Instruction Type: CVI_VA 4164 Execution Slots: SLOT0123 4165 ========================================================================== */ 4166 4167 #define Q6_Vb_vnavg_VbVb __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vnavgb) 4168 #endif /* __HEXAGON_ARCH___ >= 65 */ 4169 4170 #if __HVX_ARCH__ >= 65 4171 /* ========================================================================== 4172 Assembly Syntax: Vd32.b=prefixsum(Qv4) 4173 C Intrinsic Prototype: HVX_Vector Q6_Vb_prefixsum_Q(HVX_VectorPred Qv) 4174 Instruction Type: CVI_VS 4175 Execution Slots: SLOT0123 4176 ========================================================================== */ 4177 4178 #define Q6_Vb_prefixsum_Q __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vprefixqb) 4179 #endif /* __HEXAGON_ARCH___ >= 65 */ 4180 4181 #if __HVX_ARCH__ >= 65 4182 /* ========================================================================== 4183 Assembly Syntax: Vd32.h=prefixsum(Qv4) 4184 C Intrinsic Prototype: HVX_Vector Q6_Vh_prefixsum_Q(HVX_VectorPred Qv) 4185 Instruction Type: CVI_VS 4186 Execution Slots: SLOT0123 4187 ========================================================================== */ 4188 4189 #define Q6_Vh_prefixsum_Q __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vprefixqh) 4190 #endif /* __HEXAGON_ARCH___ >= 65 */ 4191 4192 #if __HVX_ARCH__ >= 65 4193 /* ========================================================================== 4194 Assembly Syntax: Vd32.w=prefixsum(Qv4) 4195 C Intrinsic Prototype: HVX_Vector Q6_Vw_prefixsum_Q(HVX_VectorPred Qv) 4196 Instruction Type: CVI_VS 4197 Execution Slots: SLOT0123 4198 ========================================================================== */ 4199 4200 #define Q6_Vw_prefixsum_Q __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vprefixqw) 4201 #endif /* __HEXAGON_ARCH___ >= 65 */ 4202 4203 #if __HVX_ARCH__ >= 65 4204 /* ========================================================================== 4205 Assembly Syntax: vscatter(Rt32,Mu2,Vv32.h).h=Vw32 4206 C Intrinsic Prototype: void Q6_vscatter_RMVhV(Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4207 Instruction Type: CVI_SCATTER 4208 Execution Slots: SLOT0 4209 ========================================================================== */ 4210 4211 #define Q6_vscatter_RMVhV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermh) 4212 #endif /* __HEXAGON_ARCH___ >= 65 */ 4213 4214 #if __HVX_ARCH__ >= 65 4215 /* ========================================================================== 4216 Assembly Syntax: vscatter(Rt32,Mu2,Vv32.h).h+=Vw32 4217 C Intrinsic Prototype: void Q6_vscatteracc_RMVhV(Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4218 Instruction Type: CVI_SCATTER 4219 Execution Slots: SLOT0 4220 ========================================================================== */ 4221 4222 #define Q6_vscatteracc_RMVhV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermh_add) 4223 #endif /* __HEXAGON_ARCH___ >= 65 */ 4224 4225 #if __HVX_ARCH__ >= 65 4226 /* ========================================================================== 4227 Assembly Syntax: if (Qs4) vscatter(Rt32,Mu2,Vv32.h).h=Vw32 4228 C Intrinsic Prototype: void Q6_vscatter_QRMVhV(HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4229 Instruction Type: CVI_SCATTER 4230 Execution Slots: SLOT0 4231 ========================================================================== */ 4232 4233 #define Q6_vscatter_QRMVhV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermhq) 4234 #endif /* __HEXAGON_ARCH___ >= 65 */ 4235 4236 #if __HVX_ARCH__ >= 65 4237 /* ========================================================================== 4238 Assembly Syntax: vscatter(Rt32,Mu2,Vvv32.w).h=Vw32 4239 C Intrinsic Prototype: void Q6_vscatter_RMWwV(Word32 Rt, Word32 Mu, HVX_VectorPair Vvv, HVX_Vector Vw) 4240 Instruction Type: CVI_SCATTER_DV 4241 Execution Slots: SLOT0 4242 ========================================================================== */ 4243 4244 #define Q6_vscatter_RMWwV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermhw) 4245 #endif /* __HEXAGON_ARCH___ >= 65 */ 4246 4247 #if __HVX_ARCH__ >= 65 4248 /* ========================================================================== 4249 Assembly Syntax: vscatter(Rt32,Mu2,Vvv32.w).h+=Vw32 4250 C Intrinsic Prototype: void Q6_vscatteracc_RMWwV(Word32 Rt, Word32 Mu, HVX_VectorPair Vvv, HVX_Vector Vw) 4251 Instruction Type: CVI_SCATTER_DV 4252 Execution Slots: SLOT0 4253 ========================================================================== */ 4254 4255 #define Q6_vscatteracc_RMWwV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermhw_add) 4256 #endif /* __HEXAGON_ARCH___ >= 65 */ 4257 4258 #if __HVX_ARCH__ >= 65 4259 /* ========================================================================== 4260 Assembly Syntax: if (Qs4) vscatter(Rt32,Mu2,Vvv32.w).h=Vw32 4261 C Intrinsic Prototype: void Q6_vscatter_QRMWwV(HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_VectorPair Vvv, HVX_Vector Vw) 4262 Instruction Type: CVI_SCATTER_DV 4263 Execution Slots: SLOT0 4264 ========================================================================== */ 4265 4266 #define Q6_vscatter_QRMWwV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermhwq) 4267 #endif /* __HEXAGON_ARCH___ >= 65 */ 4268 4269 #if __HVX_ARCH__ >= 65 4270 /* ========================================================================== 4271 Assembly Syntax: vscatter(Rt32,Mu2,Vv32.w).w=Vw32 4272 C Intrinsic Prototype: void Q6_vscatter_RMVwV(Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4273 Instruction Type: CVI_SCATTER 4274 Execution Slots: SLOT0 4275 ========================================================================== */ 4276 4277 #define Q6_vscatter_RMVwV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermw) 4278 #endif /* __HEXAGON_ARCH___ >= 65 */ 4279 4280 #if __HVX_ARCH__ >= 65 4281 /* ========================================================================== 4282 Assembly Syntax: vscatter(Rt32,Mu2,Vv32.w).w+=Vw32 4283 C Intrinsic Prototype: void Q6_vscatteracc_RMVwV(Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4284 Instruction Type: CVI_SCATTER 4285 Execution Slots: SLOT0 4286 ========================================================================== */ 4287 4288 #define Q6_vscatteracc_RMVwV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermw_add) 4289 #endif /* __HEXAGON_ARCH___ >= 65 */ 4290 4291 #if __HVX_ARCH__ >= 65 4292 /* ========================================================================== 4293 Assembly Syntax: if (Qs4) vscatter(Rt32,Mu2,Vv32.w).w=Vw32 4294 C Intrinsic Prototype: void Q6_vscatter_QRMVwV(HVX_VectorPred Qs, Word32 Rt, Word32 Mu, HVX_Vector Vv, HVX_Vector Vw) 4295 Instruction Type: CVI_SCATTER 4296 Execution Slots: SLOT0 4297 ========================================================================== */ 4298 4299 #define Q6_vscatter_QRMVwV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vscattermwq) 4300 #endif /* __HEXAGON_ARCH___ >= 65 */ 4301 4302 #if __HVX_ARCH__ >= 66 4303 /* ========================================================================== 4304 Assembly Syntax: Vd32.w=vadd(Vu32.w,Vv32.w,Qs4):carry:sat 4305 C Intrinsic Prototype: HVX_Vector Q6_Vw_vadd_VwVwQ_carry_sat(HVX_Vector Vu, HVX_Vector Vv, HVX_VectorPred Qs) 4306 Instruction Type: CVI_VA 4307 Execution Slots: SLOT0123 4308 ========================================================================== */ 4309 4310 #define Q6_Vw_vadd_VwVwQ_carry_sat __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vaddcarrysat) 4311 #endif /* __HEXAGON_ARCH___ >= 66 */ 4312 4313 #if __HVX_ARCH__ >= 66 4314 /* ========================================================================== 4315 Assembly Syntax: Vxx32.w=vasrinto(Vu32.w,Vv32.w) 4316 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_vasrinto_WwVwVw(HVX_VectorPair Vxx, HVX_Vector Vu, HVX_Vector Vv) 4317 Instruction Type: CVI_VP_VS 4318 Execution Slots: SLOT0123 4319 ========================================================================== */ 4320 4321 #define Q6_Ww_vasrinto_WwVwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vasr_into) 4322 #endif /* __HEXAGON_ARCH___ >= 66 */ 4323 4324 #if __HVX_ARCH__ >= 66 4325 /* ========================================================================== 4326 Assembly Syntax: Vd32.uw=vrotr(Vu32.uw,Vv32.uw) 4327 C Intrinsic Prototype: HVX_Vector Q6_Vuw_vrotr_VuwVuw(HVX_Vector Vu, HVX_Vector Vv) 4328 Instruction Type: CVI_VS 4329 Execution Slots: SLOT0123 4330 ========================================================================== */ 4331 4332 #define Q6_Vuw_vrotr_VuwVuw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vrotr) 4333 #endif /* __HEXAGON_ARCH___ >= 66 */ 4334 4335 #if __HVX_ARCH__ >= 66 4336 /* ========================================================================== 4337 Assembly Syntax: Vd32.w=vsatdw(Vu32.w,Vv32.w) 4338 C Intrinsic Prototype: HVX_Vector Q6_Vw_vsatdw_VwVw(HVX_Vector Vu, HVX_Vector Vv) 4339 Instruction Type: CVI_VA 4340 Execution Slots: SLOT0123 4341 ========================================================================== */ 4342 4343 #define Q6_Vw_vsatdw_VwVw __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsatdw) 4344 #endif /* __HEXAGON_ARCH___ >= 66 */ 4345 4346 #if __HVX_ARCH__ >= 68 4347 /* ========================================================================== 4348 Assembly Syntax: Vdd32.w=v6mpy(Vuu32.ub,Vvv32.b,#u2):h 4349 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_v6mpy_WubWbI_h(HVX_VectorPair Vuu, HVX_VectorPair Vvv, Word32 Iu2) 4350 Instruction Type: CVI_VX_DV 4351 Execution Slots: SLOT23 4352 ========================================================================== */ 4353 4354 #define Q6_Ww_v6mpy_WubWbI_h __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_v6mpyhubs10) 4355 #endif /* __HEXAGON_ARCH___ >= 68 */ 4356 4357 #if __HVX_ARCH__ >= 68 4358 /* ========================================================================== 4359 Assembly Syntax: Vxx32.w+=v6mpy(Vuu32.ub,Vvv32.b,#u2):h 4360 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_v6mpyacc_WwWubWbI_h(HVX_VectorPair Vxx, HVX_VectorPair Vuu, HVX_VectorPair Vvv, Word32 Iu2) 4361 Instruction Type: CVI_VX_DV 4362 Execution Slots: SLOT23 4363 ========================================================================== */ 4364 4365 #define Q6_Ww_v6mpyacc_WwWubWbI_h __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_v6mpyhubs10_vxx) 4366 #endif /* __HEXAGON_ARCH___ >= 68 */ 4367 4368 #if __HVX_ARCH__ >= 68 4369 /* ========================================================================== 4370 Assembly Syntax: Vdd32.w=v6mpy(Vuu32.ub,Vvv32.b,#u2):v 4371 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_v6mpy_WubWbI_v(HVX_VectorPair Vuu, HVX_VectorPair Vvv, Word32 Iu2) 4372 Instruction Type: CVI_VX_DV 4373 Execution Slots: SLOT23 4374 ========================================================================== */ 4375 4376 #define Q6_Ww_v6mpy_WubWbI_v __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_v6mpyvubs10) 4377 #endif /* __HEXAGON_ARCH___ >= 68 */ 4378 4379 #if __HVX_ARCH__ >= 68 4380 /* ========================================================================== 4381 Assembly Syntax: Vxx32.w+=v6mpy(Vuu32.ub,Vvv32.b,#u2):v 4382 C Intrinsic Prototype: HVX_VectorPair Q6_Ww_v6mpyacc_WwWubWbI_v(HVX_VectorPair Vxx, HVX_VectorPair Vuu, HVX_VectorPair Vvv, Word32 Iu2) 4383 Instruction Type: CVI_VX_DV 4384 Execution Slots: SLOT23 4385 ========================================================================== */ 4386 4387 #define Q6_Ww_v6mpyacc_WwWubWbI_v __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_v6mpyvubs10_vxx) 4388 #endif /* __HEXAGON_ARCH___ >= 68 */ 4389 4390 #endif /* __HVX__ */ 4391 4392 #endif 4393