This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ppc e500: misc <spe.h> patches



I know these aren't part of your patch but it looks like these two macros
and possibly others need parentheses around the argument. Maybe you could
address these in a follow up patch given that you're hacking this file.
thanks for spotting this.

committed.

2003-02-12 Aldy Hernandez <aldyh@redhat.com>

* config/rs6000/spe.h: Add casts to the arguments of the following
macros: evfsabs, evfsnabs, evfsneg, evfsadd, evfssub, evfsmul,
evfsdiv, evfscfui, evfscfsi evfscfuf evfscfsf, evfsctui, evfsctsi,
evfsctuf, evfsctsf, evfsctuiz, evfsctsiz, __ev_get_upper*,
__ev_get_lower*, __ev_get_u32, __ev_get_s32, __ev_get_fs,
__ev_get_u16, __ev_get_s16.

Index: config/rs6000/spe.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/spe.h,v
retrieving revision 1.7
diff -c -p -r1.7 spe.h
*** config/rs6000/spe.h 12 Feb 2003 20:25:38 -0000 1.7
--- config/rs6000/spe.h 12 Feb 2003 23:46:52 -0000
*************** typedef int __vector __ev64_opaque__;
*** 292,314 ****
/* These all return V2SF, but we need to cast them to V2SI
because the SPE expect all functions to be __ev64_opaque__. */

! #define __ev_fsabs(a) ((__v2si) __builtin_spe_evfsabs ((__v2sf) a))
! #define __ev_fsnabs(a) ((__v2si) __builtin_spe_evfsnabs ((__v2sf) a))
! #define __ev_fsneg(a) ((__v2si) __builtin_spe_evfsneg ((__v2sf) a))
! #define __ev_fsadd(a, b) ((__v2si) __builtin_spe_evfsadd ((__v2sf) a, (__v2sf) b))
! #define __ev_fssub(a, b) ((__v2si) __builtin_spe_evfssub ((__v2sf) a, (__v2sf) b))
! #define __ev_fsmul(a, b) ((__v2si) __builtin_spe_evfsmul ((__v2sf) a, (__v2sf) b))
! #define __ev_fsdiv(a, b) ((__v2si) __builtin_spe_evfsdiv ((__v2sf) a, (__v2sf) b))
! #define __ev_fscfui(a) ((__v2si) __builtin_spe_evfscfui ((__v2si) a))
! #define __ev_fscfsi(a) ((__v2si) __builtin_spe_evfscfsi ((__v2sf) a))
! #define __ev_fscfuf(a) ((__v2si) __builtin_spe_evfscfuf ((__v2sf) a))
! #define __ev_fscfsf(a) ((__v2si) __builtin_spe_evfscfsf ((__v2sf) a))
! #define __ev_fsctui(a) ((__v2si) __builtin_spe_evfsctui ((__v2sf) a))
! #define __ev_fsctsi(a) ((__v2si) __builtin_spe_evfsctsi ((__v2sf) a))
! #define __ev_fsctuf(a) ((__v2si) __builtin_spe_evfsctuf ((__v2sf) a))
! #define __ev_fsctsf(a) ((__v2si) __builtin_spe_evfsctsf ((__v2sf) a))
! #define __ev_fsctuiz(a) ((__v2si) __builtin_spe_evfsctuiz ((__v2sf) a))
! #define __ev_fsctsiz(a) ((__v2si) __builtin_spe_evfsctsiz ((__v2sf) a))

/* NOT SUPPORTED IN FIRST e500, support via two instructions: */

--- 292,314 ----
/* These all return V2SF, but we need to cast them to V2SI
because the SPE expect all functions to be __ev64_opaque__. */

! #define __ev_fsabs(a) ((__v2si) __builtin_spe_evfsabs ((__v2sf) (a)))
! #define __ev_fsnabs(a) ((__v2si) __builtin_spe_evfsnabs ((__v2sf) (a)))
! #define __ev_fsneg(a) ((__v2si) __builtin_spe_evfsneg ((__v2sf) (a)))
! #define __ev_fsadd(a, b) ((__v2si) __builtin_spe_evfsadd ((__v2sf) (a), (__v2sf) (b)))
! #define __ev_fssub(a, b) ((__v2si) __builtin_spe_evfssub ((__v2sf) (a), (__v2sf) (b)))
! #define __ev_fsmul(a, b) ((__v2si) __builtin_spe_evfsmul ((__v2sf) (a), (__v2sf) b))
! #define __ev_fsdiv(a, b) ((__v2si) __builtin_spe_evfsdiv ((__v2sf) (a), (__v2sf) b))
! #define __ev_fscfui(a) ((__v2si) __builtin_spe_evfscfui ((__v2si) (a)))
! #define __ev_fscfsi(a) ((__v2si) __builtin_spe_evfscfsi ((__v2sf) (a)))
! #define __ev_fscfuf(a) ((__v2si) __builtin_spe_evfscfuf ((__v2sf) (a)))
! #define __ev_fscfsf(a) ((__v2si) __builtin_spe_evfscfsf ((__v2sf) (a)))
! #define __ev_fsctui(a) ((__v2si) __builtin_spe_evfsctui ((__v2sf) (a)))
! #define __ev_fsctsi(a) ((__v2si) __builtin_spe_evfsctsi ((__v2sf) (a)))
! #define __ev_fsctuf(a) ((__v2si) __builtin_spe_evfsctuf ((__v2sf) (a)))
! #define __ev_fsctsf(a) ((__v2si) __builtin_spe_evfsctsf ((__v2sf) (a)))
! #define __ev_fsctuiz(a) ((__v2si) __builtin_spe_evfsctuiz ((__v2sf) (a)))
! #define __ev_fsctsiz(a) ((__v2si) __builtin_spe_evfsctsiz ((__v2sf) (a)))

/* NOT SUPPORTED IN FIRST e500, support via two instructions: */

*************** __ev_create_u64 (uint64_t a)
*** 656,667 ****

/* __ev_get_* functions. */

! #define __ev_get_upper_u32(a) __ev_get_u32_internal ((__ev64_opaque__) a, 0)
! #define __ev_get_lower_u32(a) __ev_get_u32_internal ((__ev64_opaque__) a, 1)
! #define __ev_get_upper_s32(a) __ev_get_s32_internal ((__ev64_opaque__) a, 0)
! #define __ev_get_lower_s32(a) __ev_get_s32_internal ((__ev64_opaque__) a, 1)
! #define __ev_get_upper_fs(a) __ev_get_fs_internal ((__ev64_opaque__) a, 0)
! #define __ev_get_lower_fs(a) __ev_get_fs_internal ((__ev64_opaque__) a, 1)
#define __ev_get_upper_ufix32_u32(a) __ev_get_upper_u32(a)
#define __ev_get_lower_ufix32_u32(a) __ev_get_lower_u32(a)
#define __ev_get_upper_sfix32_s32(a) __ev_get_upper_s32(a)
--- 656,667 ----

/* __ev_get_* functions. */

! #define __ev_get_upper_u32(a) __ev_get_u32_internal ((__ev64_opaque__) (a), 0)
! #define __ev_get_lower_u32(a) __ev_get_u32_internal ((__ev64_opaque__) (a), 1)
! #define __ev_get_upper_s32(a) __ev_get_s32_internal ((__ev64_opaque__) (a), 0)
! #define __ev_get_lower_s32(a) __ev_get_s32_internal ((__ev64_opaque__) (a), 1)
! #define __ev_get_upper_fs(a) __ev_get_fs_internal ((__ev64_opaque__) (a), 0)
! #define __ev_get_lower_fs(a) __ev_get_fs_internal ((__ev64_opaque__) (a), 1)
#define __ev_get_upper_ufix32_u32(a) __ev_get_upper_u32(a)
#define __ev_get_lower_ufix32_u32(a) __ev_get_lower_u32(a)
#define __ev_get_upper_sfix32_s32(a) __ev_get_upper_s32(a)
*************** __ev_create_u64 (uint64_t a)
*** 671,681 ****
#define __ev_get_upper_ufix32_fs(a) __ev_get_ufix32_fs (a, 0)
#define __ev_get_lower_ufix32_fs(a) __ev_get_ufix32_fs (a, 1)

! #define __ev_get_u32(a, b) __ev_get_u32_internal ((__ev64_opaque__) a, b)
! #define __ev_get_s32(a, b) __ev_get_s32_internal ((__ev64_opaque__) a, b)
! #define __ev_get_fs(a, b) __ev_get_fs_internal ((__ev64_opaque__) a, b)
! #define __ev_get_u16(a, b) __ev_get_u16_internal ((__ev64_opaque__) a, b)
! #define __ev_get_s16(a, b) __ev_get_s16_internal ((__ev64_opaque__) a, b)

#define __ev_get_ufix32_u32(a, b) __ev_get_u32 (a, b)
#define __ev_get_sfix32_s32(a, b) __ev_get_s32 (a, b)
--- 671,681 ----
#define __ev_get_upper_ufix32_fs(a) __ev_get_ufix32_fs (a, 0)
#define __ev_get_lower_ufix32_fs(a) __ev_get_ufix32_fs (a, 1)

! #define __ev_get_u32(a, b) __ev_get_u32_internal ((__ev64_opaque__) (a), b)
! #define __ev_get_s32(a, b) __ev_get_s32_internal ((__ev64_opaque__) (a), b)
! #define __ev_get_fs(a, b) __ev_get_fs_internal ((__ev64_opaque__) (a), b)
! #define __ev_get_u16(a, b) __ev_get_u16_internal ((__ev64_opaque__) (a), b)
! #define __ev_get_s16(a, b) __ev_get_s16_internal ((__ev64_opaque__) (a), b)

#define __ev_get_ufix32_u32(a, b) __ev_get_u32 (a, b)
#define __ev_get_sfix32_s32(a, b) __ev_get_s32 (a, b)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]