⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 altivec.h

📁 Mac OS X 10.4.9 for x86 Source Code gcc 实现源代码
💻 H
📖 第 1 页 / 共 5 页
字号:
/* PowerPC AltiVec include file.   Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.   Contributed by Aldy Hernandez (aldyh@redhat.com).   This file is part of GCC.   GCC is free software; you can redistribute it and/or modify it   under the terms of the GNU General Public License as published   by the Free Software Foundation; either version 2, or (at your   option) any later version.   GCC is distributed in the hope that it will be useful, but WITHOUT   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public   License for more details.   You should have received a copy of the GNU General Public License   along with GCC; see the file COPYING.  If not, write to the   Free Software Foundation, 59 Temple Place - Suite 330, Boston,   MA 02111-1307, USA.  *//* As a special exception, if you include this header file into source   files compiled by GCC, this header file does not by itself cause   the resulting executable to be covered by the GNU General Public   License.  This exception does not however invalidate any other   reasons why the executable file might be covered by the GNU General   Public License.  *//* Implemented to conform to the specification included in the AltiVec   Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0).  */#ifndef _ALTIVEC_H#define _ALTIVEC_H 1#if !defined(__VEC__) || !defined(__ALTIVEC__)#error Use the "-maltivec" flag to enable PowerPC AltiVec support#endif/* APPLE LOCAL begin AltiVec *//* If __APPLE_ALTIVEC__ is defined, the compiler has internally   synthesized the definitions contained in this header.  */#if defined(__APPLE_ALTIVEC__)#warning Ignoring <altivec.h> because "-faltivec" specified#else/* You are allowed to undef these for C++ compatibility.  */#define vector __vector#define pixel __pixel#define bool __bool/* APPLE LOCAL end AltiVec *//* Condition register codes for AltiVec predicates. */#define __CR6_EQ		0#define __CR6_EQ_REV		1#define __CR6_LT		2#define __CR6_LT_REV		3/* These are easy... Same exact arguments.  */#define vec_vaddcuw vec_addc#define vec_vand vec_and#define vec_vandc vec_andc#define vec_vrfip vec_ceil#define vec_vcmpbfp vec_cmpb#define vec_vcmpgefp vec_cmpge#define vec_vctsxs vec_cts#define vec_vctuxs vec_ctu#define vec_vexptefp vec_expte#define vec_vrfim vec_floor#define vec_lvx vec_ld#define vec_lvxl vec_ldl#define vec_vlogefp vec_loge#define vec_vmaddfp vec_madd#define vec_vmhaddshs vec_madds#define vec_vmladduhm vec_mladd#define vec_vmhraddshs vec_mradds#define vec_vnmsubfp vec_nmsub#define vec_vnor vec_nor#define vec_vor vec_or#define vec_vpkpx vec_packpx#define vec_vperm vec_perm#define vec_vrefp vec_re#define vec_vrfin vec_round#define vec_vrsqrtefp vec_rsqrte#define vec_vsel vec_sel#define vec_vsldoi vec_sld#define vec_vsl vec_sll#define vec_vslo vec_slo#define vec_vspltisb vec_splat_s8#define vec_vspltish vec_splat_s16#define vec_vspltisw vec_splat_s32#define vec_vsr vec_srl#define vec_vsro vec_sro#define vec_stvx vec_st#define vec_stvxl vec_stl#define vec_vsubcuw vec_subc#define vec_vsum2sws vec_sum2s#define vec_vsumsws vec_sums#define vec_vrfiz vec_trunc#define vec_vxor vec_xor#ifdef __cplusplusextern "C++" {/* Prototypes for builtins that take literals and must always be   inlined.  */inline __vector float vec_ctf (__vector unsigned int, const int) __attribute__ ((always_inline));inline __vector float vec_ctf (__vector signed int, const int) __attribute__ ((always_inline));inline __vector float vec_vcfsx (__vector signed int a1, const int a2) __attribute__ ((always_inline));inline __vector float vec_vcfux (__vector unsigned int a1, const int a2) __attribute__ ((always_inline));inline __vector signed int vec_cts (__vector float, const int) __attribute__ ((always_inline));inline __vector unsigned int vec_ctu (__vector float, const int) __attribute__ ((always_inline));inline void vec_dss (const int) __attribute__ ((always_inline));inline void vec_dst (const __vector unsigned char *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const __vector signed char *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const __vector bool char *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const __vector unsigned short *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const __vector signed short *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const __vector bool short *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const __vector pixel *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const __vector unsigned int *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const __vector signed int *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const __vector bool int *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const __vector float *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const unsigned char *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const signed char *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const unsigned short *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const short *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const unsigned int *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const int *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const unsigned long *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const long *, int, const int) __attribute__ ((always_inline));inline void vec_dst (const float *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const __vector unsigned char *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const __vector signed char *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const __vector bool char *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const __vector unsigned short *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const __vector signed short *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const __vector bool short *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const __vector pixel *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const __vector unsigned int *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const __vector signed int *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const __vector bool int *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const __vector float *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const unsigned char *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const signed char *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const unsigned short *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const short *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const unsigned int *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const int *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const unsigned long *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const long *, int, const int) __attribute__ ((always_inline));inline void vec_dstst (const float *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const __vector unsigned char *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const __vector signed char *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const __vector bool char *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const __vector unsigned short *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const __vector signed short *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const __vector bool short *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const __vector pixel *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const __vector unsigned int *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const __vector signed int *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const __vector bool int *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const __vector float *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const unsigned char *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const signed char *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const unsigned short *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const short *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const unsigned int *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const int *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const unsigned long *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const long *, int, const int) __attribute__ ((always_inline));inline void vec_dststt (const float *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const __vector unsigned char *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const __vector signed char *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const __vector bool char *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const __vector unsigned short *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const __vector signed short *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const __vector bool short *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const __vector pixel *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const __vector unsigned int *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const __vector signed int *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const __vector bool int *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const __vector float *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const unsigned char *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const signed char *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const unsigned short *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const short *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const unsigned int *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const int *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const unsigned long *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const long *, int, const int) __attribute__ ((always_inline));inline void vec_dstt (const float *, int, const int) __attribute__ ((always_inline));inline __vector float vec_sld (__vector float, __vector float, const int) __attribute__ ((always_inline));inline __vector signed int vec_sld (__vector signed int, __vector signed int, const int) __attribute__ ((always_inline));inline __vector unsigned int vec_sld (__vector unsigned int, __vector unsigned int, const int) __attribute__ ((always_inline));inline __vector bool int vec_sld (__vector bool int, __vector bool int, const int) __attribute__ ((always_inline));inline __vector signed short vec_sld (__vector signed short, __vector signed short, const int) __attribute__ ((always_inline));inline __vector unsigned short vec_sld (__vector unsigned short, __vector unsigned short, const int) __attribute__ ((always_inline));inline __vector bool short vec_sld (__vector bool short, __vector bool short, const int) __attribute__ ((always_inline));inline __vector pixel vec_sld (__vector pixel, __vector pixel, const int) __attribute__ ((always_inline));inline __vector signed char vec_sld (__vector signed char, __vector signed char, const int) __attribute__ ((always_inline));inline __vector unsigned char vec_sld (__vector unsigned char, __vector unsigned char, const int) __attribute__ ((always_inline));inline __vector bool char vec_sld (__vector bool char, __vector bool char, const int) __attribute__ ((always_inline));inline __vector signed char vec_splat (__vector signed char, const int) __attribute__ ((always_inline));inline __vector unsigned char vec_splat (__vector unsigned char, const int) __attribute__ ((always_inline));inline __vector bool char vec_splat (__vector bool char, const int) __attribute__ ((always_inline));inline __vector signed short vec_splat (__vector signed short, const int) __attribute__ ((always_inline));inline __vector unsigned short vec_splat (__vector unsigned short, const int) __attribute__ ((always_inline));inline __vector bool short vec_splat (__vector bool short, const int) __attribute__ ((always_inline));inline __vector pixel vec_splat (__vector pixel, const int) __attribute__ ((always_inline));inline __vector float vec_splat (__vector float, const int) __attribute__ ((always_inline));inline __vector signed int vec_splat (__vector signed int, const int) __attribute__ ((always_inline));inline __vector unsigned int vec_splat (__vector unsigned int, const int) __attribute__ ((always_inline));inline __vector bool int vec_splat (__vector bool int, const int) __attribute__ ((always_inline));inline __vector signed char vec_splat_s8 (const int) __attribute__ ((always_inline));inline __vector signed short vec_splat_s16 (const int) __attribute__ ((always_inline));inline __vector signed int vec_splat_s32 (const int) __attribute__ ((always_inline));inline __vector unsigned char vec_splat_u8 (const int) __attribute__ ((always_inline));inline __vector unsigned short vec_splat_u16 (const int) __attribute__ ((always_inline));inline __vector unsigned int vec_splat_u32 (const int) __attribute__ ((always_inline));inline __vector float vec_vspltw (__vector float a1, const int a2) __attribute__ ((always_inline));inline __vector bool int vec_vspltw (__vector bool int a1, const int a2) __attribute__ ((always_inline));inline __vector signed int vec_vspltw (__vector signed int a1, const int a2) __attribute__ ((always_inline));inline __vector unsigned int vec_vspltw (__vector unsigned int a1, const int a2) __attribute__ ((always_inline));inline __vector bool short vec_vsplth (__vector bool short a1, const int a2) __attribute__ ((always_inline));inline __vector signed short vec_vsplth (__vector signed short a1, const int a2) __attribute__ ((always_inline));inline __vector unsigned short vec_vsplth (__vector unsigned short a1, const int a2) __attribute__ ((always_inline));inline __vector pixel vec_vsplth (__vector pixel a1, const int a2) __attribute__ ((always_inline));inline __vector bool char vec_vspltb (__vector bool char a1, const int a2) __attribute__ ((always_inline));inline __vector signed char vec_vspltb (__vector signed char a1, const int a2) __attribute__ ((always_inline));inline __vector unsigned char vec_vspltb (__vector unsigned char a1, const int a2) __attribute__ ((always_inline));/* vec_step */template<typename _Tp>struct __vec_step_help{  // All proper __vector types will specialize _S_elem.};template<>struct __vec_step_help<__vector signed short>{  static const int _S_elem = 8;};template<>struct __vec_step_help<const __vector signed short>{  static const int _S_elem = 8;};template<>struct __vec_step_help<__vector unsigned short>{  static const int _S_elem = 8;};template<>struct __vec_step_help<const __vector unsigned short>{  static const int _S_elem = 8;};template<>struct __vec_step_help<__vector bool short>{  static const int _S_elem = 8;};template<>struct __vec_step_help<const __vector bool short>{  static const int _S_elem = 8;};template<>struct __vec_step_help<__vector pixel>{  static const int _S_elem = 8;};template<>struct __vec_step_help<const __vector pixel>{  static const int _S_elem = 8;};template<>struct __vec_step_help<__vector signed int>{  static const int _S_elem = 4;};template<>struct __vec_step_help<const __vector signed int>{  static const int _S_elem = 4;};template<>struct __vec_step_help<__vector unsigned int>{  static const int _S_elem = 4;};template<>struct __vec_step_help<const __vector unsigned int>{  static const int _S_elem = 4;};template<>struct __vec_step_help<__vector bool int>{  static const int _S_elem = 4;};template<>struct __vec_step_help<const __vector bool int>{  static const int _S_elem = 4;};template<>struct __vec_step_help<__vector unsigned char>{  static const int _S_elem = 16;};template<>struct __vec_step_help<const __vector unsigned char>{  static const int _S_elem = 16;};template<>struct __vec_step_help<__vector signed char>{  static const int _S_elem = 16;};template<>struct __vec_step_help<const __vector signed char>{  static const int _S_elem = 16;};template<>struct __vec_step_help<__vector bool char>{  static const int _S_elem = 16;};template<>struct __vec_step_help<const __vector bool char>{  static const int _S_elem = 16;};template<>struct __vec_step_help<__vector float>{  static const int _S_elem = 4;};template<>struct __vec_step_help<const __vector float>{  static const int _S_elem = 4;};#define vec_step(t)  __vec_step_help<__typeof__(t)>::_S_elem/* vec_abs */inline __vector signed charvec_abs (__vector signed char a1){  return __builtin_altivec_abs_v16qi (a1);}inline __vector signed shortvec_abs (__vector signed short a1){  return __builtin_altivec_abs_v8hi (a1);}inline __vector signed intvec_abs (__vector signed int a1){  return __builtin_altivec_abs_v4si (a1);}inline __vector floatvec_abs (__vector float a1){  return __builtin_altivec_abs_v4sf (a1);}/* vec_abss */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -