| /* Copyright (C) 2011-2021 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 3, 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. |
| |
| Under Section 7 of GPL version 3, you are granted additional |
| permissions described in the GCC Runtime Library Exception, version |
| 3.1, as published by the Free Software Foundation. |
| |
| You should have received a copy of the GNU General Public License and |
| a copy of the GCC Runtime Library Exception along with this program; |
| see the files COPYING3 and COPYING.RUNTIME respectively. If not, see |
| <http://www.gnu.org/licenses/>. */ |
| |
| #ifndef _VISINTRIN_H_INCLUDED |
| #define _VISINTRIN_H_INCLUDED |
| |
| #ifdef __VIS__ |
| |
| typedef int __v2si __attribute__ ((__vector_size__ (8))); |
| typedef int __v1si __attribute__ ((__vector_size__ (4))); |
| typedef short __v4hi __attribute__ ((__vector_size__ (8))); |
| typedef short __v2hi __attribute__ ((__vector_size__ (4))); |
| typedef unsigned char __v8qi __attribute__ ((__vector_size__ (8))); |
| typedef unsigned char __v4qi __attribute__ ((__vector_size__ (4))); |
| typedef int __i64 __attribute__ ((__mode__ (DI))); |
| |
| #if __VIS__ >= 0x200 |
| |
| extern __inline void |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_write_gsr (__i64 __A) |
| { |
| __builtin_vis_write_gsr (__A); |
| } |
| |
| extern __inline __i64 |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_read_gsr (void) |
| { |
| return __builtin_vis_read_gsr (); |
| } |
| |
| #endif /* __VIS__ >= 0x200 */ |
| |
| extern __inline void * |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_alignaddr (void *__A, long __B) |
| { |
| return __builtin_vis_alignaddr (__A, __B); |
| } |
| |
| extern __inline void * |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_alignaddrl (void *__A, long __B) |
| { |
| return __builtin_vis_alignaddrl (__A, __B); |
| } |
| |
| extern __inline __i64 |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_faligndatadi (__i64 __A, __i64 __B) |
| { |
| return __builtin_vis_faligndatadi (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_faligndatav2si (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_faligndatav2si (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_faligndatav4hi (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_faligndatav4hi (__A, __B); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_faligndatav8qi (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_faligndatav8qi (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fexpand (__v4qi __A) |
| { |
| return __builtin_vis_fexpand (__A); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fmul8x16 (__v4qi __A, __v4hi __B) |
| { |
| return __builtin_vis_fmul8x16 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fmul8x16au (__v4qi __A, __v2hi __B) |
| { |
| return __builtin_vis_fmul8x16au (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fmul8x16al (__v4qi __A, __v2hi __B) |
| { |
| return __builtin_vis_fmul8x16al (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fmul8sux16 (__v8qi __A, __v4hi __B) |
| { |
| return __builtin_vis_fmul8sux16 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fmul8ulx16 (__v8qi __A, __v4hi __B) |
| { |
| return __builtin_vis_fmul8ulx16 (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fmuld8sux16 (__v4qi __A, __v2hi __B) |
| { |
| return __builtin_vis_fmuld8sux16 (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fmuld8ulx16 (__v4qi __A, __v2hi __B) |
| { |
| return __builtin_vis_fmuld8ulx16 (__A, __B); |
| } |
| |
| extern __inline __v4qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpack16 (__v4hi __A) |
| { |
| return __builtin_vis_fpack16 (__A); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpack32 (__v2si __A, __v8qi __B) |
| { |
| return __builtin_vis_fpack32 (__A, __B); |
| } |
| |
| extern __inline __v2hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpackfix (__v2si __A) |
| { |
| return __builtin_vis_fpackfix (__A); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpmerge (__v4qi __A, __v4qi __B) |
| { |
| return __builtin_vis_fpmerge (__A, __B); |
| } |
| |
| extern __inline __i64 |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_pdist (__v8qi __A, __v8qi __B, __i64 __C) |
| { |
| return __builtin_vis_pdist (__A, __B, __C); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge8 (void *__A, void *__B) |
| { |
| return __builtin_vis_edge8 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge8l (void *__A, void *__B) |
| { |
| return __builtin_vis_edge8l (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge16 (void *__A, void *__B) |
| { |
| return __builtin_vis_edge16 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge16l (void *__A, void *__B) |
| { |
| return __builtin_vis_edge16l (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge32 (void *__A, void *__B) |
| { |
| return __builtin_vis_edge32 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge32l (void *__A, void *__B) |
| { |
| return __builtin_vis_edge32l (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fcmple16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fcmple16 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fcmple32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fcmple32 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fcmpne16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fcmpne16 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fcmpne32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fcmpne32 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fcmpgt16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fcmpgt16 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fcmpgt32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fcmpgt32 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fcmpeq16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fcmpeq16 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fcmpeq32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fcmpeq32 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpadd16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpadd16 (__A, __B); |
| } |
| |
| extern __inline __v2hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpadd16s (__v2hi __A, __v2hi __B) |
| { |
| return __builtin_vis_fpadd16s (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpadd32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fpadd32 (__A, __B); |
| } |
| |
| extern __inline __v1si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpadd32s (__v1si __A, __v1si __B) |
| { |
| return __builtin_vis_fpadd32s (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsub16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpsub16 (__A, __B); |
| } |
| |
| extern __inline __v2hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsub16s (__v2hi __A, __v2hi __B) |
| { |
| return __builtin_vis_fpsub16s (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsub32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fpsub32 (__A, __B); |
| } |
| |
| extern __inline __v1si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsub32s (__v1si __A, __v1si __B) |
| { |
| return __builtin_vis_fpsub32s (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_array8 (long __A, long __B) |
| { |
| return __builtin_vis_array8 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_array16 (long __A, long __B) |
| { |
| return __builtin_vis_array16 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_array32 (long __A, long __B) |
| { |
| return __builtin_vis_array32 (__A, __B); |
| } |
| |
| #if __VIS__ >= 0x200 |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_bmask (long __A, long __B) |
| { |
| return __builtin_vis_bmask (__A, __B); |
| } |
| |
| extern __inline __i64 |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_bshuffledi (__i64 __A, __i64 __B) |
| { |
| return __builtin_vis_bshuffledi (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_bshufflev2si (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_bshufflev2si (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_bshufflev4hi (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_bshufflev4hi (__A, __B); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_bshufflev8qi (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_bshufflev8qi (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge8n (void *__A, void *__B) |
| { |
| return __builtin_vis_edge8n (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge8ln (void *__A, void *__B) |
| { |
| return __builtin_vis_edge8ln (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge16n (void *__A, void *__B) |
| { |
| return __builtin_vis_edge16n (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge16ln (void *__A, void *__B) |
| { |
| return __builtin_vis_edge16ln (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge32n (void *__A, void *__B) |
| { |
| return __builtin_vis_edge32n (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_edge32ln (void *__A, void *__B) |
| { |
| return __builtin_vis_edge32ln (__A, __B); |
| } |
| |
| #endif /* __VIS__ >= 0x200 */ |
| |
| #if __VIS__ >= 0x300 |
| |
| extern __inline void |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_cmask8 (long __A) |
| { |
| return __builtin_vis_cmask8 (__A); |
| } |
| |
| extern __inline void |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_cmask16 (long __A) |
| { |
| return __builtin_vis_cmask16 (__A); |
| } |
| |
| extern __inline void |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_cmask32 (long __A) |
| { |
| return __builtin_vis_cmask32 (__A); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fchksm16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fchksm16 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fsll16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fsll16 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fslas16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fslas16 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fsrl16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fsrl16 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fsra16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fsra16 (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fsll32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fsll32 (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fslas32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fslas32 (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fsrl32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fsrl32 (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fsra32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fsra32 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_pdistn (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_pdistn (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fmean16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fmean16 (__A, __B); |
| } |
| |
| extern __inline __i64 |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpadd64 (__i64 __A, __i64 __B) |
| { |
| return __builtin_vis_fpadd64 (__A, __B); |
| } |
| |
| extern __inline __i64 |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsub64 (__i64 __A, __i64 __B) |
| { |
| return __builtin_vis_fpsub64 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpadds16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpadds16 (__A, __B); |
| } |
| |
| extern __inline __v2hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpadds16s (__v2hi __A, __v2hi __B) |
| { |
| return __builtin_vis_fpadds16s (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsubs16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpsubs16 (__A, __B); |
| } |
| |
| extern __inline __v2hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsubs16s (__v2hi __A, __v2hi __B) |
| { |
| return __builtin_vis_fpsubs16s (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpadds32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fpadds32 (__A, __B); |
| } |
| |
| extern __inline __v1si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpadds32s (__v1si __A, __v1si __B) |
| { |
| return __builtin_vis_fpadds32s (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsubs32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fpsubs32 (__A, __B); |
| } |
| |
| extern __inline __v1si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsubs32s (__v1si __A, __v1si __B) |
| { |
| return __builtin_vis_fpsubs32s (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fucmple8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fucmple8 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fucmpne8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fucmpne8 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fucmpgt8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fucmpgt8 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fucmpeq8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fucmpeq8 (__A, __B); |
| } |
| |
| extern __inline float |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fhadds (float __A, float __B) |
| { |
| return __builtin_vis_fhadds (__A, __B); |
| } |
| |
| extern __inline double |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fhaddd (double __A, double __B) |
| { |
| return __builtin_vis_fhaddd (__A, __B); |
| } |
| |
| extern __inline float |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fhsubs (float __A, float __B) |
| { |
| return __builtin_vis_fhsubs (__A, __B); |
| } |
| |
| extern __inline double |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fhsubd (double __A, double __B) |
| { |
| return __builtin_vis_fhsubd (__A, __B); |
| } |
| |
| extern __inline float |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fnhadds (float __A, float __B) |
| { |
| return __builtin_vis_fnhadds (__A, __B); |
| } |
| |
| extern __inline double |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fnhaddd (double __A, double __B) |
| { |
| return __builtin_vis_fnhaddd (__A, __B); |
| } |
| |
| extern __inline __i64 |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_umulxhi (__i64 __A, __i64 __B) |
| { |
| return __builtin_vis_umulxhi (__A, __B); |
| } |
| |
| extern __inline __i64 |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_xmulx (__i64 __A, __i64 __B) |
| { |
| return __builtin_vis_xmulx (__A, __B); |
| } |
| |
| extern __inline __i64 |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_xmulxhi (__i64 __A, __i64 __B) |
| { |
| return __builtin_vis_xmulxhi (__A, __B); |
| } |
| |
| #endif /* __VIS__ >= 0x300 */ |
| |
| #if __VIS__ >= 0x400 |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpadd8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpadd8 (__A, __B); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpadds8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpadds8 (__A, __B); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpaddus8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpaddus8 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpaddus16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpaddus16 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpcmple8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpcmple8 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpcmpgt8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpcmpgt8 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpcmpule16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpcmpule16 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpcmpugt16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpcmpugt16 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpcmpule32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fpcmpule32 (__A, __B); |
| } |
| |
| extern __inline long |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpcmpugt32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fpcmpugt32 (__A, __B); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpmax8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpmax8 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpmax16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpmax16 (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpmax32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fpmax32 (__A, __B); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpmaxu8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpmaxu8 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpmaxu16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpmaxu16 (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpmaxu32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fpmaxu32 (__A, __B); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpmin8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpmin8 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpmin16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpmin16 (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpmin32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fpmin32 (__A, __B); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpminu8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpminu8 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpminu16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpminu16 (__A, __B); |
| } |
| |
| extern __inline __v2si |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpminu32 (__v2si __A, __v2si __B) |
| { |
| return __builtin_vis_fpminu32 (__A, __B); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsub8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpsub8 (__A, __B); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsubs8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpsubs8 (__A, __B); |
| } |
| |
| extern __inline __v8qi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsubus8 (__v8qi __A, __v8qi __B) |
| { |
| return __builtin_vis_fpsubus8 (__A, __B); |
| } |
| |
| extern __inline __v4hi |
| __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) |
| __vis_fpsubus16 (__v4hi __A, __v4hi __B) |
| { |
| return __builtin_vis_fpsubus16 (__A, __B); |
| } |
| |
| #endif /* __VIS__ >= 0x400 */ |
| |
| #endif /* __VIS__ */ |
| |
| #endif /* _VISINTRIN_H_INCLUDED */ |