brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.5 KiB · a9fbdba Raw
183 lines · c
1/*===---- arm_neon_sve_bridge.h - ARM NEON SVE Bridge intrinsics -----------===2 *3 *4 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5 * See https://llvm.org/LICENSE.txt for license information.6 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7 *8 *===-----------------------------------------------------------------------===9 */10 11#ifndef __ARM_NEON_SVE_BRIDGE_H12#define __ARM_NEON_SVE_BRIDGE_H13 14#include <arm_neon.h>15#include <arm_sve.h>16 17#ifdef __cplusplus18extern "C" {19#endif20 21/* Function attributes */22#define __ai static __inline__ __attribute__((__always_inline__, __nodebug__))23#define __aio                                                                  \24  static __inline__                                                            \25      __attribute__((__always_inline__, __nodebug__, __overloadable__))26 27__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s8)))28svint8_t svset_neonq(svint8_t, int8x16_t);29__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s16)))30svint16_t svset_neonq(svint16_t, int16x8_t);31__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s32)))32svint32_t svset_neonq(svint32_t, int32x4_t);33__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s64)))34svint64_t svset_neonq(svint64_t, int64x2_t);35__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u8)))36svuint8_t svset_neonq(svuint8_t, uint8x16_t);37__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u16)))38svuint16_t svset_neonq(svuint16_t, uint16x8_t);39__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u32)))40svuint32_t svset_neonq(svuint32_t, uint32x4_t);41__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u64)))42svuint64_t svset_neonq(svuint64_t, uint64x2_t);43__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f16)))44svfloat16_t svset_neonq(svfloat16_t, float16x8_t);45__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f32)))46svfloat32_t svset_neonq(svfloat32_t, float32x4_t);47__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f64)))48svfloat64_t svset_neonq(svfloat64_t, float64x2_t);49__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s8)))50svint8_t svset_neonq_s8(svint8_t, int8x16_t);51__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s16)))52svint16_t svset_neonq_s16(svint16_t, int16x8_t);53__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s32)))54svint32_t svset_neonq_s32(svint32_t, int32x4_t);55__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s64)))56svint64_t svset_neonq_s64(svint64_t, int64x2_t);57__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u8)))58svuint8_t svset_neonq_u8(svuint8_t, uint8x16_t);59__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u16)))60svuint16_t svset_neonq_u16(svuint16_t, uint16x8_t);61__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u32)))62svuint32_t svset_neonq_u32(svuint32_t, uint32x4_t);63__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u64)))64svuint64_t svset_neonq_u64(svuint64_t, uint64x2_t);65__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f16)))66svfloat16_t svset_neonq_f16(svfloat16_t, float16x8_t);67__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f32)))68svfloat32_t svset_neonq_f32(svfloat32_t, float32x4_t);69__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f64)))70svfloat64_t svset_neonq_f64(svfloat64_t, float64x2_t);71 72__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s8)))73int8x16_t svget_neonq(svint8_t);74__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s16)))75int16x8_t svget_neonq(svint16_t);76__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s32)))77int32x4_t svget_neonq(svint32_t);78__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s64)))79int64x2_t svget_neonq(svint64_t);80__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u8)))81uint8x16_t svget_neonq(svuint8_t);82__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u16)))83uint16x8_t svget_neonq(svuint16_t);84__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u32)))85uint32x4_t svget_neonq(svuint32_t);86__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u64)))87uint64x2_t svget_neonq(svuint64_t);88__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f16)))89float16x8_t svget_neonq(svfloat16_t);90__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f32)))91float32x4_t svget_neonq(svfloat32_t);92__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f64)))93float64x2_t svget_neonq(svfloat64_t);94__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s8)))95int8x16_t svget_neonq_s8(svint8_t);96__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s16)))97int16x8_t svget_neonq_s16(svint16_t);98__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s32)))99int32x4_t svget_neonq_s32(svint32_t);100__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s64)))101int64x2_t svget_neonq_s64(svint64_t);102__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u8)))103uint8x16_t svget_neonq_u8(svuint8_t);104__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u16)))105uint16x8_t svget_neonq_u16(svuint16_t);106__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u32)))107uint32x4_t svget_neonq_u32(svuint32_t);108__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u64)))109uint64x2_t svget_neonq_u64(svuint64_t);110__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f16)))111float16x8_t svget_neonq_f16(svfloat16_t);112__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f32)))113float32x4_t svget_neonq_f32(svfloat32_t);114__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f64)))115float64x2_t svget_neonq_f64(svfloat64_t);116 117__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s8)))118svint8_t svdup_neonq(int8x16_t);119__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s16)))120svint16_t svdup_neonq(int16x8_t);121__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s32)))122svint32_t svdup_neonq(int32x4_t);123__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s64)))124svint64_t svdup_neonq(int64x2_t);125__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u8)))126svuint8_t svdup_neonq(uint8x16_t);127__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u16)))128svuint16_t svdup_neonq(uint16x8_t);129__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u32)))130svuint32_t svdup_neonq(uint32x4_t);131__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u64)))132svuint64_t svdup_neonq(uint64x2_t);133__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f16)))134svfloat16_t svdup_neonq(float16x8_t);135__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f32)))136svfloat32_t svdup_neonq(float32x4_t);137__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f64)))138svfloat64_t svdup_neonq(float64x2_t);139__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s8)))140svint8_t svdup_neonq_s8(int8x16_t);141__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s16)))142svint16_t svdup_neonq_s16(int16x8_t);143__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s32)))144svint32_t svdup_neonq_s32(int32x4_t);145__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s64)))146svint64_t svdup_neonq_s64(int64x2_t);147__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u8)))148svuint8_t svdup_neonq_u8(uint8x16_t);149__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u16)))150svuint16_t svdup_neonq_u16(uint16x8_t);151__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u32)))152svuint32_t svdup_neonq_u32(uint32x4_t);153__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u64)))154svuint64_t svdup_neonq_u64(uint64x2_t);155__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f16)))156svfloat16_t svdup_neonq_f16(float16x8_t);157__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f32)))158svfloat32_t svdup_neonq_f32(float32x4_t);159__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f64)))160svfloat64_t svdup_neonq_f64(float64x2_t);161 162__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_bf16)))163svbfloat16_t svset_neonq(svbfloat16_t, bfloat16x8_t);164__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_bf16)))165svbfloat16_t svset_neonq_bf16(svbfloat16_t, bfloat16x8_t);166__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_bf16)))167bfloat16x8_t svget_neonq(svbfloat16_t);168__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_bf16)))169bfloat16x8_t svget_neonq_bf16(svbfloat16_t);170__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_bf16)))171svbfloat16_t svdup_neonq(bfloat16x8_t);172__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_bf16)))173svbfloat16_t svdup_neonq_bf16(bfloat16x8_t);174 175#undef __ai176#undef __aio177 178#ifdef __cplusplus179} // extern "C"180#endif181 182#endif //__ARM_NEON_SVE_BRIDGE_H183