The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/libb2/blake2b-load-sse41.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2    BLAKE2 reference source code package - optimized C implementations
    3 
    4    Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
    5 
    6    To the extent possible under law, the author(s) have dedicated all copyright
    7    and related and neighboring rights to this software to the public domain
    8    worldwide. This software is distributed without any warranty.
    9 
   10    You should have received a copy of the CC0 Public Domain Dedication along with
   11    this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
   12 */
   13 #pragma once
   14 #ifndef __BLAKE2B_LOAD_SSE41_H__
   15 #define __BLAKE2B_LOAD_SSE41_H__
   16 
   17 #define LOAD_MSG_0_1(b0, b1) \
   18 do \
   19 { \
   20 b0 = _mm_unpacklo_epi64(m0, m1); \
   21 b1 = _mm_unpacklo_epi64(m2, m3); \
   22 } while(0)
   23 
   24 
   25 #define LOAD_MSG_0_2(b0, b1) \
   26 do \
   27 { \
   28 b0 = _mm_unpackhi_epi64(m0, m1); \
   29 b1 = _mm_unpackhi_epi64(m2, m3); \
   30 } while(0)
   31 
   32 
   33 #define LOAD_MSG_0_3(b0, b1) \
   34 do \
   35 { \
   36 b0 = _mm_unpacklo_epi64(m4, m5); \
   37 b1 = _mm_unpacklo_epi64(m6, m7); \
   38 } while(0)
   39 
   40 
   41 #define LOAD_MSG_0_4(b0, b1) \
   42 do \
   43 { \
   44 b0 = _mm_unpackhi_epi64(m4, m5); \
   45 b1 = _mm_unpackhi_epi64(m6, m7); \
   46 } while(0)
   47 
   48 
   49 #define LOAD_MSG_1_1(b0, b1) \
   50 do \
   51 { \
   52 b0 = _mm_unpacklo_epi64(m7, m2); \
   53 b1 = _mm_unpackhi_epi64(m4, m6); \
   54 } while(0)
   55 
   56 
   57 #define LOAD_MSG_1_2(b0, b1) \
   58 do \
   59 { \
   60 b0 = _mm_unpacklo_epi64(m5, m4); \
   61 b1 = _mm_alignr_epi8(m3, m7, 8); \
   62 } while(0)
   63 
   64 
   65 #define LOAD_MSG_1_3(b0, b1) \
   66 do \
   67 { \
   68 b0 = _mm_shuffle_epi32(m0, _MM_SHUFFLE(1,0,3,2)); \
   69 b1 = _mm_unpackhi_epi64(m5, m2); \
   70 } while(0)
   71 
   72 
   73 #define LOAD_MSG_1_4(b0, b1) \
   74 do \
   75 { \
   76 b0 = _mm_unpacklo_epi64(m6, m1); \
   77 b1 = _mm_unpackhi_epi64(m3, m1); \
   78 } while(0)
   79 
   80 
   81 #define LOAD_MSG_2_1(b0, b1) \
   82 do \
   83 { \
   84 b0 = _mm_alignr_epi8(m6, m5, 8); \
   85 b1 = _mm_unpackhi_epi64(m2, m7); \
   86 } while(0)
   87 
   88 
   89 #define LOAD_MSG_2_2(b0, b1) \
   90 do \
   91 { \
   92 b0 = _mm_unpacklo_epi64(m4, m0); \
   93 b1 = _mm_blend_epi16(m1, m6, 0xF0); \
   94 } while(0)
   95 
   96 
   97 #define LOAD_MSG_2_3(b0, b1) \
   98 do \
   99 { \
  100 b0 = _mm_blend_epi16(m5, m1, 0xF0); \
  101 b1 = _mm_unpackhi_epi64(m3, m4); \
  102 } while(0)
  103 
  104 
  105 #define LOAD_MSG_2_4(b0, b1) \
  106 do \
  107 { \
  108 b0 = _mm_unpacklo_epi64(m7, m3); \
  109 b1 = _mm_alignr_epi8(m2, m0, 8); \
  110 } while(0)
  111 
  112 
  113 #define LOAD_MSG_3_1(b0, b1) \
  114 do \
  115 { \
  116 b0 = _mm_unpackhi_epi64(m3, m1); \
  117 b1 = _mm_unpackhi_epi64(m6, m5); \
  118 } while(0)
  119 
  120 
  121 #define LOAD_MSG_3_2(b0, b1) \
  122 do \
  123 { \
  124 b0 = _mm_unpackhi_epi64(m4, m0); \
  125 b1 = _mm_unpacklo_epi64(m6, m7); \
  126 } while(0)
  127 
  128 
  129 #define LOAD_MSG_3_3(b0, b1) \
  130 do \
  131 { \
  132 b0 = _mm_blend_epi16(m1, m2, 0xF0); \
  133 b1 = _mm_blend_epi16(m2, m7, 0xF0); \
  134 } while(0)
  135 
  136 
  137 #define LOAD_MSG_3_4(b0, b1) \
  138 do \
  139 { \
  140 b0 = _mm_unpacklo_epi64(m3, m5); \
  141 b1 = _mm_unpacklo_epi64(m0, m4); \
  142 } while(0)
  143 
  144 
  145 #define LOAD_MSG_4_1(b0, b1) \
  146 do \
  147 { \
  148 b0 = _mm_unpackhi_epi64(m4, m2); \
  149 b1 = _mm_unpacklo_epi64(m1, m5); \
  150 } while(0)
  151 
  152 
  153 #define LOAD_MSG_4_2(b0, b1) \
  154 do \
  155 { \
  156 b0 = _mm_blend_epi16(m0, m3, 0xF0); \
  157 b1 = _mm_blend_epi16(m2, m7, 0xF0); \
  158 } while(0)
  159 
  160 
  161 #define LOAD_MSG_4_3(b0, b1) \
  162 do \
  163 { \
  164 b0 = _mm_blend_epi16(m7, m5, 0xF0); \
  165 b1 = _mm_blend_epi16(m3, m1, 0xF0); \
  166 } while(0)
  167 
  168 
  169 #define LOAD_MSG_4_4(b0, b1) \
  170 do \
  171 { \
  172 b0 = _mm_alignr_epi8(m6, m0, 8); \
  173 b1 = _mm_blend_epi16(m4, m6, 0xF0); \
  174 } while(0)
  175 
  176 
  177 #define LOAD_MSG_5_1(b0, b1) \
  178 do \
  179 { \
  180 b0 = _mm_unpacklo_epi64(m1, m3); \
  181 b1 = _mm_unpacklo_epi64(m0, m4); \
  182 } while(0)
  183 
  184 
  185 #define LOAD_MSG_5_2(b0, b1) \
  186 do \
  187 { \
  188 b0 = _mm_unpacklo_epi64(m6, m5); \
  189 b1 = _mm_unpackhi_epi64(m5, m1); \
  190 } while(0)
  191 
  192 
  193 #define LOAD_MSG_5_3(b0, b1) \
  194 do \
  195 { \
  196 b0 = _mm_blend_epi16(m2, m3, 0xF0); \
  197 b1 = _mm_unpackhi_epi64(m7, m0); \
  198 } while(0)
  199 
  200 
  201 #define LOAD_MSG_5_4(b0, b1) \
  202 do \
  203 { \
  204 b0 = _mm_unpackhi_epi64(m6, m2); \
  205 b1 = _mm_blend_epi16(m7, m4, 0xF0); \
  206 } while(0)
  207 
  208 
  209 #define LOAD_MSG_6_1(b0, b1) \
  210 do \
  211 { \
  212 b0 = _mm_blend_epi16(m6, m0, 0xF0); \
  213 b1 = _mm_unpacklo_epi64(m7, m2); \
  214 } while(0)
  215 
  216 
  217 #define LOAD_MSG_6_2(b0, b1) \
  218 do \
  219 { \
  220 b0 = _mm_unpackhi_epi64(m2, m7); \
  221 b1 = _mm_alignr_epi8(m5, m6, 8); \
  222 } while(0)
  223 
  224 
  225 #define LOAD_MSG_6_3(b0, b1) \
  226 do \
  227 { \
  228 b0 = _mm_unpacklo_epi64(m0, m3); \
  229 b1 = _mm_shuffle_epi32(m4, _MM_SHUFFLE(1,0,3,2)); \
  230 } while(0)
  231 
  232 
  233 #define LOAD_MSG_6_4(b0, b1) \
  234 do \
  235 { \
  236 b0 = _mm_unpackhi_epi64(m3, m1); \
  237 b1 = _mm_blend_epi16(m1, m5, 0xF0); \
  238 } while(0)
  239 
  240 
  241 #define LOAD_MSG_7_1(b0, b1) \
  242 do \
  243 { \
  244 b0 = _mm_unpackhi_epi64(m6, m3); \
  245 b1 = _mm_blend_epi16(m6, m1, 0xF0); \
  246 } while(0)
  247 
  248 
  249 #define LOAD_MSG_7_2(b0, b1) \
  250 do \
  251 { \
  252 b0 = _mm_alignr_epi8(m7, m5, 8); \
  253 b1 = _mm_unpackhi_epi64(m0, m4); \
  254 } while(0)
  255 
  256 
  257 #define LOAD_MSG_7_3(b0, b1) \
  258 do \
  259 { \
  260 b0 = _mm_unpackhi_epi64(m2, m7); \
  261 b1 = _mm_unpacklo_epi64(m4, m1); \
  262 } while(0)
  263 
  264 
  265 #define LOAD_MSG_7_4(b0, b1) \
  266 do \
  267 { \
  268 b0 = _mm_unpacklo_epi64(m0, m2); \
  269 b1 = _mm_unpacklo_epi64(m3, m5); \
  270 } while(0)
  271 
  272 
  273 #define LOAD_MSG_8_1(b0, b1) \
  274 do \
  275 { \
  276 b0 = _mm_unpacklo_epi64(m3, m7); \
  277 b1 = _mm_alignr_epi8(m0, m5, 8); \
  278 } while(0)
  279 
  280 
  281 #define LOAD_MSG_8_2(b0, b1) \
  282 do \
  283 { \
  284 b0 = _mm_unpackhi_epi64(m7, m4); \
  285 b1 = _mm_alignr_epi8(m4, m1, 8); \
  286 } while(0)
  287 
  288 
  289 #define LOAD_MSG_8_3(b0, b1) \
  290 do \
  291 { \
  292 b0 = m6; \
  293 b1 = _mm_alignr_epi8(m5, m0, 8); \
  294 } while(0)
  295 
  296 
  297 #define LOAD_MSG_8_4(b0, b1) \
  298 do \
  299 { \
  300 b0 = _mm_blend_epi16(m1, m3, 0xF0); \
  301 b1 = m2; \
  302 } while(0)
  303 
  304 
  305 #define LOAD_MSG_9_1(b0, b1) \
  306 do \
  307 { \
  308 b0 = _mm_unpacklo_epi64(m5, m4); \
  309 b1 = _mm_unpackhi_epi64(m3, m0); \
  310 } while(0)
  311 
  312 
  313 #define LOAD_MSG_9_2(b0, b1) \
  314 do \
  315 { \
  316 b0 = _mm_unpacklo_epi64(m1, m2); \
  317 b1 = _mm_blend_epi16(m3, m2, 0xF0); \
  318 } while(0)
  319 
  320 
  321 #define LOAD_MSG_9_3(b0, b1) \
  322 do \
  323 { \
  324 b0 = _mm_unpackhi_epi64(m7, m4); \
  325 b1 = _mm_unpackhi_epi64(m1, m6); \
  326 } while(0)
  327 
  328 
  329 #define LOAD_MSG_9_4(b0, b1) \
  330 do \
  331 { \
  332 b0 = _mm_alignr_epi8(m7, m5, 8); \
  333 b1 = _mm_unpacklo_epi64(m6, m0); \
  334 } while(0)
  335 
  336 
  337 #define LOAD_MSG_10_1(b0, b1) \
  338 do \
  339 { \
  340 b0 = _mm_unpacklo_epi64(m0, m1); \
  341 b1 = _mm_unpacklo_epi64(m2, m3); \
  342 } while(0)
  343 
  344 
  345 #define LOAD_MSG_10_2(b0, b1) \
  346 do \
  347 { \
  348 b0 = _mm_unpackhi_epi64(m0, m1); \
  349 b1 = _mm_unpackhi_epi64(m2, m3); \
  350 } while(0)
  351 
  352 
  353 #define LOAD_MSG_10_3(b0, b1) \
  354 do \
  355 { \
  356 b0 = _mm_unpacklo_epi64(m4, m5); \
  357 b1 = _mm_unpacklo_epi64(m6, m7); \
  358 } while(0)
  359 
  360 
  361 #define LOAD_MSG_10_4(b0, b1) \
  362 do \
  363 { \
  364 b0 = _mm_unpackhi_epi64(m4, m5); \
  365 b1 = _mm_unpackhi_epi64(m6, m7); \
  366 } while(0)
  367 
  368 
  369 #define LOAD_MSG_11_1(b0, b1) \
  370 do \
  371 { \
  372 b0 = _mm_unpacklo_epi64(m7, m2); \
  373 b1 = _mm_unpackhi_epi64(m4, m6); \
  374 } while(0)
  375 
  376 
  377 #define LOAD_MSG_11_2(b0, b1) \
  378 do \
  379 { \
  380 b0 = _mm_unpacklo_epi64(m5, m4); \
  381 b1 = _mm_alignr_epi8(m3, m7, 8); \
  382 } while(0)
  383 
  384 
  385 #define LOAD_MSG_11_3(b0, b1) \
  386 do \
  387 { \
  388 b0 = _mm_shuffle_epi32(m0, _MM_SHUFFLE(1,0,3,2)); \
  389 b1 = _mm_unpackhi_epi64(m5, m2); \
  390 } while(0)
  391 
  392 
  393 #define LOAD_MSG_11_4(b0, b1) \
  394 do \
  395 { \
  396 b0 = _mm_unpacklo_epi64(m6, m1); \
  397 b1 = _mm_unpackhi_epi64(m3, m1); \
  398 } while(0)
  399 
  400 
  401 #endif
  402 

Cache object: 07df7b257e3cade02d48de1df996f1b4


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.