~ubuntu-branches/ubuntu/trusty/bmagic/trusty

« back to all changes in this revision

Viewing changes to doc/html/a00123.html

  • Committer: Bazaar Package Importer
  • Author(s): Roberto C. Sanchez
  • Date: 2011-03-03 12:22:16 UTC
  • mfrom: (4.1.8 sid)
  • Revision ID: james.westby@ubuntu.com-20110303122216-qll5migewxnxe3s5
Tags: 3.7.0-1
* New upstream release (Closes: #615929)
* Update to Standards-Version 3.9.1 (no changes)
* Specify Debian source format as '3.0 (quilt)'

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
<html xmlns="http://www.w3.org/1999/xhtml">
3
3
<head>
4
4
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
 
<title>BitMagic: Processor specific optimizations for SSE2 instructions</title>
 
5
<title>BitMagic: Processor specific optimizations for SSE4.2 instructions</title>
6
6
<link href="tabs.css" rel="stylesheet" type="text/css"/>
7
7
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
8
8
</head>
21
21
  </div>
22
22
</div>
23
23
<div class="contents">
24
 
<h1>Processor specific optimizations for SSE2 instructions<br/>
 
24
<h1>Processor specific optimizations for SSE4.2 instructions<br/>
25
25
<small>
26
 
[<a class="el" href="a00118.html">BitMagic C++ Library</a>]</small>
 
26
[<a class="el" href="a00117.html">BitMagic C++ Library</a>]</small>
27
27
</h1>
28
28
<p><div class="dynheader">
29
 
Collaboration diagram for Processor specific optimizations for SSE2 instructions:</div>
 
29
Collaboration diagram for Processor specific optimizations for SSE4.2 instructions:</div>
30
30
<div class="dynsection">
31
31
<center><table><tr><td><img src="a00123.png" border="0" alt="" usemap="#a00123_map"/>
32
32
<map name="a00123_map" id="a00123">
33
 
<area shape="rect" href="a00118.html" title="For more information please visit: http://bmagic.sourceforge.net." alt="" coords="5,5,149,35"/></map></td></tr></table></center>
 
33
<area shape="rect" href="a00117.html" title="For more information please visit: http://bmagic.sourceforge.net." alt="" coords="5,5,149,35"/></map></td></tr></table></center>
34
34
</div>
35
35
</p>
36
36
<table border="0" cellpadding="0" cellspacing="0">
37
 
<tr><td colspan="2"><h2>Data Structures</h2></td></tr>
38
 
<tr><td class="memItemLeft" align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00085.html">bm::sse_empty_guard</a></td></tr>
39
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">SSE2 reinitialization guard class.  <a href="a00085.html#_details">More...</a><br/></td></tr>
40
37
<tr><td colspan="2"><h2>Functions</h2></td></tr>
41
 
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#ga75c6ddeb0d8a279caa92341878309b50">bm::sse2_xor_arr_2_mask</a> (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end, <a class="el" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> mask)</td></tr>
42
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">XOR array elements to specified mask dst = *src ^ mask.  <a href="#ga75c6ddeb0d8a279caa92341878309b50"></a><br/></td></tr>
43
 
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#gab7b21f448684c4d84927792661e67ed5">bm::sse2_andnot_arr_2_mask</a> (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end, <a class="el" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> mask)</td></tr>
44
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Inverts array elements and NOT them to specified mask dst = ~*src &amp; mask.  <a href="#gab7b21f448684c4d84927792661e67ed5"></a><br/></td></tr>
45
 
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#ga795b544f311409a55da4ee61a3cd939a">bm::sse2_and_arr</a> (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end)</td></tr>
46
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">AND array elements against another array dst &amp;= *src.  <a href="#ga795b544f311409a55da4ee61a3cd939a"></a><br/></td></tr>
47
 
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#ga3a7d61e4e8ad8791ab38fd1c3436aa67">bm::sse2_or_arr</a> (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end)</td></tr>
48
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">OR array elements against another array dst |= *src.  <a href="#ga3a7d61e4e8ad8791ab38fd1c3436aa67"></a><br/></td></tr>
49
 
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#gaf1a5ad26557cc4d71d7421c35a8445fe">bm::sse2_xor_arr</a> (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end)</td></tr>
50
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">OR array elements against another array dst ^= *src.  <a href="#gaf1a5ad26557cc4d71d7421c35a8445fe"></a><br/></td></tr>
51
 
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#gac99f3b138f8a5e8ffb1296b129f618f0">bm::sse2_sub_arr</a> (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end)</td></tr>
52
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">AND-NOT (SUB) array elements against another array dst &amp;= ~*src.  <a href="#gac99f3b138f8a5e8ffb1296b129f618f0"></a><br/></td></tr>
53
 
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#ga302f4fcd0abf355957b305d16d04f452">bm::sse2_set_block</a> (__m128i *BMRESTRICT dst, __m128i *BMRESTRICT dst_end, <a class="el" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> value)</td></tr>
54
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">SSE2 block memset dst = value.  <a href="#ga302f4fcd0abf355957b305d16d04f452"></a><br/></td></tr>
55
 
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#ga571dd54af5c555cad9dfa6bef4561777">bm::sse2_copy_block</a> (__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end)</td></tr>
56
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">SSE2 block copy dst = *src.  <a href="#ga571dd54af5c555cad9dfa6bef4561777"></a><br/></td></tr>
57
 
<tr><td class="memItemLeft" align="right" valign="top">BMFORCEINLINE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#ga8d506147673d88005f92caee7f5dd23a">bm::sse2_invert_arr</a> (<a class="el" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *first, <a class="el" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *last)</td></tr>
58
 
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invert array elements dst = ~*dst or dst ^= *dst.  <a href="#ga8d506147673d88005f92caee7f5dd23a"></a><br/></td></tr>
59
 
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00116.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#ga0f7e0b2eb9ac7b2c6a8cd3b8f15b071f">bm::sse2_bit_count</a> (const __m128i *block, const __m128i *block_end)</td></tr>
 
38
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#ga266ed6594dc786e46c1f353443dc41fe">bm::sse4_bit_count</a> (const __m128i *block, const __m128i *block_end)</td></tr>
 
39
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html#gad686391db4cdc6382ae6785f62981474">bm::sse4_bit_block_calc_count_change</a> (const __m128i *BMRESTRICT block, const __m128i *BMRESTRICT block_end, unsigned *BMRESTRICT bit_count)</td></tr>
60
40
</table>
61
41
<hr/><h2>Function Documentation</h2>
62
 
<a class="anchor" id="ga795b544f311409a55da4ee61a3cd939a"></a><!-- doxytag: member="bm::sse2_and_arr" ref="ga795b544f311409a55da4ee61a3cd939a" args="(__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end)" -->
63
 
<div class="memitem">
64
 
<div class="memproto">
65
 
      <table class="memname">
66
 
        <tr>
67
 
          <td class="memname">BMFORCEINLINE void bm::sse2_and_arr </td>
68
 
          <td>(</td>
69
 
          <td class="paramtype">__m128i *BMRESTRICT&nbsp;</td>
70
 
          <td class="paramname"> <em>dst</em>, </td>
71
 
        </tr>
72
 
        <tr>
73
 
          <td class="paramkey"></td>
74
 
          <td></td>
75
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
76
 
          <td class="paramname"> <em>src</em>, </td>
77
 
        </tr>
78
 
        <tr>
79
 
          <td class="paramkey"></td>
80
 
          <td></td>
81
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
82
 
          <td class="paramname"> <em>src_end</em></td><td>&nbsp;</td>
83
 
        </tr>
84
 
        <tr>
85
 
          <td></td>
86
 
          <td>)</td>
87
 
          <td></td><td></td><td></td>
88
 
        </tr>
89
 
      </table>
90
 
</div>
91
 
<div class="memdoc">
92
 
 
93
 
<p>AND array elements against another array dst &amp;= *src. </p>
94
 
 
95
 
<p>Definition at line <a class="el" href="a00100_source.html#l00126">126</a> of file <a class="el" href="a00100_source.html">bmsse_util.h</a>.</p>
96
 
 
97
 
</div>
98
 
</div>
99
 
<a class="anchor" id="gab7b21f448684c4d84927792661e67ed5"></a><!-- doxytag: member="bm::sse2_andnot_arr_2_mask" ref="gab7b21f448684c4d84927792661e67ed5" args="(__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end, bm::word_t mask)" -->
100
 
<div class="memitem">
101
 
<div class="memproto">
102
 
      <table class="memname">
103
 
        <tr>
104
 
          <td class="memname">BMFORCEINLINE void bm::sse2_andnot_arr_2_mask </td>
105
 
          <td>(</td>
106
 
          <td class="paramtype">__m128i *BMRESTRICT&nbsp;</td>
107
 
          <td class="paramname"> <em>dst</em>, </td>
108
 
        </tr>
109
 
        <tr>
110
 
          <td class="paramkey"></td>
111
 
          <td></td>
112
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
113
 
          <td class="paramname"> <em>src</em>, </td>
114
 
        </tr>
115
 
        <tr>
116
 
          <td class="paramkey"></td>
117
 
          <td></td>
118
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
119
 
          <td class="paramname"> <em>src_end</em>, </td>
120
 
        </tr>
121
 
        <tr>
122
 
          <td class="paramkey"></td>
123
 
          <td></td>
124
 
          <td class="paramtype"><a class="el" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>&nbsp;</td>
125
 
          <td class="paramname"> <em>mask</em></td><td>&nbsp;</td>
126
 
        </tr>
127
 
        <tr>
128
 
          <td></td>
129
 
          <td>)</td>
130
 
          <td></td><td></td><td></td>
131
 
        </tr>
132
 
      </table>
133
 
</div>
134
 
<div class="memdoc">
135
 
 
136
 
<p>Inverts array elements and NOT them to specified mask dst = ~*src &amp; mask. </p>
137
 
 
138
 
<p>Definition at line <a class="el" href="a00100_source.html#l00098">98</a> of file <a class="el" href="a00100_source.html">bmsse_util.h</a>.</p>
139
 
 
140
 
</div>
141
 
</div>
142
 
<a class="anchor" id="ga0f7e0b2eb9ac7b2c6a8cd3b8f15b071f"></a><!-- doxytag: member="bm::sse2_bit_count" ref="ga0f7e0b2eb9ac7b2c6a8cd3b8f15b071f" args="(const __m128i *block, const __m128i *block_end)" -->
143
 
<div class="memitem">
144
 
<div class="memproto">
145
 
      <table class="memname">
146
 
        <tr>
147
 
          <td class="memname"><a class="el" href="a00116.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::sse2_bit_count </td>
 
42
<a class="anchor" id="gad686391db4cdc6382ae6785f62981474"></a><!-- doxytag: member="bm::sse4_bit_block_calc_count_change" ref="gad686391db4cdc6382ae6785f62981474" args="(const __m128i *BMRESTRICT block, const __m128i *BMRESTRICT block_end, unsigned *BMRESTRICT bit_count)" -->
 
43
<div class="memitem">
 
44
<div class="memproto">
 
45
      <table class="memname">
 
46
        <tr>
 
47
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::sse4_bit_block_calc_count_change </td>
 
48
          <td>(</td>
 
49
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
 
50
          <td class="paramname"> <em>block</em>, </td>
 
51
        </tr>
 
52
        <tr>
 
53
          <td class="paramkey"></td>
 
54
          <td></td>
 
55
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
 
56
          <td class="paramname"> <em>block_end</em>, </td>
 
57
        </tr>
 
58
        <tr>
 
59
          <td class="paramkey"></td>
 
60
          <td></td>
 
61
          <td class="paramtype">unsigned *BMRESTRICT&nbsp;</td>
 
62
          <td class="paramname"> <em>bit_count</em></td><td>&nbsp;</td>
 
63
        </tr>
 
64
        <tr>
 
65
          <td></td>
 
66
          <td>)</td>
 
67
          <td></td><td></td><td><code> [inline]</code></td>
 
68
        </tr>
 
69
      </table>
 
70
</div>
 
71
<div class="memdoc">
 
72
<p>SSE4.2 optimized bitcounting and number of GAPs </p>
 
73
 
 
74
<p>Definition at line <a class="el" href="a00098_source.html#l00248">248</a> of file <a class="el" href="a00098_source.html">bmsse4.h</a>.</p>
 
75
 
 
76
<p>Referenced by <a class="el" href="a00093_source.html#l02864">bm::bit_block_calc_count_change()</a>.</p>
 
77
 
 
78
</div>
 
79
</div>
 
80
<a class="anchor" id="ga266ed6594dc786e46c1f353443dc41fe"></a><!-- doxytag: member="bm::sse4_bit_count" ref="ga266ed6594dc786e46c1f353443dc41fe" args="(const __m128i *block, const __m128i *block_end)" -->
 
81
<div class="memitem">
 
82
<div class="memproto">
 
83
      <table class="memname">
 
84
        <tr>
 
85
          <td class="memname"><a class="el" href="a00115.html#aa3824d882a037396370b16f2f0a8bf37">bm::id_t</a> bm::sse4_bit_count </td>
148
86
          <td>(</td>
149
87
          <td class="paramtype">const __m128i *&nbsp;</td>
150
88
          <td class="paramname"> <em>block</em>, </td>
163
101
      </table>
164
102
</div>
165
103
<div class="memdoc">
166
 
<p>SSE2 optimized bitcounting function implements parallel bitcounting algorithm for SSE2 instruction set.</p>
167
 
<pre>
168
 
unsigned CalcBitCount32(unsigned b)
169
 
{
170
 
    b = (b &amp; 0x55555555) + (b &gt;&gt; 1 &amp; 0x55555555);
171
 
    b = (b &amp; 0x33333333) + (b &gt;&gt; 2 &amp; 0x33333333);
172
 
    b = (b + (b &gt;&gt; 4)) &amp; 0x0F0F0F0F;
173
 
    b = b + (b &gt;&gt; 8);
174
 
    b = (b + (b &gt;&gt; 16)) &amp; 0x0000003F;
175
 
    return b;
176
 
}
177
 
</pre> 
178
 
<p>Definition at line <a class="el" href="a00098_source.html#l00064">64</a> of file <a class="el" href="a00098_source.html">bmsse2.h</a>.</p>
179
 
 
180
 
<p>References <a class="el" href="a00093_source.html#l00153">BM_ALIGN16ATTR</a>.</p>
181
 
 
182
 
</div>
183
 
</div>
184
 
<a class="anchor" id="ga571dd54af5c555cad9dfa6bef4561777"></a><!-- doxytag: member="bm::sse2_copy_block" ref="ga571dd54af5c555cad9dfa6bef4561777" args="(__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end)" -->
185
 
<div class="memitem">
186
 
<div class="memproto">
187
 
      <table class="memname">
188
 
        <tr>
189
 
          <td class="memname">BMFORCEINLINE void bm::sse2_copy_block </td>
190
 
          <td>(</td>
191
 
          <td class="paramtype">__m128i *BMRESTRICT&nbsp;</td>
192
 
          <td class="paramname"> <em>dst</em>, </td>
193
 
        </tr>
194
 
        <tr>
195
 
          <td class="paramkey"></td>
196
 
          <td></td>
197
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
198
 
          <td class="paramname"> <em>src</em>, </td>
199
 
        </tr>
200
 
        <tr>
201
 
          <td class="paramkey"></td>
202
 
          <td></td>
203
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
204
 
          <td class="paramname"> <em>src_end</em></td><td>&nbsp;</td>
205
 
        </tr>
206
 
        <tr>
207
 
          <td></td>
208
 
          <td>)</td>
209
 
          <td></td><td></td><td></td>
210
 
        </tr>
211
 
      </table>
212
 
</div>
213
 
<div class="memdoc">
214
 
 
215
 
<p>SSE2 block copy dst = *src. </p>
216
 
 
217
 
<p>Definition at line <a class="el" href="a00100_source.html#l00322">322</a> of file <a class="el" href="a00100_source.html">bmsse_util.h</a>.</p>
218
 
 
219
 
</div>
220
 
</div>
221
 
<a class="anchor" id="ga8d506147673d88005f92caee7f5dd23a"></a><!-- doxytag: member="bm::sse2_invert_arr" ref="ga8d506147673d88005f92caee7f5dd23a" args="(bm::word_t *first, bm::word_t *last)" -->
222
 
<div class="memitem">
223
 
<div class="memproto">
224
 
      <table class="memname">
225
 
        <tr>
226
 
          <td class="memname">BMFORCEINLINE void bm::sse2_invert_arr </td>
227
 
          <td>(</td>
228
 
          <td class="paramtype"><a class="el" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
229
 
          <td class="paramname"> <em>first</em>, </td>
230
 
        </tr>
231
 
        <tr>
232
 
          <td class="paramkey"></td>
233
 
          <td></td>
234
 
          <td class="paramtype"><a class="el" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a> *&nbsp;</td>
235
 
          <td class="paramname"> <em>last</em></td><td>&nbsp;</td>
236
 
        </tr>
237
 
        <tr>
238
 
          <td></td>
239
 
          <td>)</td>
240
 
          <td></td><td></td><td></td>
241
 
        </tr>
242
 
      </table>
243
 
</div>
244
 
<div class="memdoc">
245
 
 
246
 
<p>Invert array elements dst = ~*dst or dst ^= *dst. </p>
247
 
 
248
 
<p>Definition at line <a class="el" href="a00100_source.html#l00366">366</a> of file <a class="el" href="a00100_source.html">bmsse_util.h</a>.</p>
249
 
 
250
 
</div>
251
 
</div>
252
 
<a class="anchor" id="ga3a7d61e4e8ad8791ab38fd1c3436aa67"></a><!-- doxytag: member="bm::sse2_or_arr" ref="ga3a7d61e4e8ad8791ab38fd1c3436aa67" args="(__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end)" -->
253
 
<div class="memitem">
254
 
<div class="memproto">
255
 
      <table class="memname">
256
 
        <tr>
257
 
          <td class="memname">BMFORCEINLINE void bm::sse2_or_arr </td>
258
 
          <td>(</td>
259
 
          <td class="paramtype">__m128i *BMRESTRICT&nbsp;</td>
260
 
          <td class="paramname"> <em>dst</em>, </td>
261
 
        </tr>
262
 
        <tr>
263
 
          <td class="paramkey"></td>
264
 
          <td></td>
265
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
266
 
          <td class="paramname"> <em>src</em>, </td>
267
 
        </tr>
268
 
        <tr>
269
 
          <td class="paramkey"></td>
270
 
          <td></td>
271
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
272
 
          <td class="paramname"> <em>src_end</em></td><td>&nbsp;</td>
273
 
        </tr>
274
 
        <tr>
275
 
          <td></td>
276
 
          <td>)</td>
277
 
          <td></td><td></td><td></td>
278
 
        </tr>
279
 
      </table>
280
 
</div>
281
 
<div class="memdoc">
282
 
 
283
 
<p>OR array elements against another array dst |= *src. </p>
284
 
 
285
 
<p>Definition at line <a class="el" href="a00100_source.html#l00167">167</a> of file <a class="el" href="a00100_source.html">bmsse_util.h</a>.</p>
286
 
 
287
 
</div>
288
 
</div>
289
 
<a class="anchor" id="ga302f4fcd0abf355957b305d16d04f452"></a><!-- doxytag: member="bm::sse2_set_block" ref="ga302f4fcd0abf355957b305d16d04f452" args="(__m128i *BMRESTRICT dst, __m128i *BMRESTRICT dst_end, bm::word_t value)" -->
290
 
<div class="memitem">
291
 
<div class="memproto">
292
 
      <table class="memname">
293
 
        <tr>
294
 
          <td class="memname">BMFORCEINLINE void bm::sse2_set_block </td>
295
 
          <td>(</td>
296
 
          <td class="paramtype">__m128i *BMRESTRICT&nbsp;</td>
297
 
          <td class="paramname"> <em>dst</em>, </td>
298
 
        </tr>
299
 
        <tr>
300
 
          <td class="paramkey"></td>
301
 
          <td></td>
302
 
          <td class="paramtype">__m128i *BMRESTRICT&nbsp;</td>
303
 
          <td class="paramname"> <em>dst_end</em>, </td>
304
 
        </tr>
305
 
        <tr>
306
 
          <td class="paramkey"></td>
307
 
          <td></td>
308
 
          <td class="paramtype"><a class="el" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>&nbsp;</td>
309
 
          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
310
 
        </tr>
311
 
        <tr>
312
 
          <td></td>
313
 
          <td>)</td>
314
 
          <td></td><td></td><td></td>
315
 
        </tr>
316
 
      </table>
317
 
</div>
318
 
<div class="memdoc">
319
 
 
320
 
<p>SSE2 block memset dst = value. </p>
321
 
 
322
 
<p>Definition at line <a class="el" href="a00100_source.html#l00288">288</a> of file <a class="el" href="a00100_source.html">bmsse_util.h</a>.</p>
323
 
 
324
 
</div>
325
 
</div>
326
 
<a class="anchor" id="gac99f3b138f8a5e8ffb1296b129f618f0"></a><!-- doxytag: member="bm::sse2_sub_arr" ref="gac99f3b138f8a5e8ffb1296b129f618f0" args="(__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end)" -->
327
 
<div class="memitem">
328
 
<div class="memproto">
329
 
      <table class="memname">
330
 
        <tr>
331
 
          <td class="memname">BMFORCEINLINE void bm::sse2_sub_arr </td>
332
 
          <td>(</td>
333
 
          <td class="paramtype">__m128i *BMRESTRICT&nbsp;</td>
334
 
          <td class="paramname"> <em>dst</em>, </td>
335
 
        </tr>
336
 
        <tr>
337
 
          <td class="paramkey"></td>
338
 
          <td></td>
339
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
340
 
          <td class="paramname"> <em>src</em>, </td>
341
 
        </tr>
342
 
        <tr>
343
 
          <td class="paramkey"></td>
344
 
          <td></td>
345
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
346
 
          <td class="paramname"> <em>src_end</em></td><td>&nbsp;</td>
347
 
        </tr>
348
 
        <tr>
349
 
          <td></td>
350
 
          <td>)</td>
351
 
          <td></td><td></td><td></td>
352
 
        </tr>
353
 
      </table>
354
 
</div>
355
 
<div class="memdoc">
356
 
 
357
 
<p>AND-NOT (SUB) array elements against another array dst &amp;= ~*src. </p>
358
 
 
359
 
<p>Definition at line <a class="el" href="a00100_source.html#l00248">248</a> of file <a class="el" href="a00100_source.html">bmsse_util.h</a>.</p>
360
 
 
361
 
</div>
362
 
</div>
363
 
<a class="anchor" id="gaf1a5ad26557cc4d71d7421c35a8445fe"></a><!-- doxytag: member="bm::sse2_xor_arr" ref="gaf1a5ad26557cc4d71d7421c35a8445fe" args="(__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end)" -->
364
 
<div class="memitem">
365
 
<div class="memproto">
366
 
      <table class="memname">
367
 
        <tr>
368
 
          <td class="memname">BMFORCEINLINE void bm::sse2_xor_arr </td>
369
 
          <td>(</td>
370
 
          <td class="paramtype">__m128i *BMRESTRICT&nbsp;</td>
371
 
          <td class="paramname"> <em>dst</em>, </td>
372
 
        </tr>
373
 
        <tr>
374
 
          <td class="paramkey"></td>
375
 
          <td></td>
376
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
377
 
          <td class="paramname"> <em>src</em>, </td>
378
 
        </tr>
379
 
        <tr>
380
 
          <td class="paramkey"></td>
381
 
          <td></td>
382
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
383
 
          <td class="paramname"> <em>src_end</em></td><td>&nbsp;</td>
384
 
        </tr>
385
 
        <tr>
386
 
          <td></td>
387
 
          <td>)</td>
388
 
          <td></td><td></td><td></td>
389
 
        </tr>
390
 
      </table>
391
 
</div>
392
 
<div class="memdoc">
393
 
 
394
 
<p>OR array elements against another array dst ^= *src. </p>
395
 
 
396
 
<p>Definition at line <a class="el" href="a00100_source.html#l00207">207</a> of file <a class="el" href="a00100_source.html">bmsse_util.h</a>.</p>
397
 
 
398
 
</div>
399
 
</div>
400
 
<a class="anchor" id="ga75c6ddeb0d8a279caa92341878309b50"></a><!-- doxytag: member="bm::sse2_xor_arr_2_mask" ref="ga75c6ddeb0d8a279caa92341878309b50" args="(__m128i *BMRESTRICT dst, const __m128i *BMRESTRICT src, const __m128i *BMRESTRICT src_end, bm::word_t mask)" -->
401
 
<div class="memitem">
402
 
<div class="memproto">
403
 
      <table class="memname">
404
 
        <tr>
405
 
          <td class="memname">BMFORCEINLINE void bm::sse2_xor_arr_2_mask </td>
406
 
          <td>(</td>
407
 
          <td class="paramtype">__m128i *BMRESTRICT&nbsp;</td>
408
 
          <td class="paramname"> <em>dst</em>, </td>
409
 
        </tr>
410
 
        <tr>
411
 
          <td class="paramkey"></td>
412
 
          <td></td>
413
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
414
 
          <td class="paramname"> <em>src</em>, </td>
415
 
        </tr>
416
 
        <tr>
417
 
          <td class="paramkey"></td>
418
 
          <td></td>
419
 
          <td class="paramtype">const __m128i *BMRESTRICT&nbsp;</td>
420
 
          <td class="paramname"> <em>src_end</em>, </td>
421
 
        </tr>
422
 
        <tr>
423
 
          <td class="paramkey"></td>
424
 
          <td></td>
425
 
          <td class="paramtype"><a class="el" href="a00116.html#a17fd5ba52db3ddda05e6f8dd5000a1a4">bm::word_t</a>&nbsp;</td>
426
 
          <td class="paramname"> <em>mask</em></td><td>&nbsp;</td>
427
 
        </tr>
428
 
        <tr>
429
 
          <td></td>
430
 
          <td>)</td>
431
 
          <td></td><td></td><td></td>
432
 
        </tr>
433
 
      </table>
434
 
</div>
435
 
<div class="memdoc">
436
 
 
437
 
<p>XOR array elements to specified mask dst = *src ^ mask. </p>
438
 
 
439
 
<p>Definition at line <a class="el" href="a00100_source.html#l00072">72</a> of file <a class="el" href="a00100_source.html">bmsse_util.h</a>.</p>
440
 
 
441
 
</div>
442
 
</div>
443
 
</div>
444
 
<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Mar 23 20:48:07 2010 for BitMagic by&nbsp;
 
104
<p>SSE4.2 optimized bitcounting . </p>
 
105
 
 
106
<p>Definition at line <a class="el" href="a00098_source.html#l00055">55</a> of file <a class="el" href="a00098_source.html">bmsse4.h</a>.</p>
 
107
 
 
108
</div>
 
109
</div>
 
110
</div>
 
111
<hr size="1"/><address style="text-align: right;"><small>Generated on Sun Apr 25 09:37:39 2010 for BitMagic by&nbsp;
445
112
<a href="http://www.doxygen.org/index.html">
446
113
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
447
114
</body>