Find minimum and maximum value of an array using ARM NEON instructions -


I have the following code that I would like to optimize using ARM Neon instructions. How can I apply it? Thanks for the reply

  Unsigned characters some vector [] = {1, 2, 4, 1, 2, 0, 8, 100}; Unsigned four maximum voltage = 0, minwell = 255; For (int i = 0; i & lt; size (some vector); i ++) {if (some vector [i] & lt; min veal) {minwall = some vector [ii]; } And if (some vectors [i]> Maxville) {maxVal = someVector [i]; Below is a highly customized example of how large a array is. Function only when size is smaller than 128:  
  / * * minmax.S * * Created: 2014. 10. 29. * Author: Jake Lee * / // Unsigned integer Minmax (unsigned char * psc, unsigned full size); Ktext Karm Kglobal Minmax PSRC Kreq R0 size .req r1 qmin1 .req Q0 dmina .req D0 dminb .req d1 qmax1 .req q1 dmaxa .req d2 dmaxb .req d3 qmin2 .req q2 qmax2 .req Q3 .align 5 Kfunc Minmax: Subs shapes, sizes, # 128 bxmi LR vmov.i8 qmin1, # 0xff vmov.i8 qmax1, # 0 vmov.i8 qmin2, # 0xff vmov.i8 qmax2, # 0 .align 5 1: vld1. 8 {Q8, q9}, [PSRC]! Vld1.8 {q10, q11}, [PSRC]! Vld1.8 {q12, q13}, [PSRC]! Vld1.8 {q14, q15}, [PSRC]! Subs shapes, sizes, # 128 PLD [PSRC, # 64 * 3] PLD [PSRC, # 64 * 4] vmin.u8 qmin1, q8 vmax.u8 qmax1, q8 vmin.u8 qmin2, q9 vmax.u8 qmax2, q9 vmin .u8 qmin1, q10 vmax.u8 qmax1, q10 vmin.u8 qmin2, question 11 vmax.u8 qmax2, question 11 vmin.u8 qmin1, Q12 vmax.u8 qmax1, Q12 vmin.u8 qmin2, question 13 vmax.u8 qmax2 , Question 13 vmin.u8 qmin1, question 14 vmax.u8 qmax1, question 14 vmin.u8 qmin2, question 15 vmax.u8 qmax2, question 15 bpl 1b // deal width escape (size% 128) cmp size, # -128 addgt PSRC, PSRC, size BGT 1b // shrink sixteen vmin.u8 qmin1, qmin2 vmax.u8 qmax1, qmax2 the // eight vpmin.u8 dmina, dmina, dminb vpmax.u8 dmaxa, dmaxa, dmaxb // four vpmin.u8 dmina , Hampton to dmina, dminb vpmax . U8 dmaxa, dmaxa, dmaxb // Two vpmin.u8 dmina, dmina, dminb vpmax.u8 dmaxa, dmaxa, dmaxb // shrink a Vipim In.u8 dmina, dmina, dminx vpmax.u8 dmaxa, dmaxa, dmaxb vmov r0, Dmina [0] vmov r1, dmaxa [0] and r0, r0, # 0xff and r1, r1, # 0xff orr r0, r0, r1, lsl # 16bx lr.endfunc.end  
< P> Return value is an unsigned int. The maximum 16 minutes in minutes is maximum:

  result = minimax (PSRC, size); Min = Results & amp; 0xff; Max = results & gt; & Gt; 16;  

Comments

Popular posts from this blog

java - Can't add JTree to JPanel of a JInternalFrame -

javascript - data.match(var) not working it seems -

javascript - How can I pause a jQuery .each() loop, while waiting for user input? -