Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-release > by-pkgid > 0a67b807a02637f2cae68649d519a89d > files > 2502

libcryptopp-devel-7.0.0-1.mga7.armv7hl.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crypto++: ppc-simd.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Crypto++
   &#160;<span id="projectnumber">7.0</span>
   </div>
   <div id="projectbrief">Free&nbsp;C&#43;&#43;&nbsp;class&nbsp;library&nbsp;of&nbsp;cryptographic&nbsp;schemes</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">ppc-simd.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Support functions for PowerPC and vector operations.  
<a href="#details">More...</a></p>

<p><a href="ppc-simd_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a6be79e9f5820422953c7a2a3df6c8879"><td class="memItemLeft" align="right" valign="top"><a id="a6be79e9f5820422953c7a2a3df6c8879"></a>
typedef __vector unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>uint8x16_p</b></td></tr>
<tr class="separator:a6be79e9f5820422953c7a2a3df6c8879"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae74b7f16ff4b3e18dcbf2aeddccbf584"><td class="memItemLeft" align="right" valign="top"><a id="ae74b7f16ff4b3e18dcbf2aeddccbf584"></a>
typedef __vector unsigned short&#160;</td><td class="memItemRight" valign="bottom"><b>uint16x8_p</b></td></tr>
<tr class="separator:ae74b7f16ff4b3e18dcbf2aeddccbf584"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e56fac8b9dc01ebf52262069a3c94b5"><td class="memItemLeft" align="right" valign="top"><a id="a3e56fac8b9dc01ebf52262069a3c94b5"></a>
typedef __vector unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>uint32x4_p</b></td></tr>
<tr class="separator:a3e56fac8b9dc01ebf52262069a3c94b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a82251513246cd3f89f6b7a8e465cb9d2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a82251513246cd3f89f6b7a8e465cb9d2">ReverseByteArrayLE</a> (byte src[16])</td></tr>
<tr class="memdesc:a82251513246cd3f89f6b7a8e465cb9d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse a 16-byte array.  <a href="#a82251513246cd3f89f6b7a8e465cb9d2">More...</a><br /></td></tr>
<tr class="separator:a82251513246cd3f89f6b7a8e465cb9d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab460a63c9a22173e86d5bcf66d8a9c80"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:ab460a63c9a22173e86d5bcf66d8a9c80"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80">Reverse</a> (const T &amp;src)</td></tr>
<tr class="memdesc:ab460a63c9a22173e86d5bcf66d8a9c80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse a vector.  <a href="#ab460a63c9a22173e86d5bcf66d8a9c80">More...</a><br /></td></tr>
<tr class="separator:ab460a63c9a22173e86d5bcf66d8a9c80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1dd794d3ddd505c399eb711d41048e7b"><td class="memItemLeft" align="right" valign="top">uint32x4_p&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b">VectorLoadBE</a> (const uint8_t src[16])</td></tr>
<tr class="memdesc:a1dd794d3ddd505c399eb711d41048e7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a vector from a byte array.  <a href="#a1dd794d3ddd505c399eb711d41048e7b">More...</a><br /></td></tr>
<tr class="separator:a1dd794d3ddd505c399eb711d41048e7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca44f35d708f762b86144d12660af80d"><td class="memItemLeft" align="right" valign="top">uint32x4_p&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#aca44f35d708f762b86144d12660af80d">VectorLoadBE</a> (int off, const uint8_t src[16])</td></tr>
<tr class="memdesc:aca44f35d708f762b86144d12660af80d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a vector from a byte array.  <a href="#aca44f35d708f762b86144d12660af80d">More...</a><br /></td></tr>
<tr class="separator:aca44f35d708f762b86144d12660af80d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b6283488beeb26de590e2eaffcbcc56"><td class="memItemLeft" align="right" valign="top">uint32x4_p&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a1b6283488beeb26de590e2eaffcbcc56">VectorLoad</a> (const byte src[16])</td></tr>
<tr class="memdesc:a1b6283488beeb26de590e2eaffcbcc56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a vector from a byte array.  <a href="#a1b6283488beeb26de590e2eaffcbcc56">More...</a><br /></td></tr>
<tr class="separator:a1b6283488beeb26de590e2eaffcbcc56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8b6e6f1af0793bccba0f1454199b931"><td class="memItemLeft" align="right" valign="top">uint32x4_p&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#ae8b6e6f1af0793bccba0f1454199b931">VectorLoad</a> (int off, const byte src[16])</td></tr>
<tr class="memdesc:ae8b6e6f1af0793bccba0f1454199b931"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a vector from a byte array.  <a href="#ae8b6e6f1af0793bccba0f1454199b931">More...</a><br /></td></tr>
<tr class="separator:ae8b6e6f1af0793bccba0f1454199b931"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a947fc3131e09a4f52be26a43e3f8eb68"><td class="memItemLeft" align="right" valign="top">uint32x4_p&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a947fc3131e09a4f52be26a43e3f8eb68">VectorLoadKey</a> (const byte src[16])</td></tr>
<tr class="memdesc:a947fc3131e09a4f52be26a43e3f8eb68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a vector from a byte array.  <a href="#a947fc3131e09a4f52be26a43e3f8eb68">More...</a><br /></td></tr>
<tr class="separator:a947fc3131e09a4f52be26a43e3f8eb68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa96b4b006ac97d944a20c384301ff75"><td class="memItemLeft" align="right" valign="top">uint32x4_p&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#afa96b4b006ac97d944a20c384301ff75">VectorLoadKey</a> (const word32 src[4])</td></tr>
<tr class="memdesc:afa96b4b006ac97d944a20c384301ff75"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a vector from a 32-bit word array.  <a href="#afa96b4b006ac97d944a20c384301ff75">More...</a><br /></td></tr>
<tr class="separator:afa96b4b006ac97d944a20c384301ff75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae40ac767db23231a69a7dec5c890e7a8"><td class="memItemLeft" align="right" valign="top">uint32x4_p&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#ae40ac767db23231a69a7dec5c890e7a8">VectorLoadKey</a> (int off, const byte src[16])</td></tr>
<tr class="memdesc:ae40ac767db23231a69a7dec5c890e7a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Loads a vector from a byte array.  <a href="#ae40ac767db23231a69a7dec5c890e7a8">More...</a><br /></td></tr>
<tr class="separator:ae40ac767db23231a69a7dec5c890e7a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9104539a4e3be4fc0876af605ca13237"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a9104539a4e3be4fc0876af605ca13237"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a9104539a4e3be4fc0876af605ca13237">VectorStoreBE</a> (const T &amp;src, uint8_t dest[16])</td></tr>
<tr class="memdesc:a9104539a4e3be4fc0876af605ca13237"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores a vector to a byte array.  <a href="#a9104539a4e3be4fc0876af605ca13237">More...</a><br /></td></tr>
<tr class="separator:a9104539a4e3be4fc0876af605ca13237"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a395dee166fa08d2fb02ed9f2e3fd0b40"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a395dee166fa08d2fb02ed9f2e3fd0b40"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a395dee166fa08d2fb02ed9f2e3fd0b40">VectorStoreBE</a> (const T &amp;src, int off, uint8_t dest[16])</td></tr>
<tr class="memdesc:a395dee166fa08d2fb02ed9f2e3fd0b40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores a vector to a byte array.  <a href="#a395dee166fa08d2fb02ed9f2e3fd0b40">More...</a><br /></td></tr>
<tr class="separator:a395dee166fa08d2fb02ed9f2e3fd0b40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99bcff119cc5a4ee2d824abb5a857e9a"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:a99bcff119cc5a4ee2d824abb5a857e9a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a99bcff119cc5a4ee2d824abb5a857e9a">VectorStore</a> (const T &amp;src, byte dest[16])</td></tr>
<tr class="memdesc:a99bcff119cc5a4ee2d824abb5a857e9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores a vector to a byte array.  <a href="#a99bcff119cc5a4ee2d824abb5a857e9a">More...</a><br /></td></tr>
<tr class="separator:a99bcff119cc5a4ee2d824abb5a857e9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed660b93b6b3a7b2f3c682ac1736d599"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:aed660b93b6b3a7b2f3c682ac1736d599"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#aed660b93b6b3a7b2f3c682ac1736d599">VectorStore</a> (const T &amp;src, int off, byte dest[16])</td></tr>
<tr class="memdesc:aed660b93b6b3a7b2f3c682ac1736d599"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores a vector to a byte array.  <a href="#aed660b93b6b3a7b2f3c682ac1736d599">More...</a><br /></td></tr>
<tr class="separator:aed660b93b6b3a7b2f3c682ac1736d599"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22f5eb3c04c38c61723cd626b3d59804"><td class="memTemplParams" colspan="2">template&lt;class T1 , class T2 &gt; </td></tr>
<tr class="memitem:a22f5eb3c04c38c61723cd626b3d59804"><td class="memTemplItemLeft" align="right" valign="top">T1&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a22f5eb3c04c38c61723cd626b3d59804">VectorPermute</a> (const T1 &amp;vec1, const T1 &amp;vec2, const T2 &amp;mask)</td></tr>
<tr class="memdesc:a22f5eb3c04c38c61723cd626b3d59804"><td class="mdescLeft">&#160;</td><td class="mdescRight">Permutes two vectors.  <a href="#a22f5eb3c04c38c61723cd626b3d59804">More...</a><br /></td></tr>
<tr class="separator:a22f5eb3c04c38c61723cd626b3d59804"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0979dccc4c3371cf57ae085d0b25ebe"><td class="memTemplParams" colspan="2">template&lt;class T1 , class T2 &gt; </td></tr>
<tr class="memitem:ae0979dccc4c3371cf57ae085d0b25ebe"><td class="memTemplItemLeft" align="right" valign="top">T1&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#ae0979dccc4c3371cf57ae085d0b25ebe">VectorXor</a> (const T1 &amp;vec1, const T2 &amp;vec2)</td></tr>
<tr class="memdesc:ae0979dccc4c3371cf57ae085d0b25ebe"><td class="mdescLeft">&#160;</td><td class="mdescRight">XOR two vectors.  <a href="#ae0979dccc4c3371cf57ae085d0b25ebe">More...</a><br /></td></tr>
<tr class="separator:ae0979dccc4c3371cf57ae085d0b25ebe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05f5903645fc7d8af7397240cd1bfbac"><td class="memTemplParams" colspan="2">template&lt;class T1 , class T2 &gt; </td></tr>
<tr class="memitem:a05f5903645fc7d8af7397240cd1bfbac"><td class="memTemplItemLeft" align="right" valign="top">T1&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a05f5903645fc7d8af7397240cd1bfbac">VectorAdd</a> (const T1 &amp;vec1, const T2 &amp;vec2)</td></tr>
<tr class="memdesc:a05f5903645fc7d8af7397240cd1bfbac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add two vector.  <a href="#a05f5903645fc7d8af7397240cd1bfbac">More...</a><br /></td></tr>
<tr class="separator:a05f5903645fc7d8af7397240cd1bfbac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab73b86116b8a0520419ad240b760ac39"><td class="memTemplParams" colspan="2">template&lt;unsigned int C, class T1 , class T2 &gt; </td></tr>
<tr class="memitem:ab73b86116b8a0520419ad240b760ac39"><td class="memTemplItemLeft" align="right" valign="top">T1&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#ab73b86116b8a0520419ad240b760ac39">VectorShiftLeft</a> (const T1 &amp;vec1, const T2 &amp;vec2)</td></tr>
<tr class="memdesc:ab73b86116b8a0520419ad240b760ac39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Shift two vectors left.  <a href="#ab73b86116b8a0520419ad240b760ac39">More...</a><br /></td></tr>
<tr class="separator:ab73b86116b8a0520419ad240b760ac39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac2b5eac1e3f964a606de6fa9fffb448"><td class="memTemplParams" colspan="2">template&lt;class T1 , class T2 &gt; </td></tr>
<tr class="memitem:aac2b5eac1e3f964a606de6fa9fffb448"><td class="memTemplItemLeft" align="right" valign="top">T1&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#aac2b5eac1e3f964a606de6fa9fffb448">VectorEncrypt</a> (const T1 &amp;state, const T2 &amp;key)</td></tr>
<tr class="memdesc:aac2b5eac1e3f964a606de6fa9fffb448"><td class="mdescLeft">&#160;</td><td class="mdescRight">One round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> encryption.  <a href="#aac2b5eac1e3f964a606de6fa9fffb448">More...</a><br /></td></tr>
<tr class="separator:aac2b5eac1e3f964a606de6fa9fffb448"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33ec3e5bc4e41573529f77668d107ad3"><td class="memTemplParams" colspan="2">template&lt;class T1 , class T2 &gt; </td></tr>
<tr class="memitem:a33ec3e5bc4e41573529f77668d107ad3"><td class="memTemplItemLeft" align="right" valign="top">T1&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a33ec3e5bc4e41573529f77668d107ad3">VectorEncryptLast</a> (const T1 &amp;state, const T2 &amp;key)</td></tr>
<tr class="memdesc:a33ec3e5bc4e41573529f77668d107ad3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Final round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> encryption.  <a href="#a33ec3e5bc4e41573529f77668d107ad3">More...</a><br /></td></tr>
<tr class="separator:a33ec3e5bc4e41573529f77668d107ad3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac54f4abfcb0e7071a8bcaa98e9a3d324"><td class="memTemplParams" colspan="2">template&lt;class T1 , class T2 &gt; </td></tr>
<tr class="memitem:ac54f4abfcb0e7071a8bcaa98e9a3d324"><td class="memTemplItemLeft" align="right" valign="top">T1&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#ac54f4abfcb0e7071a8bcaa98e9a3d324">VectorDecrypt</a> (const T1 &amp;state, const T2 &amp;key)</td></tr>
<tr class="memdesc:ac54f4abfcb0e7071a8bcaa98e9a3d324"><td class="mdescLeft">&#160;</td><td class="mdescRight">One round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> decryption.  <a href="#ac54f4abfcb0e7071a8bcaa98e9a3d324">More...</a><br /></td></tr>
<tr class="separator:ac54f4abfcb0e7071a8bcaa98e9a3d324"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91950b9a731a0ad0d7e947fc7e27c1ef"><td class="memTemplParams" colspan="2">template&lt;class T1 , class T2 &gt; </td></tr>
<tr class="memitem:a91950b9a731a0ad0d7e947fc7e27c1ef"><td class="memTemplItemLeft" align="right" valign="top">T1&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a91950b9a731a0ad0d7e947fc7e27c1ef">VectorDecryptLast</a> (const T1 &amp;state, const T2 &amp;key)</td></tr>
<tr class="memdesc:a91950b9a731a0ad0d7e947fc7e27c1ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Final round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> decryption.  <a href="#a91950b9a731a0ad0d7e947fc7e27c1ef">More...</a><br /></td></tr>
<tr class="separator:a91950b9a731a0ad0d7e947fc7e27c1ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70aac5018a185abc01b512f4c52ab8ca"><td class="memTemplParams" colspan="2">template&lt;int func, int subfunc, class T &gt; </td></tr>
<tr class="memitem:a70aac5018a185abc01b512f4c52ab8ca"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a70aac5018a185abc01b512f4c52ab8ca">VectorSHA256</a> (const T &amp;vec)</td></tr>
<tr class="memdesc:a70aac5018a185abc01b512f4c52ab8ca"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="class_s_h_a256.html" title="SHA-256 message digest. ">SHA256</a> Sigma functions.  <a href="#a70aac5018a185abc01b512f4c52ab8ca">More...</a><br /></td></tr>
<tr class="separator:a70aac5018a185abc01b512f4c52ab8ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a578b717b4131de3a2a1437d306ac5d80"><td class="memTemplParams" colspan="2">template&lt;int func, int subfunc, class T &gt; </td></tr>
<tr class="memitem:a578b717b4131de3a2a1437d306ac5d80"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="ppc-simd_8h.html#a578b717b4131de3a2a1437d306ac5d80">VectorSHA512</a> (const T &amp;vec)</td></tr>
<tr class="memdesc:a578b717b4131de3a2a1437d306ac5d80"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="class_s_h_a512.html" title="SHA-512 message digest. ">SHA512</a> Sigma functions.  <a href="#a578b717b4131de3a2a1437d306ac5d80">More...</a><br /></td></tr>
<tr class="separator:a578b717b4131de3a2a1437d306ac5d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Support functions for PowerPC and vector operations. </p>
<p>This header provides an agnostic interface into GCC and IBM XL C/C++ compilers modulo their different built-in functions for accessing vector intructions.</p>
<p>The abstractions are necesssary to support back to GCC 4.8. GCC 4.8 and 4.9 are still popular, and they are the default compiler for GCC112, GCC118 and others on the compile farm. Older IBM XL C/C++ compilers also experience it due to lack of <code>vec_xl_be</code> support on some platforms. Modern compilers provide best support and don't need many of the little hacks below. </p><dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition in file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a82251513246cd3f89f6b7a8e465cb9d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82251513246cd3f89f6b7a8e465cb9d2">&#9670;&nbsp;</a></span>ReverseByteArrayLE()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ReverseByteArrayLE </td>
          <td>(</td>
          <td class="paramtype">byte&#160;</td>
          <td class="paramname"><em>src</em>[16]</td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Reverse a 16-byte array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the byte array</td></tr>
  </table>
  </dd>
</dl>
<p>ReverseByteArrayLE reverses a 16-byte array on a little endian system. It does nothing on a big endian system. </p><dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00116">116</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="ab460a63c9a22173e86d5bcf66d8a9c80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab460a63c9a22173e86d5bcf66d8a9c80">&#9670;&nbsp;</a></span>Reverse()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T Reverse </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>src</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Reverse a vector. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the vector</td></tr>
  </table>
  </dd>
</dl>
<p><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80" title="Reverse a vector. ">Reverse()</a> endian swaps the bytes in a vector </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80" title="Reverse a vector. ">Reverse()</a>, <a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b" title="Loads a vector from a byte array. ">VectorLoadBE()</a>, <a class="el" href="ppc-simd_8h.html#a1b6283488beeb26de590e2eaffcbcc56" title="Loads a vector from a byte array. ">VectorLoad()</a>, <a class="el" href="ppc-simd_8h.html#a947fc3131e09a4f52be26a43e3f8eb68" title="Loads a vector from a byte array. ">VectorLoadKey()</a> </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00134">134</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a1dd794d3ddd505c399eb711d41048e7b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1dd794d3ddd505c399eb711d41048e7b">&#9670;&nbsp;</a></span>VectorLoadBE() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint32x4_p VectorLoadBE </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>src</em>[16]</td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Loads a vector from a byte array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the byte array</td></tr>
  </table>
  </dd>
</dl>
<p>Loads a vector in big endian format from a byte array. VectorLoadBE will swap endianess on little endian systems. </p><dl class="section note"><dt>Note</dt><dd><a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b" title="Loads a vector from a byte array. ">VectorLoadBE()</a> does not require an aligned array. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80" title="Reverse a vector. ">Reverse()</a>, <a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b" title="Loads a vector from a byte array. ">VectorLoadBE()</a>, <a class="el" href="ppc-simd_8h.html#a1b6283488beeb26de590e2eaffcbcc56" title="Loads a vector from a byte array. ">VectorLoad()</a>, <a class="el" href="ppc-simd_8h.html#a947fc3131e09a4f52be26a43e3f8eb68" title="Loads a vector from a byte array. ">VectorLoadKey()</a> </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00147">147</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="aca44f35d708f762b86144d12660af80d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca44f35d708f762b86144d12660af80d">&#9670;&nbsp;</a></span>VectorLoadBE() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint32x4_p VectorLoadBE </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>off</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>src</em>[16]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Loads a vector from a byte array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the byte array </td></tr>
    <tr><td class="paramname">off</td><td>offset into the src byte array</td></tr>
  </table>
  </dd>
</dl>
<p>Loads a vector in big endian format from a byte array. VectorLoadBE will swap endianess on little endian systems. </p><dl class="section note"><dt>Note</dt><dd>VectorLoadBE does not require an aligned array. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80" title="Reverse a vector. ">Reverse()</a>, <a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b" title="Loads a vector from a byte array. ">VectorLoadBE()</a>, <a class="el" href="ppc-simd_8h.html#a1b6283488beeb26de590e2eaffcbcc56" title="Loads a vector from a byte array. ">VectorLoad()</a>, <a class="el" href="ppc-simd_8h.html#a947fc3131e09a4f52be26a43e3f8eb68" title="Loads a vector from a byte array. ">VectorLoadKey()</a> </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00168">168</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a1b6283488beeb26de590e2eaffcbcc56"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b6283488beeb26de590e2eaffcbcc56">&#9670;&nbsp;</a></span>VectorLoad() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint32x4_p VectorLoad </td>
          <td>(</td>
          <td class="paramtype">const byte&#160;</td>
          <td class="paramname"><em>src</em>[16]</td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Loads a vector from a byte array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the byte array</td></tr>
  </table>
  </dd>
</dl>
<p>Loads a vector in big endian format from a byte array. VectorLoad will swap endianess on little endian systems. </p><dl class="section note"><dt>Note</dt><dd>VectorLoad does not require an aligned array. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80" title="Reverse a vector. ">Reverse()</a>, <a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b" title="Loads a vector from a byte array. ">VectorLoadBE()</a>, <a class="el" href="ppc-simd_8h.html#a1b6283488beeb26de590e2eaffcbcc56" title="Loads a vector from a byte array. ">VectorLoad()</a>, <a class="el" href="ppc-simd_8h.html#a947fc3131e09a4f52be26a43e3f8eb68" title="Loads a vector from a byte array. ">VectorLoadKey()</a> </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00188">188</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="ae8b6e6f1af0793bccba0f1454199b931"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae8b6e6f1af0793bccba0f1454199b931">&#9670;&nbsp;</a></span>VectorLoad() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint32x4_p VectorLoad </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>off</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte&#160;</td>
          <td class="paramname"><em>src</em>[16]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Loads a vector from a byte array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the byte array </td></tr>
    <tr><td class="paramname">off</td><td>offset into the src byte array</td></tr>
  </table>
  </dd>
</dl>
<p>Loads a vector in big endian format from a byte array. VectorLoad will swap endianess on little endian systems. </p><dl class="section note"><dt>Note</dt><dd>VectorLoad does not require an aligned array. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80" title="Reverse a vector. ">Reverse()</a>, <a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b" title="Loads a vector from a byte array. ">VectorLoadBE()</a>, <a class="el" href="ppc-simd_8h.html#a1b6283488beeb26de590e2eaffcbcc56" title="Loads a vector from a byte array. ">VectorLoad()</a>, <a class="el" href="ppc-simd_8h.html#a947fc3131e09a4f52be26a43e3f8eb68" title="Loads a vector from a byte array. ">VectorLoadKey()</a> </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00201">201</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a947fc3131e09a4f52be26a43e3f8eb68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a947fc3131e09a4f52be26a43e3f8eb68">&#9670;&nbsp;</a></span>VectorLoadKey() <span class="overload">[1/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint32x4_p VectorLoadKey </td>
          <td>(</td>
          <td class="paramtype">const byte&#160;</td>
          <td class="paramname"><em>src</em>[16]</td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Loads a vector from a byte array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the byte array</td></tr>
  </table>
  </dd>
</dl>
<p>Loads a vector from a byte array. VectorLoadKey does not swap endianess on little endian systems. </p><dl class="section note"><dt>Note</dt><dd>VectorLoadKey does not require an aligned array. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80" title="Reverse a vector. ">Reverse()</a>, <a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b" title="Loads a vector from a byte array. ">VectorLoadBE()</a>, <a class="el" href="ppc-simd_8h.html#a1b6283488beeb26de590e2eaffcbcc56" title="Loads a vector from a byte array. ">VectorLoad()</a>, <a class="el" href="ppc-simd_8h.html#a947fc3131e09a4f52be26a43e3f8eb68" title="Loads a vector from a byte array. ">VectorLoadKey()</a> </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00213">213</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="afa96b4b006ac97d944a20c384301ff75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa96b4b006ac97d944a20c384301ff75">&#9670;&nbsp;</a></span>VectorLoadKey() <span class="overload">[2/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint32x4_p VectorLoadKey </td>
          <td>(</td>
          <td class="paramtype">const word32&#160;</td>
          <td class="paramname"><em>src</em>[4]</td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Loads a vector from a 32-bit word array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the 32-bit word array</td></tr>
  </table>
  </dd>
</dl>
<p>Loads a vector from a 32-bit word array. VectorLoadKey does not swap endianess on little endian systems. </p><dl class="section note"><dt>Note</dt><dd>VectorLoadKey does not require an aligned array. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80" title="Reverse a vector. ">Reverse()</a>, <a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b" title="Loads a vector from a byte array. ">VectorLoadBE()</a>, <a class="el" href="ppc-simd_8h.html#a1b6283488beeb26de590e2eaffcbcc56" title="Loads a vector from a byte array. ">VectorLoad()</a>, <a class="el" href="ppc-simd_8h.html#a947fc3131e09a4f52be26a43e3f8eb68" title="Loads a vector from a byte array. ">VectorLoadKey()</a> </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00229">229</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="ae40ac767db23231a69a7dec5c890e7a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae40ac767db23231a69a7dec5c890e7a8">&#9670;&nbsp;</a></span>VectorLoadKey() <span class="overload">[3/3]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">uint32x4_p VectorLoadKey </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>off</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte&#160;</td>
          <td class="paramname"><em>src</em>[16]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Loads a vector from a byte array. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the byte array </td></tr>
    <tr><td class="paramname">off</td><td>offset into the src byte array</td></tr>
  </table>
  </dd>
</dl>
<p>Loads a vector from a byte array. VectorLoadKey does not swap endianess on little endian systems. </p><dl class="section note"><dt>Note</dt><dd>VectorLoadKey does not require an aligned array. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80" title="Reverse a vector. ">Reverse()</a>, <a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b" title="Loads a vector from a byte array. ">VectorLoadBE()</a>, <a class="el" href="ppc-simd_8h.html#a1b6283488beeb26de590e2eaffcbcc56" title="Loads a vector from a byte array. ">VectorLoad()</a>, <a class="el" href="ppc-simd_8h.html#a947fc3131e09a4f52be26a43e3f8eb68" title="Loads a vector from a byte array. ">VectorLoadKey()</a> </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00246">246</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a9104539a4e3be4fc0876af605ca13237"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9104539a4e3be4fc0876af605ca13237">&#9670;&nbsp;</a></span>VectorStoreBE() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void VectorStoreBE </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>dest</em>[16]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Stores a vector to a byte array. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the vector </td></tr>
    <tr><td class="paramname">dest</td><td>the byte array</td></tr>
  </table>
  </dd>
</dl>
<p>Stores a vector in big endian format to a byte array. VectorStoreBE will swap endianess on little endian systems. </p><dl class="section note"><dt>Note</dt><dd>VectorStoreBE does not require an aligned array. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80" title="Reverse a vector. ">Reverse()</a>, <a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b" title="Loads a vector from a byte array. ">VectorLoadBE()</a>, <a class="el" href="ppc-simd_8h.html#a1b6283488beeb26de590e2eaffcbcc56" title="Loads a vector from a byte array. ">VectorLoad()</a>, <a class="el" href="ppc-simd_8h.html#a947fc3131e09a4f52be26a43e3f8eb68" title="Loads a vector from a byte array. ">VectorLoadKey()</a> </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00265">265</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a395dee166fa08d2fb02ed9f2e3fd0b40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a395dee166fa08d2fb02ed9f2e3fd0b40">&#9670;&nbsp;</a></span>VectorStoreBE() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void VectorStoreBE </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>off</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>dest</em>[16]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Stores a vector to a byte array. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the vector </td></tr>
    <tr><td class="paramname">off</td><td>offset into the dest byte array </td></tr>
    <tr><td class="paramname">dest</td><td>the byte array</td></tr>
  </table>
  </dd>
</dl>
<p>Stores a vector in big endian format to a byte array. VectorStoreBE will swap endianess on little endian systems. </p><dl class="section note"><dt>Note</dt><dd>VectorStoreBE does not require an aligned array. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="ppc-simd_8h.html#ab460a63c9a22173e86d5bcf66d8a9c80" title="Reverse a vector. ">Reverse()</a>, <a class="el" href="ppc-simd_8h.html#a1dd794d3ddd505c399eb711d41048e7b" title="Loads a vector from a byte array. ">VectorLoadBE()</a>, <a class="el" href="ppc-simd_8h.html#a1b6283488beeb26de590e2eaffcbcc56" title="Loads a vector from a byte array. ">VectorLoad()</a>, <a class="el" href="ppc-simd_8h.html#a947fc3131e09a4f52be26a43e3f8eb68" title="Loads a vector from a byte array. ">VectorLoadKey()</a> </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00288">288</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a99bcff119cc5a4ee2d824abb5a857e9a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99bcff119cc5a4ee2d824abb5a857e9a">&#9670;&nbsp;</a></span>VectorStore() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void VectorStore </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte&#160;</td>
          <td class="paramname"><em>dest</em>[16]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Stores a vector to a byte array. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the vector </td></tr>
    <tr><td class="paramname">dest</td><td>the byte array</td></tr>
  </table>
  </dd>
</dl>
<p>Stores a vector in big endian format to a byte array. VectorStore will swap endianess on little endian systems. </p><dl class="section note"><dt>Note</dt><dd>VectorStore does not require an aligned array. </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00310">310</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="aed660b93b6b3a7b2f3c682ac1736d599"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed660b93b6b3a7b2f3c682ac1736d599">&#9670;&nbsp;</a></span>VectorStore() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void VectorStore </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>src</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>off</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte&#160;</td>
          <td class="paramname"><em>dest</em>[16]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Stores a vector to a byte array. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">src</td><td>the vector </td></tr>
    <tr><td class="paramname">off</td><td>offset into the dest byte array </td></tr>
    <tr><td class="paramname">dest</td><td>the byte array</td></tr>
  </table>
  </dd>
</dl>
<p>Stores a vector in big endian format to a byte array. VectorStore will swap endianess on little endian systems. </p><dl class="section note"><dt>Note</dt><dd>VectorStore does not require an aligned array. </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00334">334</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a22f5eb3c04c38c61723cd626b3d59804"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22f5eb3c04c38c61723cd626b3d59804">&#9670;&nbsp;</a></span>VectorPermute()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T1 , class T2 &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T1 VectorPermute </td>
          <td>(</td>
          <td class="paramtype">const T1 &amp;&#160;</td>
          <td class="paramname"><em>vec1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T1 &amp;&#160;</td>
          <td class="paramname"><em>vec2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T2 &amp;&#160;</td>
          <td class="paramname"><em>mask</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Permutes two vectors. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T1</td><td>vector type </td></tr>
    <tr><td class="paramname">T2</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">vec1</td><td>the first vector </td></tr>
    <tr><td class="paramname">vec2</td><td>the second vector </td></tr>
    <tr><td class="paramname">mask</td><td>vector mask</td></tr>
  </table>
  </dd>
</dl>
<p>VectorPermute returns a new vector from vec1 and vec2 based on mask. mask is an uint8x16_p type vector. The return vector is the same type as vec1. </p><dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00359">359</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="ae0979dccc4c3371cf57ae085d0b25ebe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0979dccc4c3371cf57ae085d0b25ebe">&#9670;&nbsp;</a></span>VectorXor()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T1 , class T2 &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T1 VectorXor </td>
          <td>(</td>
          <td class="paramtype">const T1 &amp;&#160;</td>
          <td class="paramname"><em>vec1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T2 &amp;&#160;</td>
          <td class="paramname"><em>vec2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>XOR two vectors. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T1</td><td>vector type </td></tr>
    <tr><td class="paramname">T2</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">vec1</td><td>the first vector </td></tr>
    <tr><td class="paramname">vec2</td><td>the second vector</td></tr>
  </table>
  </dd>
</dl>
<p>VectorXor returns a new vector from vec1 and vec2. The return vector is the same type as vec1. </p><dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00373">373</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a05f5903645fc7d8af7397240cd1bfbac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05f5903645fc7d8af7397240cd1bfbac">&#9670;&nbsp;</a></span>VectorAdd()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T1 , class T2 &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T1 VectorAdd </td>
          <td>(</td>
          <td class="paramtype">const T1 &amp;&#160;</td>
          <td class="paramname"><em>vec1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T2 &amp;&#160;</td>
          <td class="paramname"><em>vec2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Add two vector. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T1</td><td>vector type </td></tr>
    <tr><td class="paramname">T2</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">vec1</td><td>the first vector </td></tr>
    <tr><td class="paramname">vec2</td><td>the second vector</td></tr>
  </table>
  </dd>
</dl>
<p>VectorAdd returns a new vector from vec1 and vec2. vec2 is cast to the same type as vec1. The return vector is the same type as vec1. </p><dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00388">388</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="ab73b86116b8a0520419ad240b760ac39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab73b86116b8a0520419ad240b760ac39">&#9670;&nbsp;</a></span>VectorShiftLeft()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;unsigned int C, class T1 , class T2 &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T1 VectorShiftLeft </td>
          <td>(</td>
          <td class="paramtype">const T1 &amp;&#160;</td>
          <td class="paramname"><em>vec1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T2 &amp;&#160;</td>
          <td class="paramname"><em>vec2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Shift two vectors left. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">C</td><td>shift byte count </td></tr>
    <tr><td class="paramname">T1</td><td>vector type </td></tr>
    <tr><td class="paramname">T2</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">vec1</td><td>the first vector </td></tr>
    <tr><td class="paramname">vec2</td><td>the second vector</td></tr>
  </table>
  </dd>
</dl>
<p><a class="el" href="ppc-simd_8h.html#ab73b86116b8a0520419ad240b760ac39" title="Shift two vectors left. ">VectorShiftLeft()</a> concatenates vec1 and vec2 and returns a new vector after shifting the concatenation by the specified number of bytes. Both vec1 and vec2 are cast to uint8x16_p. The return vector is the same type as vec1.</p>
<p>On big endian machines <a class="el" href="ppc-simd_8h.html#ab73b86116b8a0520419ad240b760ac39" title="Shift two vectors left. ">VectorShiftLeft()</a> is <code>vec_sld(a, b, c)</code>. On little endian machines <a class="el" href="ppc-simd_8h.html#ab73b86116b8a0520419ad240b760ac39" title="Shift two vectors left. ">VectorShiftLeft()</a> is translated to <code>vec_sld(b, a, 16-c)</code>. You should always call the function as if on a big endian machine as shown below. </p><pre>
   uint8x16_p r0 = {0};
   uint8x16_p r1 = VectorLoad(ptr);
   uint8x16_p r5 = VectorShiftLeft&lt;12&gt;(r0, r1);
</pre> <dl class="section see"><dt>See also</dt><dd><a href="https://stackoverflow.com/q/46341923/608639">Is vec_sld endian sensitive?</a> on Stack Overflow </dd></dl>
<dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00416">416</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="aac2b5eac1e3f964a606de6fa9fffb448"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac2b5eac1e3f964a606de6fa9fffb448">&#9670;&nbsp;</a></span>VectorEncrypt()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T1 , class T2 &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T1 VectorEncrypt </td>
          <td>(</td>
          <td class="paramtype">const T1 &amp;&#160;</td>
          <td class="paramname"><em>state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T2 &amp;&#160;</td>
          <td class="paramname"><em>key</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>One round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> encryption. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T1</td><td>vector type </td></tr>
    <tr><td class="paramname">T2</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">state</td><td>the state vector </td></tr>
    <tr><td class="paramname">key</td><td>the subkey vector</td></tr>
  </table>
  </dd>
</dl>
<p>VectorEncrypt performs one round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> encryption of state using subkey key. The return vector is the same type as vec1. </p><dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00438">438</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a33ec3e5bc4e41573529f77668d107ad3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33ec3e5bc4e41573529f77668d107ad3">&#9670;&nbsp;</a></span>VectorEncryptLast()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T1 , class T2 &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T1 VectorEncryptLast </td>
          <td>(</td>
          <td class="paramtype">const T1 &amp;&#160;</td>
          <td class="paramname"><em>state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T2 &amp;&#160;</td>
          <td class="paramname"><em>key</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Final round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> encryption. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T1</td><td>vector type </td></tr>
    <tr><td class="paramname">T2</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">state</td><td>the state vector </td></tr>
    <tr><td class="paramname">key</td><td>the subkey vector</td></tr>
  </table>
  </dd>
</dl>
<p>VectorEncryptLast performs the final round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> encryption of state using subkey key. The return vector is the same type as vec1. </p><dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00458">458</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="ac54f4abfcb0e7071a8bcaa98e9a3d324"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac54f4abfcb0e7071a8bcaa98e9a3d324">&#9670;&nbsp;</a></span>VectorDecrypt()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T1 , class T2 &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T1 VectorDecrypt </td>
          <td>(</td>
          <td class="paramtype">const T1 &amp;&#160;</td>
          <td class="paramname"><em>state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T2 &amp;&#160;</td>
          <td class="paramname"><em>key</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>One round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> decryption. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T1</td><td>vector type </td></tr>
    <tr><td class="paramname">T2</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">state</td><td>the state vector </td></tr>
    <tr><td class="paramname">key</td><td>the subkey vector</td></tr>
  </table>
  </dd>
</dl>
<p>VectorDecrypt performs one round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> decryption of state using subkey key. The return vector is the same type as vec1. </p><dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00478">478</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a91950b9a731a0ad0d7e947fc7e27c1ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91950b9a731a0ad0d7e947fc7e27c1ef">&#9670;&nbsp;</a></span>VectorDecryptLast()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T1 , class T2 &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T1 VectorDecryptLast </td>
          <td>(</td>
          <td class="paramtype">const T1 &amp;&#160;</td>
          <td class="paramname"><em>state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const T2 &amp;&#160;</td>
          <td class="paramname"><em>key</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Final round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> decryption. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">T1</td><td>vector type </td></tr>
    <tr><td class="paramname">T2</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">state</td><td>the state vector </td></tr>
    <tr><td class="paramname">key</td><td>the subkey vector</td></tr>
  </table>
  </dd>
</dl>
<p>VectorDecryptLast performs the final round of <a class="el" href="class_a_e_s.html" title="AES block cipher (Rijndael) ">AES</a> decryption of state using subkey key. The return vector is the same type as vec1. </p><dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00498">498</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a70aac5018a185abc01b512f4c52ab8ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70aac5018a185abc01b512f4c52ab8ca">&#9670;&nbsp;</a></span>VectorSHA256()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int func, int subfunc, class T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T VectorSHA256 </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>vec</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><a class="el" href="class_s_h_a256.html" title="SHA-256 message digest. ">SHA256</a> Sigma functions. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">func</td><td>function </td></tr>
    <tr><td class="paramname">subfunc</td><td>sub-function </td></tr>
    <tr><td class="paramname">T</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">vec</td><td>the block to transform</td></tr>
  </table>
  </dd>
</dl>
<p>VectorSHA256 selects sigma0, sigma1, Sigma0, Sigma1 based on func and subfunc. The return vector is the same type as vec. </p><dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00518">518</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
<a id="a578b717b4131de3a2a1437d306ac5d80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a578b717b4131de3a2a1437d306ac5d80">&#9670;&nbsp;</a></span>VectorSHA512()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int func, int subfunc, class T &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">T VectorSHA512 </td>
          <td>(</td>
          <td class="paramtype">const T &amp;&#160;</td>
          <td class="paramname"><em>vec</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p><a class="el" href="class_s_h_a512.html" title="SHA-512 message digest. ">SHA512</a> Sigma functions. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">func</td><td>function </td></tr>
    <tr><td class="paramname">subfunc</td><td>sub-function </td></tr>
    <tr><td class="paramname">T</td><td>vector type </td></tr>
  </table>
  </dd>
</dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">vec</td><td>the block to transform</td></tr>
  </table>
  </dd>
</dl>
<p>VectorSHA512 selects sigma0, sigma1, Sigma0, Sigma1 based on func and subfunc. The return vector is the same type as vec. </p><dl class="section since"><dt>Since</dt><dd>Crypto++ 6.0 </dd></dl>

<p class="definition">Definition at line <a class="el" href="ppc-simd_8h_source.html#l00538">538</a> of file <a class="el" href="ppc-simd_8h_source.html">ppc-simd.h</a>.</p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 16 2018 07:58:11 for Crypto++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>