Changeset 624 for proto/u8u16


Ignore:
Timestamp:
Sep 14, 2010, 7:15:42 AM (9 years ago)
Author:
cameron
Message:

Use s2p/p2s library functions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/u8u16/template.c

    r616 r624  
    5151
    5252typedef  uint16_t UChar;
    53 
    54 #define s2p_step(s0,s1,hi_mask,shift,p0,p1)  \
    55 { \
    56 BitBlock t0,t1; \
    57 t0= simd_pack_16_hh(s0,s1) ; \
    58 t1= simd_pack_16_ll(s0,s1) ; \
    59 p0= simd_if(hi_mask,t0,simd_srli_16(t1,shift) ) ; \
    60 p1= simd_if(hi_mask,simd_slli_16(t0,shift) ,t1) ; \
    61 } \
    62 
    63 #define s2p_bytepack(s0,s1,s2,s3,s4,s5,s6,s7,p0,p1,p2,p3,p4,p5,p6,p7)  \
    64 {BitBlock bit00224466_0,bit00224466_1,bit00224466_2,bit00224466_3; \
    65 BitBlock bit11335577_0,bit11335577_1,bit11335577_2,bit11335577_3; \
    66 BitBlock bit00004444_0,bit22226666_0,bit00004444_1,bit22226666_1; \
    67 BitBlock bit11115555_0,bit33337777_0,bit11115555_1,bit33337777_1; \
    68 s2p_step(s0,s1,simd_himask_2,1,bit00224466_0,bit11335577_0)  \
    69 s2p_step(s2,s3,simd_himask_2,1,bit00224466_1,bit11335577_1)  \
    70 s2p_step(s4,s5,simd_himask_2,1,bit00224466_2,bit11335577_2)  \
    71 s2p_step(s6,s7,simd_himask_2,1,bit00224466_3,bit11335577_3)  \
    72 s2p_step(bit00224466_0,bit00224466_1,simd_himask_4,2,bit00004444_0,bit22226666_0)  \
    73 s2p_step(bit00224466_2,bit00224466_3,simd_himask_4,2,bit00004444_1,bit22226666_1)  \
    74 s2p_step(bit11335577_0,bit11335577_1,simd_himask_4,2,bit11115555_0,bit33337777_0)  \
    75 s2p_step(bit11335577_2,bit11335577_3,simd_himask_4,2,bit11115555_1,bit33337777_1)  \
    76 s2p_step(bit00004444_0,bit00004444_1,simd_himask_8,4,p0,p4)  \
    77 s2p_step(bit11115555_0,bit11115555_1,simd_himask_8,4,p1,p5)  \
    78 s2p_step(bit22226666_0,bit22226666_1,simd_himask_8,4,p2,p6)  \
    79 s2p_step(bit33337777_0,bit33337777_1,simd_himask_8,4,p3,p7)  \
    80 } \
    81 
    82 #define p2s_step(p0,p1,hi_mask,shift,s0,s1)  \
    83 { \
    84 BitBlock t0,t1; \
    85 t0= simd_if(hi_mask,p0,simd_srli_16(p1,shift) ) ; \
    86 t1= simd_if(hi_mask,simd_slli_16(p0,shift) ,p1) ; \
    87 s0= simd_mergeh_8(t0,t1) ; \
    88 s1= simd_mergel_8(t0,t1) ; \
    89 } \
    90 
    91 #define p2s_bytemerge(p0,p1,p2,p3,p4,p5,p6,p7,s0,s1,s2,s3,s4,s5,s6,s7)  \
    92 { \
    93 BitBlock bit00004444_0,bit22226666_0,bit00004444_1,bit22226666_1; \
    94 BitBlock bit11115555_0,bit33337777_0,bit11115555_1,bit33337777_1; \
    95 BitBlock bit00224466_0,bit00224466_1,bit00224466_2,bit00224466_3; \
    96 BitBlock bit11335577_0,bit11335577_1,bit11335577_2,bit11335577_3; \
    97 p2s_step(p0,p4,simd_himask_8,4,bit00004444_0,bit00004444_1)  \
    98 p2s_step(p1,p5,simd_himask_8,4,bit11115555_0,bit11115555_1)  \
    99 p2s_step(p2,p6,simd_himask_8,4,bit22226666_0,bit22226666_1)  \
    100 p2s_step(p3,p7,simd_himask_8,4,bit33337777_0,bit33337777_1)  \
    101 p2s_step(bit00004444_0,bit22226666_0,simd_himask_4,2,bit00224466_0,bit00224466_1)  \
    102 p2s_step(bit11115555_0,bit33337777_0,simd_himask_4,2,bit11335577_0,bit11335577_1)  \
    103 p2s_step(bit00004444_1,bit22226666_1,simd_himask_4,2,bit00224466_2,bit00224466_3)  \
    104 p2s_step(bit11115555_1,bit33337777_1,simd_himask_4,2,bit11335577_2,bit11335577_3)  \
    105 p2s_step(bit00224466_0,bit11335577_0,simd_himask_2,1,s0,s1)  \
    106 p2s_step(bit00224466_1,bit11335577_1,simd_himask_2,1,s2,s3)  \
    107 p2s_step(bit00224466_2,bit11335577_2,simd_himask_2,1,s4,s5)  \
    108 p2s_step(bit00224466_3,bit11335577_3,simd_himask_2,1,s6,s7)  \
    109 } \
    110 
    11153
    11254
     
    212154      U8[7] = sisd_load_unaligned(&U8pack[7]);
    213155     
    214       s2p_bytepack(U8[7], U8[6], U8[5], U8[4], U8[3], U8[2], U8[1], U8[0],
     156      s2p(U8[0], U8[1], U8[2], U8[3], U8[4], U8[5], U8[6], U8[7],
    215157      array_bit__0_,array_bit__1_,array_bit__2_,array_bit__3_,array_bit__4_,array_bit__5_,array_bit__6_,array_bit__7_);
    216158
     
    275217      unsigned char u16_units_per_reg[16];
    276218     
    277       p2s_bytemerge(array_u16lo__0_,array_u16lo__1_,array_u16lo__2_,array_u16lo__3_,array_u16lo__4_,array_u16lo__5_,array_u16lo__6_,array_u16lo__7_,
    278                         U16l[7], U16l[6],U16l[5] ,U16l[4] ,U16l[3] ,U16l[2] ,U16l[1] ,U16l[0]);
    279       p2s_bytemerge(array_u16hi__0_,array_u16hi__1_,array_u16hi__2_,array_u16hi__3_,array_u16hi__4_,array_u16hi__5_,array_u16hi__6_,array_u16hi__7_,
    280                         U16h[7], U16h[6],U16h[5] ,U16h[4] ,U16h[3] ,U16h[2] ,U16h[1] ,U16h[0]);
     219      p2s(array_u16lo__0_,array_u16lo__1_,array_u16lo__2_,array_u16lo__3_,array_u16lo__4_,array_u16lo__5_,array_u16lo__6_,array_u16lo__7_,
     220                        U16l[0], U16l[1],U16l[2] ,U16l[3] ,U16l[4] ,U16l[5] ,U16l[6] ,U16l[7]);
     221      p2s(array_u16hi__0_,array_u16hi__1_,array_u16hi__2_,array_u16hi__3_,array_u16hi__4_,array_u16hi__5_,array_u16hi__6_,array_u16hi__7_,
     222                        U16h[0], U16h[1],U16h[2] ,U16h[3] ,U16h[4] ,U16h[5] ,U16h[6] ,U16h[7]);
    281223      for (int i=0; i<8; i++) {
    282224        U16s[2*i] = simd_mergel_8(U16l[i], U16h[i]);
Note: See TracChangeset for help on using the changeset viewer.