src/video/arm/pixman-arm-neon-asm.S
branchSDL-1.2
changeset 13221 3705e81df6ff
parent 13220 0ae1ddca5e85
child 13222 c8562ecca3c9
equal deleted inserted replaced
13220:0ae1ddca5e85 13221:3705e81df6ff
    98     default_init, \
    98     default_init, \
    99     default_cleanup, \
    99     default_cleanup, \
   100     RGBtoRGBPixelAlpha_process_pixblock_head, \
   100     RGBtoRGBPixelAlpha_process_pixblock_head, \
   101     RGBtoRGBPixelAlpha_process_pixblock_tail, \
   101     RGBtoRGBPixelAlpha_process_pixblock_tail, \
   102     RGBtoRGBPixelAlpha_process_pixblock_tail_head
   102     RGBtoRGBPixelAlpha_process_pixblock_tail_head
       
   103 
       
   104  /******************************************************************************/
       
   105 
       
   106 .macro ARGBto565PixelAlpha_process_pixblock_head
       
   107     vmvn        d6, d3
       
   108     vshr.u8     d1, #2
       
   109     vshr.u8     d3, #3
       
   110     vshr.u8     d0, #3
       
   111     vshrn.u16   d7, q2, #3
       
   112     vshrn.u16   d25, q2, #8
       
   113     vbic.i16    q2, #0xe0
       
   114     vshr.u8     d6, #3
       
   115     vshr.u8     d7, #2
       
   116     vshr.u8     d2, #3
       
   117     vmovn.u16   d24, q2
       
   118     vshr.u8     d25, #3
       
   119     vmull.u8    q13, d1, d3
       
   120     vmlal.u8    q13, d7, d6
       
   121     vmull.u8    q14, d0, d3
       
   122     vmlal.u8    q14, d24, d6
       
   123     vmull.u8    q15, d2, d3
       
   124     vmlal.u8    q15, d25, d6
       
   125 .endm
       
   126 
       
   127 .macro ARGBto565PixelAlpha_process_pixblock_tail
       
   128     vsra.u16    q13, #5
       
   129     vsra.u16    q14, #5
       
   130     vsra.u16    q15, #5
       
   131     vrshr.u16   q13, #5
       
   132     vrshr.u16   q14, #5
       
   133     vrshr.u16   q15, #5
       
   134     vsli.u16    q14, q13, #5
       
   135     vsli.u16    q14, q15, #11
       
   136 .endm
       
   137 
       
   138 .macro ARGBto565PixelAlpha_process_pixblock_tail_head
       
   139     vld4.8      {d0-d3}, [SRC]!
       
   140                                     PF add PF_X, PF_X, #8
       
   141         vsra.u16    q13, #5
       
   142                                     PF tst PF_CTL, #0xF
       
   143         vsra.u16    q14, #5
       
   144                                     PF addne PF_X, PF_X, #8
       
   145         vsra.u16    q15, #5
       
   146                                     PF subne PF_CTL, PF_CTL, #1
       
   147         vrshr.u16   q13, #5
       
   148                                     PF cmp PF_X, ORIG_W
       
   149         vrshr.u16   q14, #5
       
   150                                     PF pld, [PF_SRC, PF_X, lsl #src_bpp_shift]
       
   151         vrshr.u16   q15, #5
       
   152                                     PF pld, [PF_DST, PF_X, lsl #dst_bpp_shift]
       
   153     vld1.8      {d4-d5}, [DST_R]!
       
   154                                     PF subge PF_X, PF_X, ORIG_W
       
   155         vsli.u16    q14, q13, #5
       
   156                                     PF subges PF_CTL, PF_CTL, #0x10
       
   157         vsli.u16    q14, q15, #11
       
   158                                     PF ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
       
   159         vst1.8      {q14}, [DST_W :128]!
       
   160     vmvn        d6, d3
       
   161     vshr.u8     d1, #2
       
   162     vshr.u8     d3, #3
       
   163     vshr.u8     d0, #3
       
   164     vshrn.u16   d7, q2, #3
       
   165     vshrn.u16   d25, q2, #8
       
   166     vbic.i16    q2, #0xe0
       
   167                                     PF ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
       
   168     vshr.u8     d6, #3
       
   169     vshr.u8     d7, #2
       
   170     vshr.u8     d2, #3
       
   171     vmovn.u16   d24, q2
       
   172     vshr.u8     d25, #3
       
   173     vmull.u8    q13, d1, d3
       
   174     vmlal.u8    q13, d7, d6
       
   175     vmull.u8    q14, d0, d3
       
   176     vmlal.u8    q14, d24, d6
       
   177     vmull.u8    q15, d2, d3
       
   178     vmlal.u8    q15, d25, d6
       
   179 .endm
       
   180 
       
   181 generate_composite_function \
       
   182     BlitARGBto565PixelAlphaARMNEONAsm, 32, 0, 16, \
       
   183     FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
       
   184     8, /* number of pixels, processed in a single block */ \
       
   185     6, /* prefetch distance */ \
       
   186     default_init, \
       
   187     default_cleanup, \
       
   188     ARGBto565PixelAlpha_process_pixblock_head, \
       
   189     ARGBto565PixelAlpha_process_pixblock_tail, \
       
   190     ARGBto565PixelAlpha_process_pixblock_tail_head