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

📄 xmmintrin.h

📁 mingw 3.4.5 完整的编译器 windows下的ming gcc 开发环境
💻 H
📖 第 1 页 / 共 3 页
字号:
/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.   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 from the specification included in the Intel C++ Compiler   User Guide and Reference, version 8.0.  */#ifndef _XMMINTRIN_H_INCLUDED#define _XMMINTRIN_H_INCLUDED#ifndef __SSE__# error "SSE instruction set not enabled"#else/* We need type definitions from the MMX header file.  */#include <mmintrin.h>/* Get _mm_malloc () and _mm_free ().  */#include <mm_malloc.h>/* The data type intended for user use.  */typedef float __m128 __attribute__ ((__mode__(__V4SF__)));/* Internal data types for implementing the intrinsics.  */typedef float __v4sf __attribute__ ((__mode__(__V4SF__)));/* Create a selector for use with the SHUFPS instruction.  */#define _MM_SHUFFLE(fp3,fp2,fp1,fp0) \ (((fp3) << 6) | ((fp2) << 4) | ((fp1) << 2) | (fp0))/* Constants for use with _mm_prefetch.  */enum _mm_hint{  _MM_HINT_T0 = 3,  _MM_HINT_T1 = 2,  _MM_HINT_T2 = 1,  _MM_HINT_NTA = 0};/* Bits in the MXCSR.  */#define _MM_EXCEPT_MASK       0x003f#define _MM_EXCEPT_INVALID    0x0001#define _MM_EXCEPT_DENORM     0x0002#define _MM_EXCEPT_DIV_ZERO   0x0004#define _MM_EXCEPT_OVERFLOW   0x0008#define _MM_EXCEPT_UNDERFLOW  0x0010#define _MM_EXCEPT_INEXACT    0x0020#define _MM_MASK_MASK         0x1f80#define _MM_MASK_INVALID      0x0080#define _MM_MASK_DENORM       0x0100#define _MM_MASK_DIV_ZERO     0x0200#define _MM_MASK_OVERFLOW     0x0400#define _MM_MASK_UNDERFLOW    0x0800#define _MM_MASK_INEXACT      0x1000#define _MM_ROUND_MASK        0x6000#define _MM_ROUND_NEAREST     0x0000#define _MM_ROUND_DOWN        0x2000#define _MM_ROUND_UP          0x4000#define _MM_ROUND_TOWARD_ZERO 0x6000#define _MM_FLUSH_ZERO_MASK   0x8000#define _MM_FLUSH_ZERO_ON     0x8000#define _MM_FLUSH_ZERO_OFF    0x0000/* Perform the respective operation on the lower SPFP (single-precision   floating-point) values of A and B; the upper three SPFP values are   passed through from A.  */static __inline __m128_mm_add_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_addss ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_sub_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_subss ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_mul_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_mulss ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_div_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_divss ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_sqrt_ss (__m128 __A){  return (__m128) __builtin_ia32_sqrtss ((__v4sf)__A);}static __inline __m128_mm_rcp_ss (__m128 __A){  return (__m128) __builtin_ia32_rcpss ((__v4sf)__A);}static __inline __m128_mm_rsqrt_ss (__m128 __A){  return (__m128) __builtin_ia32_rsqrtss ((__v4sf)__A);}static __inline __m128_mm_min_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_minss ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_max_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_maxss ((__v4sf)__A, (__v4sf)__B);}/* Perform the respective operation on the four SPFP values in A and B.  */static __inline __m128_mm_add_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_addps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_sub_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_subps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_mul_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_mulps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_div_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_divps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_sqrt_ps (__m128 __A){  return (__m128) __builtin_ia32_sqrtps ((__v4sf)__A);}static __inline __m128_mm_rcp_ps (__m128 __A){  return (__m128) __builtin_ia32_rcpps ((__v4sf)__A);}static __inline __m128_mm_rsqrt_ps (__m128 __A){  return (__m128) __builtin_ia32_rsqrtps ((__v4sf)__A);}static __inline __m128_mm_min_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_minps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_max_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_maxps ((__v4sf)__A, (__v4sf)__B);}/* Perform logical bit-wise operations on 128-bit values.  */static __inline __m128_mm_and_ps (__m128 __A, __m128 __B){  return __builtin_ia32_andps (__A, __B);}static __inline __m128_mm_andnot_ps (__m128 __A, __m128 __B){  return __builtin_ia32_andnps (__A, __B);}static __inline __m128_mm_or_ps (__m128 __A, __m128 __B){  return __builtin_ia32_orps (__A, __B);}static __inline __m128_mm_xor_ps (__m128 __A, __m128 __B){  return __builtin_ia32_xorps (__A, __B);}/* Perform a comparison on the lower SPFP values of A and B.  If the   comparison is true, place a mask of all ones in the result, otherwise a   mask of zeros.  The upper three SPFP values are passed through from A.  */static __inline __m128_mm_cmpeq_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpeqss ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmplt_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpltss ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmple_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpless ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpgt_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_movss ((__v4sf) __A,					(__v4sf)					__builtin_ia32_cmpltss ((__v4sf) __B,								(__v4sf)								__A));}static __inline __m128_mm_cmpge_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_movss ((__v4sf) __A,					(__v4sf)					__builtin_ia32_cmpless ((__v4sf) __B,								(__v4sf)								__A));}static __inline __m128_mm_cmpneq_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpneqss ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpnlt_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpnltss ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpnle_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpnless ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpngt_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_movss ((__v4sf) __A,					(__v4sf)					__builtin_ia32_cmpnltss ((__v4sf) __B,								 (__v4sf)								 __A));}static __inline __m128_mm_cmpnge_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_movss ((__v4sf) __A,					(__v4sf)					__builtin_ia32_cmpnless ((__v4sf) __B,								 (__v4sf)								 __A));}static __inline __m128_mm_cmpord_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpordss ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpunord_ss (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpunordss ((__v4sf)__A, (__v4sf)__B);}/* Perform a comparison on the four SPFP values of A and B.  For each   element, if the comparison is true, place a mask of all ones in the   result, otherwise a mask of zeros.  */static __inline __m128_mm_cmpeq_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpeqps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmplt_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpltps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmple_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpleps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpgt_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpgtps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpge_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpgeps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpneq_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpneqps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpnlt_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpnltps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpnle_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpnleps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpngt_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpngtps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpnge_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpngeps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpord_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpordps ((__v4sf)__A, (__v4sf)__B);}static __inline __m128_mm_cmpunord_ps (__m128 __A, __m128 __B){  return (__m128) __builtin_ia32_cmpunordps ((__v4sf)__A, (__v4sf)__B);}/* Compare the lower SPFP values of A and B and return 1 if true   and 0 if false.  */static __inline int_mm_comieq_ss (__m128 __A, __m128 __B){  return __builtin_ia32_comieq ((__v4sf)__A, (__v4sf)__B);}static __inline int_mm_comilt_ss (__m128 __A, __m128 __B){

⌨️ 快捷键说明

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