ppc e500: misc <spe.h> patches

Aldy Hernandez aldyh@redhat.com
Wed Feb 12 23:49:00 GMT 2003


>>
> 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)



More information about the Gcc-patches mailing list