1 /* 2 version 20090331 3 Peter Schwabe & Neil Costigan 4 Public domain. 5 */ 6 7 #include <stdio.h> 8 9 const vector unsigned char select0 = {0x80, 0x80, 0x00, 0x01, 0x80, 0x80, 0x00, 0x01, 0x80, 0x80, 0x00, 0x01, 0x80, 0x80, 0x00, 0x01}; 10 const vector unsigned char select1 = {0x80, 0x80, 0x02, 0x03, 0x80, 0x80, 0x02, 0x03, 0x80, 0x80, 0x02, 0x03, 0x80, 0x80, 0x02, 0x03}; 11 const vector unsigned char select2 = {0x80, 0x80, 0x04, 0x05, 0x80, 0x80, 0x04, 0x05, 0x80, 0x80, 0x04, 0x05, 0x80, 0x80, 0x04, 0x05}; 12 const vector unsigned char select3 = {0x80, 0x80, 0x06, 0x07, 0x80, 0x80, 0x06, 0x07, 0x80, 0x80, 0x06, 0x07, 0x80, 0x80, 0x06, 0x07}; 13 14 const vector unsigned char select4 = {0x80, 0x80, 0x08, 0x09, 0x80, 0x80, 0x08, 0x09, 0x80, 0x80, 0x08, 0x09, 0x80, 0x80, 0x08, 0x09}; 15 const vector unsigned char select5 = {0x80, 0x80, 0x0a, 0x0b, 0x80, 0x80, 0x0a, 0x0b, 0x80, 0x80, 0x0a, 0x0b, 0x80, 0x80, 0x0a, 0x0b}; 16 const vector unsigned char select6 = {0x80, 0x80, 0x0c, 0x0d, 0x80, 0x80, 0x0c, 0x0d, 0x80, 0x80, 0x0c, 0x0d, 0x80, 0x80, 0x0c, 0x0d}; 17 const vector unsigned char select7 = {0x80, 0x80, 0x0e, 0x0f, 0x80, 0x80, 0x0e, 0x0f, 0x80, 0x80, 0x0e, 0x0f, 0x80, 0x80, 0x0e, 0x0f}; 18 19 const vector unsigned char _sel0h = {0x00, 0x01, 0x80, 0x80, 0x00, 0x01, 0x80, 0x80, 0x00, 0x01, 0x80, 0x80, 0x00, 0x01, 0x80, 0x80}; 20 const vector unsigned char _sel1h = {0x02, 0x03, 0x80, 0x80, 0x02, 0x03, 0x80, 0x80, 0x02, 0x03, 0x80, 0x80, 0x02, 0x03, 0x80, 0x80}; 21 const vector unsigned char _sel2h = {0x04, 0x05, 0x80, 0x80, 0x04, 0x05, 0x80, 0x80, 0x04, 0x05, 0x80, 0x80, 0x04, 0x05, 0x80, 0x80}; 22 const vector unsigned char _sel3h = {0x06, 0x07, 0x80, 0x80, 0x06, 0x07, 0x80, 0x80, 0x06, 0x07, 0x80, 0x80, 0x06, 0x07, 0x80, 0x80}; 23 24 const vector unsigned char _sel4h = {0x08, 0x09, 0x80, 0x80, 0x08, 0x09, 0x80, 0x80, 0x08, 0x09, 0x80, 0x80, 0x08, 0x09, 0x80, 0x80}; 25 const vector unsigned char _sel5h = {0x0a, 0x0b, 0x80, 0x80, 0x0a, 0x0b, 0x80, 0x80, 0x0a, 0x0b, 0x80, 0x80, 0x0a, 0x0b, 0x80, 0x80}; 26 const vector unsigned char _sel6h = {0x0c, 0x0d, 0x80, 0x80, 0x0c, 0x0d, 0x80, 0x80, 0x0c, 0x0d, 0x80, 0x80, 0x0c, 0x0d, 0x80, 0x80}; 27 const vector unsigned char _sel7h = {0x0e, 0x0f, 0x80, 0x80, 0x0e, 0x0f, 0x80, 0x80, 0x0e, 0x0f, 0x80, 0x80, 0x0e, 0x0f, 0x80, 0x80}; 28 29 const vector unsigned char selectL = {0x80, 0x80, 0x00, 0x01, 0x80, 0x80, 0x02, 0x03, 0x80, 0x80, 0x04, 0x05, 0x80, 0x80, 0x06, 0x07}; 30 const vector unsigned char selectH = {0x80, 0x80, 0x08, 0x09, 0x80, 0x80, 0x0a, 0x0b, 0x80, 0x80, 0x0c, 0x0d, 0x80, 0x80, 0x0e, 0x0f}; 31 32 const vector unsigned char select01 = {0x80, 0x80, 0x80, 0x80, 0x00, 0x01, 0x02, 0x03, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}; 33 const vector unsigned char select12 = {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x04, 0x05, 0x06, 0x07, 0x80, 0x80, 0x80, 0x80}; 34 const vector unsigned char select23 = {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x08, 0x09, 0x0a, 0x0b}; 35 const vector unsigned char select30 = {0x0c, 0x0d, 0x0e, 0x0f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}; 36 37 const vector unsigned char combine13 = {0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b}; 38 const vector unsigned char combine22 = {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17}; 39 const vector unsigned char combine31 = {0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13}; 40 41 const vector unsigned char _shuf0_01 = {0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x013, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}; 42 const vector unsigned char _shuf0_2 = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x10, 0x11, 0x12, 0x13, 0x80, 0x80, 0x80, 0x80}; 43 const vector unsigned char _shuf0_3 = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x11, 0x12, 0x13}; 44 45 const vector unsigned char _shuf1_01 = {0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x017, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}; 46 const vector unsigned char _shuf1_2 = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17, 0x80, 0x80, 0x80, 0x80}; 47 const vector unsigned char _shuf1_3 = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x17}; 48 49 const vector unsigned char _shuf2_01 = {0x08, 0x09, 0x0a, 0x0b, 0x18, 0x19, 0x1a, 0x01b, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}; 50 const vector unsigned char _shuf2_2 = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x18, 0x19, 0x1a, 0x1b, 0x80, 0x80, 0x80, 0x80}; 51 const vector unsigned char _shuf2_3 = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x18, 0x19, 0x1a, 0x1b}; 52 53 const vector unsigned char _shuf3_01 = {0x0c, 0x0d, 0x0e, 0x0f, 0x1c, 0x1d, 0x1e, 0x01f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80}; 54 const vector unsigned char _shuf3_2 = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x1c, 0x1d, 0x1e, 0x1f, 0x80, 0x80, 0x80, 0x80}; 55 const vector unsigned char _shuf3_3 = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x1c, 0x1d, 0x1e, 0x1f}; 56 57 const vector unsigned char _mask13 = {0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x1f, 0xff}; 58 const vector unsigned char _mask12 = {0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x0f, 0xff, 0x00, 0x00, 0x0f, 0xff}; 59 60 const vector unsigned char _selw0220 = {0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b, 0x08, 0x09, 0x0a, 0x0b, 0x00, 0x01, 0x02, 0x03}; 61 const vector unsigned char _selw0105 = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 0x14, 0x15, 0x16, 0x17}; 62 const vector unsigned char _selw2325 = {0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x08, 0x09, 0x0a, 0x0b, 0x14, 0x15, 0x16, 0x17}; 63 const vector unsigned char _selw0433 = {0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 0x0c, 0x0d, 0x0e, 0x0f, 0x0c, 0x0d, 0x0e, 0x0f}; 64 const vector unsigned char _selw261c0 = {0x08, 0x09, 0x0a, 0x0b, 0x18, 0x19, 0x1a, 0x1b, 0x04, 0x05, 0x06, 0x07, 0x80, 0x80, 0x80, 0x80}; 65 const vector unsigned char _selw1362 = {0x04, 0x05, 0x06, 0x07, 0x0c, 0x0d, 0x0e, 0x0f, 0x18, 0x19, 0x1a, 0x1b, 0x08, 0x09, 0x0a, 0x0b}; 66 const vector unsigned char _selw0342 = {0x00, 0x01, 0x02, 0x03, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x08, 0x09, 0x0a, 0x0b}; 67 const vector unsigned char _selw3333 = {0x0c, 0x0d, 0x0e, 0x0f, 0x0c, 0x0d, 0x0e, 0x0f, 0x0c, 0x0d, 0x0e, 0x0f, 0x0c, 0x0d, 0x0e, 0x0f}; 68 const vector unsigned char _swapendian = {0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00}; 69 70 const vector unsigned int _2pconsts0= {0x3FDA, 0x7689F434, 0, 0}; /* {0x3FDA, 0x3FDA * 121666, 0, 0} */ 71 const vector unsigned int _2pconsts= {0x3FFE, 0x76CCC97C, 0x1FFE, 0x3B64897C}; /* {0x3FFE, 0x3FFE * 121666, 0x1FFE, 0x1FFE * 121666} */ 72 73 const vector unsigned int _2p_03 = {0x3FDA, 0x3FFE, 0x3FFE, 0x1FFE}; 74 const vector unsigned int _2p_47 = {0x3FFE, 0x3FFE, 0x3FFE, 0x1FFE}; 75 const vector unsigned int _2p_811 = {0x3FFE, 0x3FFE, 0x3FFE, 0x1FFE}; 76 const vector unsigned int _2p_1215 = {0x3FFE, 0x3FFE, 0x3FFE, 0x1FFE}; 77 const vector unsigned int _2p_1619 = {0x3FFE, 0x3FFE, 0x3FFE, 0x1FFE}; 78 79 const vector unsigned int _p_lower = {0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff}; 80 const vector unsigned int _p_upper = {0xffffffff, 0xffffffff, 0xffffffff, 0xffffffed}; 81 const vector unsigned int _nmsbit = {0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff}; 82 83 const vector unsigned int _vec19 = {19, 19, 19, 19}; 84 85 const vector unsigned int _shlw0001 = {0, 0, 0, 1}; 86 const vector unsigned int _shlw0011 = {0, 0, 1, 1}; 87 const vector unsigned int _shlw0111 = {0, 1, 1, 1}; 88 89 const vector unsigned int _shlw1111 = {1, 1, 1, 1}; 90 const vector unsigned int _shlw1112 = {1, 1, 1, 2}; 91 const vector unsigned int _shlw1122 = {1, 1, 2, 2}; 92 const vector unsigned int _shlw1222 = {1, 2, 2, 2}; 93 94 const vector unsigned int _a24vec = {3678535680u, 0, 3678470144u, 0}; 95 const vector unsigned int redCoeffMask = {0x1fff, 0x1fff, 0x1fff, 0xfff}; 96 const vector unsigned int redCoeffMaskEnd = {0x1fff, 0x1fff, 0x1fff, 0xffffffff}; 97 const vector unsigned int redCoeffMaskVeryEnd = {0x1fff, 0x1fff, 0x1fff, 0x1fff}; 98 99 const vector unsigned int _one = {1, 0, 0, 0}; 100 101 const vector unsigned int _try = {0xffffffff, 0xffffffff, 0xffffffff, 0xfff}; 102