Changes between Version 8 and Version 9 of IDISAproject
 Timestamp:
 May 6, 2011, 12:06:13 PM (8 years ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

IDISAproject
v8 v9 32 32 for fully general vertical and horizontal SIMD programming. 33 33 34 === IDISA Vertical SIMD Syntax===34 === IDISA Vertical Operations === 35 35 36 36 The following IDISA notation in C++ template syntax present … … 52 52 individual operations and their semantics. 53 53 54 === IDISA Horizontal SIMD Syntax===54 === IDISA Horizontal Operations === 55 55 56 56 A slight variant of this notation provides a fully general … … 60 60 vectors ''a'' and ''b'', let ''c'' be the ''2N'' bit concatenation of ''a'' and ''b''. 61 61 Then ''v''=hsimd<''n''>::''f''(''a'', ''b'') denotes the application of ''f'' 62 in the horizontal combination of all sets of adjacent fields of ''c'' such that 63 ''v,,i,,,''=''f''(''c,,2i,,''), ''c,,2i+1,,''). 64 65 See the list of [wiki:IDISA_Horizontal IDISA Horizontal] operations for the 62 in the horizontal combination of all sets of adjacent ''n'' bit fields of ''c'' such that 63 ''v,,i,,,''=''f''(''c,,2i,,'', ''c,,2i+1,,''). 64 See the list of [wiki:IDISA_Horizontal IDISA Horizontal Packing] operations for the 66 65 individual operations and their semantics. 67 66 67 === IDISA Expanding Operations === 68 69 See the list of [wiki:IDISA_Expanding IDISA Expanding] operations for the 70 individual operations and their semantics. 71 72 === IDISA Field Movement Operations === 73 74 See the list of [wiki:IDISA_Movement IDISA Field Movement] operations for the 75 individual operations and their semantics. 68 76 69 77 … … 92 100 93 101 1. For example, 94 consider the implementation of simd _hl<2>::add(a), where102 consider the implementation of simd<2>::add_hl(a), where 95 103 addition is natively supported for only larger field widths. 96 104 A direct implementation requires 1 shift, two mask and one add 97 105 operation. 98 106 99 simd _hl<2>::add(a) = simd<16>::add(simd<16>::srli(a, 1) & simd<2>::constant(1), a & simd<2>:constant(1))107 simd<2>::add_hl(a) = simd<16>::add(simd<16>::srli(a, 1) & simd<2>::constant(1), a & simd<2>:constant(1)) 100 108 101 109 But one of the masks can be eliminated by taking advantage 102 110 of the properties of 2bit subtraction. 103 111 104 simd _hl<2>::add(a) = simd<16>::sub(a, simd<16>::srli(a, 1) & simd<2>::constant(1))112 simd<2>::add_hl(a) = simd<16>::sub(a, simd<16>::srli(a, 1) & simd<2>::constant(1)) 105 113 106 114 === IDISA Test Generator ===