On Sun, Oct 30, 2011 at 7:39 PM, 陳韋任 <che...@iis.sinica.edu.tw> wrote: > Hi, all > > I am looking into QEMU's implementation for ARM NEON instructions > (target-arm/neon_helper.c). Some helper functions will do mask > operation, neon_add_u8, for example. I thought simply adding a and b > is enough and can't figure out why the mask operation is needed. > > --- > uint32_t HELPER(neon_add_u8)(uint32_t a, uint32_t b) > { > uint32_t mask; > mask = (a ^ b) & 0x80808080u; > a &= ~0x80808080u; > b &= ~0x80808080u; > return (a + b) ^ mask; > } > --- > ex :
a = 0x01 01 01 01 b = 0xFF FF FF FF the expected result of a+ b is 0x0 0 0 0 simply add a to b is 0x1 1 1 0 > Any help is appreciated. > > Regards, > chenwj > > -- > Wei-Ren Chen (陳韋任) > Computer Systems Lab, Institute of Information Science, > Academia Sinica, Taiwan (R.O.C.) > Tel:886-2-2788-3799 #1667 > >