aboutsummaryrefslogtreecommitdiff
path: root/latest/structarmnn_1_1_q_lstm_queue_descriptor.html
diff options
context:
space:
mode:
authorNikhil Raj <nikhil.raj@arm.com>2024-05-16 09:47:51 +0100
committerNikhil Raj <nikhil.raj@arm.com>2024-05-16 09:47:51 +0100
commit1dc83febfb76d6a770bdf3ba16c4034a970c2320 (patch)
tree66d27e5587e9010f3db26a23a348df844c88f8e6 /latest/structarmnn_1_1_q_lstm_queue_descriptor.html
parent38b600d8abb2c5f7a44511b5deddf441f975d51d (diff)
downloadarmnn-gh-pages.tar.gz
IVGCVSW-8260 Update Doxgen Docu for 24.05gh-pages
Signed-off-by: Nikhil Raj <nikhil.raj@arm.com> Change-Id: If4bc983bf2793a27ded8e26ac2b29523fc1e4711
Diffstat (limited to 'latest/structarmnn_1_1_q_lstm_queue_descriptor.html')
-rw-r--r--latest/structarmnn_1_1_q_lstm_queue_descriptor.html620
1 files changed, 310 insertions, 310 deletions
diff --git a/latest/structarmnn_1_1_q_lstm_queue_descriptor.html b/latest/structarmnn_1_1_q_lstm_queue_descriptor.html
index e831200d9c..36bbdd2709 100644
--- a/latest/structarmnn_1_1_q_lstm_queue_descriptor.html
+++ b/latest/structarmnn_1_1_q_lstm_queue_descriptor.html
@@ -36,7 +36,7 @@
<img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 15rem; margin-top: .5rem; margin-left 13px"/>
<td id="projectalign" style="padding-left: 0.9em;">
<div id="projectname">
- &#160;<span id="projectnumber">24.02</span>
+ &#160;<span id="projectnumber">24.05</span>
</div>
</td>
</tr>
@@ -282,293 +282,293 @@ Additional Inherited Members</h2></td></tr>
</table>
</div><div class="memdoc">
-<p class="definition">Definition at line <a class="el" href="_workload_data_8cpp_source.html#l03146">3146</a> of file <a class="el" href="_workload_data_8cpp_source.html">WorkloadData.cpp</a>.</p>
-<div class="fragment"><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>&#160;{</div>
-<div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>&#160; <span class="keyword">const</span> std::string descriptorName{<span class="stringliteral">&quot;QLstmQueueDescriptor&quot;</span>};</div>
-<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160; </div>
-<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160; <span class="comment">// Validate number of inputs/outputs</span></div>
-<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160; ValidateNumInputs(workloadInfo, descriptorName, 3);</div>
-<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160; ValidateNumOutputs(workloadInfo, descriptorName, 3);</div>
-<div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>&#160; </div>
-<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>&#160; <span class="comment">// Input/output tensor info</span></div>
-<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>&#160; <span class="keyword">auto</span> inputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0];</div>
-<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>&#160; <span class="keyword">auto</span> outputStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[1];</div>
-<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160; <span class="keyword">auto</span> cellStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[2];</div>
-<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>&#160; </div>
-<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160; <span class="keyword">auto</span> outputStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[0];</div>
-<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160; <span class="keyword">auto</span> cellStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[1];</div>
-<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160; <span class="keyword">auto</span> outputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[2];</div>
-<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160; </div>
-<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>&#160; <span class="comment">// Supported types for various tensors in QLSTM</span></div>
-<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>&#160; std::vector&lt;DataType&gt; inputOutputSupportedTypes =</div>
-<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160; {</div>
-<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a></div>
-<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160; };</div>
-<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>&#160; </div>
-<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160; std::vector&lt;DataType&gt; cellStateSupportedTypes =</div>
-<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160; {</div>
-<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div>
-<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160; };</div>
-<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>&#160; </div>
-<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>&#160; std::vector&lt;DataType&gt; weightsSupportedTypes =</div>
-<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>&#160; {</div>
-<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a></div>
-<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160; };</div>
-<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160; </div>
-<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160; std::vector&lt;DataType&gt; layerNormPeepholeWeightsSupportedTypes =</div>
-<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160; {</div>
-<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div>
-<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>&#160; };</div>
-<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>&#160; </div>
-<div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>&#160; std::vector&lt;DataType&gt; biasSupportedTypes =</div>
-<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>&#160; {</div>
-<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a></div>
-<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>&#160; };</div>
-<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>&#160; </div>
-<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>&#160; <span class="comment">// Validate types of input/output tensors</span></div>
-<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>&#160; ValidateDataTypes(inputInfo, inputOutputSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>&#160; ValidateDataTypes(outputStateInInfo, inputOutputSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>&#160; ValidateDataTypes(cellStateInInfo, cellStateSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>&#160; </div>
-<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>&#160; ValidateDataTypes(outputStateOutInfo, inputOutputSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160; ValidateDataTypes(cellStateOutInfo, cellStateSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160; ValidateDataTypes(outputInfo, inputOutputSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160; </div>
-<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160; <span class="comment">// Validate matching types of input/output tensors</span></div>
-<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160; ValidateTensorDataTypesMatch(inputInfo, outputStateInInfo, descriptorName, <span class="stringliteral">&quot;input&quot;</span>, <span class="stringliteral">&quot;outputStateIn&quot;</span>);</div>
-<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160; ValidateTensorDataTypesMatch(outputStateInInfo, outputStateOutInfo, descriptorName,</div>
-<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160; <span class="stringliteral">&quot;outputStateIn&quot;</span>, <span class="stringliteral">&quot;outputStateOut&quot;</span>);</div>
-<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160; ValidateTensorDataTypesMatch(cellStateInInfo, cellStateOutInfo, descriptorName, <span class="stringliteral">&quot;cellStateIn&quot;</span>, <span class="stringliteral">&quot;cellStateOut&quot;</span>);</div>
-<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160; </div>
-<div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160; <span class="comment">// Infer number of batches, number of units, input size and output size from tensor dimensions</span></div>
-<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>&#160; <span class="keyword">const</span> uint32_t numBatches = inputInfo.GetShape()[0];</div>
-<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>&#160; <span class="keyword">const</span> uint32_t inputSize = inputInfo.GetShape()[1];</div>
-<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>&#160; <span class="keyword">const</span> uint32_t outputSize = outputStateInInfo.GetShape()[1];</div>
-<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>&#160; <span class="keyword">const</span> uint32_t numUnits = cellStateInInfo.GetShape()[1];</div>
-<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>&#160; </div>
-<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160; <span class="comment">// Validate number of dimensions and number of elements for input/output tensors</span></div>
-<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputInfo, 2, (numBatches * inputSize), descriptorName + <span class="stringliteral">&quot; input&quot;</span>);</div>
-<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateInInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">&quot; outputStateIn&quot;</span>);</div>
-<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateInInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">&quot; cellStateIn&quot;</span>);</div>
-<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160; </div>
-<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateOutInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">&quot; outputStateOut&quot;</span>);</div>
-<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateOutInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">&quot; cellStateOut&quot;</span>);</div>
-<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">&quot; output&quot;</span>);</div>
-<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>&#160; </div>
-<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>&#160; <span class="comment">// Validate number of dimensions and number of elements for MANDATORY weight tensors</span></div>
-<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>, descriptorName, <span class="stringliteral">&quot;InputToForgetWeights&quot;</span>);</div>
-<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>&#160; <span class="keyword">auto</span> inputToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToForgetWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToForgetWeights&quot;</span>);</div>
-<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>&#160; </div>
-<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>, descriptorName, <span class="stringliteral">&quot;InputToCellWeights&quot;</span>);</div>
-<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>&#160; <span class="keyword">auto</span> inputToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToCellWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToCellWeights&quot;</span>);</div>
-<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>&#160; </div>
-<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>, descriptorName, <span class="stringliteral">&quot;InputToOutputWeights&quot;</span>);</div>
-<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>&#160; <span class="keyword">auto</span> inputToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToOutputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToOutputWeights&quot;</span>);</div>
-<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160; </div>
-<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>, descriptorName, <span class="stringliteral">&quot;RecurrentToForgetWeights&quot;</span>);</div>
-<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>&#160; <span class="keyword">auto</span> recurrentToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToForgetWeightsInfo, 2, (numUnits * outputSize),</div>
-<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>&#160; <span class="stringliteral">&quot; RecurrentToForgetWeights&quot;</span>);</div>
-<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>&#160; </div>
-<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>, descriptorName, <span class="stringliteral">&quot;RecurrentToCellWeights&quot;</span>);</div>
-<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>&#160; <span class="keyword">auto</span> recurrentToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToCellWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">&quot; RecurrentToCellWeights&quot;</span>);</div>
-<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>&#160; </div>
-<div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>, descriptorName, <span class="stringliteral">&quot;RecurrentToOutputWeights&quot;</span>);</div>
-<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160; <span class="keyword">auto</span> recurrentToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToOutputWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">&quot; RecurrentToCellWeights&quot;</span>);</div>
-<div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>&#160; </div>
-<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160; <span class="comment">// Validate data types for MANDATORY weights tensors (all should match each other)</span></div>
-<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>&#160; ValidateDataTypes(inputToForgetWeightsInfo, weightsSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>&#160; </div>
-<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToCellWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;inputToCellWeights&quot;</span>);</div>
-<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToOutputWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;inputToOutputWeights&quot;</span>);</div>
-<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>&#160; </div>
-<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToForgetWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToForgeteights&quot;</span>);</div>
-<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToCellWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToCellWeights&quot;</span>);</div>
-<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToOutputWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToOutputWeights&quot;</span>);</div>
-<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>&#160; </div>
-<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>&#160; <span class="comment">// Validate number of dimensions and number of elements for MANDATORY bias tensors</span></div>
-<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>, descriptorName, <span class="stringliteral">&quot;ForgetGateBias&quot;</span>);</div>
-<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>&#160; <span class="keyword">auto</span> forgetGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetGateBiasInfo, 1, numUnits, <span class="stringliteral">&quot; ForgetGateBias&quot;</span>);</div>
-<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>&#160; </div>
-<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>, descriptorName, <span class="stringliteral">&quot;CellBias&quot;</span>);</div>
-<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>&#160; <span class="keyword">auto</span> cellBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellBiasInfo, 1, numUnits, <span class="stringliteral">&quot; CellBias&quot;</span>);</div>
-<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>&#160; </div>
-<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>, descriptorName, <span class="stringliteral">&quot;OutputGateBias&quot;</span>);</div>
-<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>&#160; <span class="keyword">auto</span> outputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputGateBiasInfo, 1, numUnits, <span class="stringliteral">&quot; OutputGateBias&quot;</span>);</div>
-<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160; </div>
-<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160; <span class="comment">// Validate data types for MANDATORY bias tensors</span></div>
-<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160; ValidateDataTypes(forgetGateBiasInfo, biasSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160; </div>
-<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160; ValidateTensorDataTypesMatch(forgetGateBiasInfo, cellBiasInfo, descriptorName,</div>
-<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160; <span class="stringliteral">&quot;forgetGateBias&quot;</span>, <span class="stringliteral">&quot;cellBias&quot;</span>);</div>
-<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160; ValidateTensorDataTypesMatch(forgetGateBiasInfo, outputGateBiasInfo, descriptorName,</div>
-<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160; <span class="stringliteral">&quot;forgetGateBias&quot;</span>, <span class="stringliteral">&quot;outputGateBias&quot;</span>);</div>
-<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160; </div>
-<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160; <span class="comment">// Validate OPTIONAL params: CIFG (inputToInputWeights, recurrentToInputWeights, inputGateBias)</span></div>
-<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allCifgParamsPresentOrNot = ((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> &amp;&amp;</div>
-<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) ||</div>
-<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160; (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &amp;&amp;</div>
-<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>));</div>
-<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160; </div>
-<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160; <span class="keywordflow">if</span> (!allCifgParamsPresentOrNot)</div>
-<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>&#160; {</div>
-<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div>
-<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160; <span class="stringliteral">&quot;: InputToInputWeights, RecurrentToInputWeights and InputGateBias must either all be present &quot;</span></div>
-<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160; <span class="stringliteral">&quot;(CIFG disabled) or not be present at all (CIFG enabled). m_Parameters.m_CifgEnabled should be &quot;</span></div>
-<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160; <span class="stringliteral">&quot;set appropriately.&quot;</span>);</div>
-<div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>&#160; }</div>
-<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160; </div>
-<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div>
-<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160; {</div>
-<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>&#160; <span class="comment">// Validate number of dimensions and number of elements</span></div>
-<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160; <span class="keyword">auto</span> inputToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToInputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToInputWeights&quot;</span>);</div>
-<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>&#160; </div>
-<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>&#160; <span class="keyword">auto</span> recurrentToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToInputWeightsInfo, 2, (numUnits * outputSize),</div>
-<div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>&#160; <span class="stringliteral">&quot; RecurrentToInputWeights&quot;</span>);</div>
-<div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>&#160; </div>
-<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>&#160; <span class="keyword">auto</span> inputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputGateBiasInfo, 1, numUnits, <span class="stringliteral">&quot; InputGateBias&quot;</span>);</div>
-<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160; </div>
-<div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>&#160; <span class="comment">// Validate data types</span></div>
-<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToInputWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;inputToInputWeights&quot;</span>);</div>
-<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToInputWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToInputWeights&quot;</span>);</div>
-<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160; ValidateTensorDataTypesMatch(forgetGateBiasInfo, inputGateBiasInfo, descriptorName,</div>
-<div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>&#160; <span class="stringliteral">&quot;forgetGateBias&quot;</span>, <span class="stringliteral">&quot;inputGateBias&quot;</span>);</div>
-<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160; }</div>
-<div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>&#160; </div>
-<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160; <span class="comment">// Validate OPTIONAL params: Peephole (cellToInputWeights, cellToForgetWeights, cellToOutputWeights)</span></div>
-<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160; <span class="keywordtype">bool</span> allPeepholeWeightsPresentOrNot =</div>
-<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160; (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div>
-<div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>&#160; &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div>
-<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>&#160; || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div>
-<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160; &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>));</div>
-<div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>&#160; </div>
-<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160; <span class="keywordflow">if</span> (!allPeepholeWeightsPresentOrNot)</div>
-<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160; {</div>
-<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div>
-<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160; <span class="stringliteral">&quot;: CellToInputWeights, CellToForgetWeights and CellToOutputWeights should all be present (Peephole &quot;</span></div>
-<div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>&#160; <span class="stringliteral">&quot;enabled) or not be present at all (Peephole disabled). CellToInputWeights should only be present &quot;</span></div>
-<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>&#160; <span class="stringliteral">&quot;when Peephole is enabled and CIFG is disabled. m_Parameters.m_PeepholeEnabled should be set &quot;</span></div>
-<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160; <span class="stringliteral">&quot;appropriately.&quot;</span>);</div>
-<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160; }</div>
-<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>&#160; </div>
-<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div>
-<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160; {</div>
-<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160; <span class="keyword">auto</span> cellToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToForgetWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellToForgetWeights&quot;</span>);</div>
-<div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>&#160; ValidateDataTypes(cellToForgetWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>&#160; </div>
-<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160; <span class="keyword">auto</span> cellToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToOutputWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellToOutputWeights&quot;</span>);</div>
-<div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160; ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToOutputWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>&#160; <span class="stringliteral">&quot;cellToForgetWeight&quot;</span>, <span class="stringliteral">&quot;cellToOutputWeights&quot;</span>);</div>
-<div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>&#160; </div>
-<div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div>
-<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160; {</div>
-<div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160; <span class="keyword">auto</span> cellToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToInputWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellToInputWeights&quot;</span>);</div>
-<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160; ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToInputWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>&#160; <span class="stringliteral">&quot;cellToForgetWeights&quot;</span>, <span class="stringliteral">&quot;cellToInputWeights&quot;</span>);</div>
-<div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>&#160; }</div>
-<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160; }</div>
-<div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160; </div>
-<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>&#160; <span class="comment">// Validate OPTIONAL params: Layer Norm Weights</span></div>
-<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160; <span class="keywordtype">bool</span> allLayerNormWeightsPresentOrNot =</div>
-<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160; (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a></div>
-<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160; &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div>
-<div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160; || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a></div>
-<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160; &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>));</div>
-<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160; </div>
-<div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160; <span class="keywordflow">if</span> (!allLayerNormWeightsPresentOrNot)</div>
-<div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160; {</div>
-<div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div>
-<div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>&#160; <span class="stringliteral">&quot;: InputLayerNormWeights, ForgetLayerNormWeights, m_OutputLayerNormWeights &quot;</span></div>
-<div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>&#160; <span class="stringliteral">&quot;and CellLayerNormWeights should all be present (Layer Norm enabled) or not &quot;</span></div>
-<div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160; <span class="stringliteral">&quot;be present at all (Layer Norm disabled). InputLayerNormWeights should &quot;</span></div>
-<div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160; <span class="stringliteral">&quot;only be present when Layer Norm is enabled and CIFG is disabled. &quot;</span></div>
-<div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160; <span class="stringliteral">&quot;m_Parameters.m_LayerNormEnabled should be set appropriately.&quot;</span>);</div>
-<div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160; }</div>
-<div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160; </div>
-<div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div>
-<div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160; {</div>
-<div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160; <span class="keyword">auto</span> forgetLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; forgetLayerNormWeights&quot;</span>);</div>
-<div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160; ValidateDataTypes(forgetLayerNormWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>&#160; </div>
-<div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>&#160; <span class="keyword">auto</span> cellLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellLayerNormWeights&quot;</span>);</div>
-<div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>&#160; ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, cellLayerNormWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>&#160; <span class="stringliteral">&quot;forgetLayerNormWeights&quot;</span>, <span class="stringliteral">&quot;cellLayerNormWeights&quot;</span>);</div>
-<div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>&#160; </div>
-<div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>&#160; <span class="keyword">auto</span> outputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; outputLayerNormWeights&quot;</span>);</div>
-<div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>&#160; ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, outputLayerNormWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>&#160; <span class="stringliteral">&quot;forgetLayerNormWeights&quot;</span>, <span class="stringliteral">&quot;outputLayerNormWeights&quot;</span>);</div>
-<div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>&#160; </div>
-<div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div>
-<div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>&#160; {</div>
-<div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>&#160; <span class="keyword">auto</span> inputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; inputLayerNormWeights&quot;</span>);</div>
-<div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>&#160; ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, inputLayerNormWeightsInfo, descriptorName,</div>
-<div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160; <span class="stringliteral">&quot;forgetLayerNormWeights&quot;</span>, <span class="stringliteral">&quot;inputLayerNormWeights&quot;</span>);</div>
-<div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>&#160; }</div>
-<div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>&#160; }</div>
-<div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160; </div>
-<div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>&#160; <span class="comment">// Validate OPTIONAL params: Projection (projectionWeights, projectionBias)</span></div>
-<div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>&#160; <span class="keywordtype">bool</span> correctProjectionTensorsPresent =</div>
-<div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>&#160; ((!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div>
-<div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>&#160; (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div>
-<div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>&#160; (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>));</div>
-<div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>&#160; </div>
-<div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>&#160; <span class="keywordflow">if</span> (!correctProjectionTensorsPresent)</div>
-<div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>&#160; {</div>
-<div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div>
-<div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>&#160; <span class="stringliteral">&quot;: If projection is enabled, ProjectionWeights should be present and &quot;</span></div>
-<div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>&#160; <span class="stringliteral">&quot;ProjectionBias is optional. If projection is disabled, neither &quot;</span></div>
-<div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160; <span class="stringliteral">&quot;ProjectionWeights nor ProjectionBias should be present.&quot;</span>);</div>
-<div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160; }</div>
-<div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160; </div>
-<div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>)</div>
-<div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>&#160; {</div>
-<div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160; <span class="keyword">auto</span> projectionWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">&quot;ProjectionWeights&quot;</span>);</div>
-<div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>&#160; ValidateDataTypes(projectionWeightsInfo, weightsSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>&#160; </div>
-<div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>)</div>
-<div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>&#160; {</div>
-<div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160; <span class="keyword">auto</span> projectionBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
-<div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionBiasInfo, 1, outputSize, <span class="stringliteral">&quot;ProjectionBias&quot;</span>);</div>
-<div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160; ValidateDataTypes(projectionBiasInfo, biasSupportedTypes, descriptorName);</div>
-<div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>&#160; }</div>
-<div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>&#160; </div>
-<div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>&#160; }</div>
-<div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((outputInfo.GetQuantizationScale() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#af8f724af7210b52529216feefa993c98">m_HiddenStateScale</a>) &amp;&amp;</div>
-<div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>&#160; outputInfo.GetQuantizationOffset() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4556cbd764d4848d8ad0637a9eed580d">m_HiddenStateZeroPoint</a>) {</div>
-<div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div>
-<div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>&#160; <span class="stringliteral">&quot;: If projection is disabled, output quantization info (scale, offset) &quot;</span></div>
-<div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>&#160; <span class="stringliteral">&quot;should match HiddenStateScale and HiddenStateZeroPoint.&quot;</span>);</div>
-<div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>&#160; }</div>
-<div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>&#160; </div>
-<div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>&#160;}</div>
+<p class="definition">Definition at line <a class="el" href="_workload_data_8cpp_source.html#l03148">3148</a> of file <a class="el" href="_workload_data_8cpp_source.html">WorkloadData.cpp</a>.</p>
+<div class="fragment"><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160;{</div>
+<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160; <span class="keyword">const</span> std::string descriptorName{<span class="stringliteral">&quot;QLstmQueueDescriptor&quot;</span>};</div>
+<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160; </div>
+<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160; <span class="comment">// Validate number of inputs/outputs</span></div>
+<div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>&#160; ValidateNumInputs(workloadInfo, descriptorName, 3);</div>
+<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>&#160; ValidateNumOutputs(workloadInfo, descriptorName, 3);</div>
+<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>&#160; </div>
+<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>&#160; <span class="comment">// Input/output tensor info</span></div>
+<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160; <span class="keyword">auto</span> inputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[0];</div>
+<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>&#160; <span class="keyword">auto</span> outputStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[1];</div>
+<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160; <span class="keyword">auto</span> cellStateInInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#ac97905bfa0daab357b91df1347600309">m_InputTensorInfos</a>[2];</div>
+<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160; </div>
+<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160; <span class="keyword">auto</span> outputStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[0];</div>
+<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160; <span class="keyword">auto</span> cellStateOutInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[1];</div>
+<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>&#160; <span class="keyword">auto</span> outputInfo = workloadInfo.<a class="code" href="structarmnn_1_1_workload_info.html#a67b178f8a836bc1e52b8de109760adfd">m_OutputTensorInfos</a>[2];</div>
+<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>&#160; </div>
+<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160; <span class="comment">// Supported types for various tensors in QLSTM</span></div>
+<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160; std::vector&lt;DataType&gt; inputOutputSupportedTypes =</div>
+<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160; {</div>
+<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">DataType::QAsymmS8</a></div>
+<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160; };</div>
+<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160; </div>
+<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>&#160; std::vector&lt;DataType&gt; cellStateSupportedTypes =</div>
+<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160; {</div>
+<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div>
+<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>&#160; };</div>
+<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>&#160; </div>
+<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>&#160; std::vector&lt;DataType&gt; weightsSupportedTypes =</div>
+<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160; {</div>
+<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">DataType::QSymmS8</a></div>
+<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160; };</div>
+<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160; </div>
+<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>&#160; std::vector&lt;DataType&gt; layerNormPeepholeWeightsSupportedTypes =</div>
+<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>&#160; {</div>
+<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">DataType::QSymmS16</a></div>
+<div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>&#160; };</div>
+<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>&#160; </div>
+<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>&#160; std::vector&lt;DataType&gt; biasSupportedTypes =</div>
+<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>&#160; {</div>
+<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>&#160; <a class="code" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">DataType::Signed32</a></div>
+<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>&#160; };</div>
+<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>&#160; </div>
+<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>&#160; <span class="comment">// Validate types of input/output tensors</span></div>
+<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>&#160; ValidateDataTypes(inputInfo, inputOutputSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>&#160; ValidateDataTypes(outputStateInInfo, inputOutputSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>&#160; ValidateDataTypes(cellStateInInfo, cellStateSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160; </div>
+<div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160; ValidateDataTypes(outputStateOutInfo, inputOutputSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160; ValidateDataTypes(cellStateOutInfo, cellStateSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160; ValidateDataTypes(outputInfo, inputOutputSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160; </div>
+<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160; <span class="comment">// Validate matching types of input/output tensors</span></div>
+<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160; ValidateTensorDataTypesMatch(inputInfo, outputStateInInfo, descriptorName, <span class="stringliteral">&quot;input&quot;</span>, <span class="stringliteral">&quot;outputStateIn&quot;</span>);</div>
+<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160; ValidateTensorDataTypesMatch(outputStateInInfo, outputStateOutInfo, descriptorName,</div>
+<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160; <span class="stringliteral">&quot;outputStateIn&quot;</span>, <span class="stringliteral">&quot;outputStateOut&quot;</span>);</div>
+<div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160; ValidateTensorDataTypesMatch(cellStateInInfo, cellStateOutInfo, descriptorName, <span class="stringliteral">&quot;cellStateIn&quot;</span>, <span class="stringliteral">&quot;cellStateOut&quot;</span>);</div>
+<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>&#160; </div>
+<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>&#160; <span class="comment">// Infer number of batches, number of units, input size and output size from tensor dimensions</span></div>
+<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>&#160; <span class="keyword">const</span> uint32_t numBatches = inputInfo.GetShape()[0];</div>
+<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>&#160; <span class="keyword">const</span> uint32_t inputSize = inputInfo.GetShape()[1];</div>
+<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>&#160; <span class="keyword">const</span> uint32_t outputSize = outputStateInInfo.GetShape()[1];</div>
+<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160; <span class="keyword">const</span> uint32_t numUnits = cellStateInInfo.GetShape()[1];</div>
+<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160; </div>
+<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160; <span class="comment">// Validate number of dimensions and number of elements for input/output tensors</span></div>
+<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputInfo, 2, (numBatches * inputSize), descriptorName + <span class="stringliteral">&quot; input&quot;</span>);</div>
+<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateInInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">&quot; outputStateIn&quot;</span>);</div>
+<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateInInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">&quot; cellStateIn&quot;</span>);</div>
+<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>&#160; </div>
+<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputStateOutInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">&quot; outputStateOut&quot;</span>);</div>
+<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellStateOutInfo, 2, (numBatches * numUnits), descriptorName + <span class="stringliteral">&quot; cellStateOut&quot;</span>);</div>
+<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputInfo, 2, (numBatches * outputSize), descriptorName + <span class="stringliteral">&quot; output&quot;</span>);</div>
+<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>&#160; </div>
+<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>&#160; <span class="comment">// Validate number of dimensions and number of elements for MANDATORY weight tensors</span></div>
+<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>, descriptorName, <span class="stringliteral">&quot;InputToForgetWeights&quot;</span>);</div>
+<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>&#160; <span class="keyword">auto</span> inputToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aab77f54a037658ca9b2bf9cc8a1fadf1">m_InputToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToForgetWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToForgetWeights&quot;</span>);</div>
+<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>&#160; </div>
+<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>, descriptorName, <span class="stringliteral">&quot;InputToCellWeights&quot;</span>);</div>
+<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>&#160; <span class="keyword">auto</span> inputToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a841439e3b8dc157a7368b19c9ecb7d03">m_InputToCellWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToCellWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToCellWeights&quot;</span>);</div>
+<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>&#160; </div>
+<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>, descriptorName, <span class="stringliteral">&quot;InputToOutputWeights&quot;</span>);</div>
+<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160; <span class="keyword">auto</span> inputToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a17ba1c8bcc71a55a95b2a3913f8cb203">m_InputToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToOutputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToOutputWeights&quot;</span>);</div>
+<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>&#160; </div>
+<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>, descriptorName, <span class="stringliteral">&quot;RecurrentToForgetWeights&quot;</span>);</div>
+<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>&#160; <span class="keyword">auto</span> recurrentToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#adf8571dd1867ee91082bd005f94f2610">m_RecurrentToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToForgetWeightsInfo, 2, (numUnits * outputSize),</div>
+<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>&#160; <span class="stringliteral">&quot; RecurrentToForgetWeights&quot;</span>);</div>
+<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>&#160; </div>
+<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>, descriptorName, <span class="stringliteral">&quot;RecurrentToCellWeights&quot;</span>);</div>
+<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>&#160; <span class="keyword">auto</span> recurrentToCellWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac18c8b8b2039267d8282e91b4162d8aa">m_RecurrentToCellWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToCellWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">&quot; RecurrentToCellWeights&quot;</span>);</div>
+<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160; </div>
+<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>, descriptorName, <span class="stringliteral">&quot;RecurrentToOutputWeights&quot;</span>);</div>
+<div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>&#160; <span class="keyword">auto</span> recurrentToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a4c27716f61bb68e8ea0bd4e8389ba01a">m_RecurrentToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToOutputWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">&quot; RecurrentToCellWeights&quot;</span>);</div>
+<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>&#160; </div>
+<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>&#160; <span class="comment">// Validate data types for MANDATORY weights tensors (all should match each other)</span></div>
+<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>&#160; ValidateDataTypes(inputToForgetWeightsInfo, weightsSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>&#160; </div>
+<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToCellWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;inputToCellWeights&quot;</span>);</div>
+<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToOutputWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;inputToOutputWeights&quot;</span>);</div>
+<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>&#160; </div>
+<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToForgetWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToForgeteights&quot;</span>);</div>
+<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToCellWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToCellWeights&quot;</span>);</div>
+<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToOutputWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToOutputWeights&quot;</span>);</div>
+<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>&#160; </div>
+<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>&#160; <span class="comment">// Validate number of dimensions and number of elements for MANDATORY bias tensors</span></div>
+<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>, descriptorName, <span class="stringliteral">&quot;ForgetGateBias&quot;</span>);</div>
+<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>&#160; <span class="keyword">auto</span> forgetGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a29fa293fffbf9c6f00cd75db1dc0a52a">m_ForgetGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetGateBiasInfo, 1, numUnits, <span class="stringliteral">&quot; ForgetGateBias&quot;</span>);</div>
+<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>&#160; </div>
+<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>, descriptorName, <span class="stringliteral">&quot;CellBias&quot;</span>);</div>
+<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>&#160; <span class="keyword">auto</span> cellBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a6e9593869b82984de198fed27f72cdcf">m_CellBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellBiasInfo, 1, numUnits, <span class="stringliteral">&quot; CellBias&quot;</span>);</div>
+<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>&#160; </div>
+<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>&#160; ValidatePointer(<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>, descriptorName, <span class="stringliteral">&quot;OutputGateBias&quot;</span>);</div>
+<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160; <span class="keyword">auto</span> outputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a5ff4158b1b363b898d0da04c42d37ce0">m_OutputGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputGateBiasInfo, 1, numUnits, <span class="stringliteral">&quot; OutputGateBias&quot;</span>);</div>
+<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160; </div>
+<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160; <span class="comment">// Validate data types for MANDATORY bias tensors</span></div>
+<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160; ValidateDataTypes(forgetGateBiasInfo, biasSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160; </div>
+<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160; ValidateTensorDataTypesMatch(forgetGateBiasInfo, cellBiasInfo, descriptorName,</div>
+<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160; <span class="stringliteral">&quot;forgetGateBias&quot;</span>, <span class="stringliteral">&quot;cellBias&quot;</span>);</div>
+<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160; ValidateTensorDataTypesMatch(forgetGateBiasInfo, outputGateBiasInfo, descriptorName,</div>
+<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160; <span class="stringliteral">&quot;forgetGateBias&quot;</span>, <span class="stringliteral">&quot;outputGateBias&quot;</span>);</div>
+<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>&#160; </div>
+<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160; <span class="comment">// Validate OPTIONAL params: CIFG (inputToInputWeights, recurrentToInputWeights, inputGateBias)</span></div>
+<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160; <span class="keyword">const</span> <span class="keywordtype">bool</span> allCifgParamsPresentOrNot = ((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> &amp;&amp;</div>
+<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) ||</div>
+<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160; (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a> &amp;&amp;</div>
+<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>));</div>
+<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>&#160; </div>
+<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160; <span class="keywordflow">if</span> (!allCifgParamsPresentOrNot)</div>
+<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160; {</div>
+<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div>
+<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160; <span class="stringliteral">&quot;: InputToInputWeights, RecurrentToInputWeights and InputGateBias must either all be present &quot;</span></div>
+<div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>&#160; <span class="stringliteral">&quot;(CIFG disabled) or not be present at all (CIFG enabled). m_Parameters.m_CifgEnabled should be &quot;</span></div>
+<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160; <span class="stringliteral">&quot;set appropriately.&quot;</span>);</div>
+<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160; }</div>
+<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160; </div>
+<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div>
+<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160; {</div>
+<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>&#160; <span class="comment">// Validate number of dimensions and number of elements</span></div>
+<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>&#160; <span class="keyword">auto</span> inputToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ab160eba2493d5fe52185c0986dcb190c">m_InputToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputToInputWeightsInfo, 2, (numUnits * inputSize), <span class="stringliteral">&quot; InputToInputWeights&quot;</span>);</div>
+<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>&#160; </div>
+<div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>&#160; <span class="keyword">auto</span> recurrentToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a299587d4f3fca029492700f3e2585bd8">m_RecurrentToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(recurrentToInputWeightsInfo, 2, (numUnits * outputSize),</div>
+<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>&#160; <span class="stringliteral">&quot; RecurrentToInputWeights&quot;</span>);</div>
+<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160; </div>
+<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160; <span class="keyword">auto</span> inputGateBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a44eb7524badcca9b2073359e3814c98b">m_InputGateBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputGateBiasInfo, 1, numUnits, <span class="stringliteral">&quot; InputGateBias&quot;</span>);</div>
+<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160; </div>
+<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>&#160; <span class="comment">// Validate data types</span></div>
+<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, inputToInputWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;inputToInputWeights&quot;</span>);</div>
+<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160; ValidateTensorDataTypesMatch(inputToForgetWeightsInfo, recurrentToInputWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>&#160; <span class="stringliteral">&quot;inputToForgetWeights&quot;</span>, <span class="stringliteral">&quot;recurrentToInputWeights&quot;</span>);</div>
+<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160; ValidateTensorDataTypesMatch(forgetGateBiasInfo, inputGateBiasInfo, descriptorName,</div>
+<div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>&#160; <span class="stringliteral">&quot;forgetGateBias&quot;</span>, <span class="stringliteral">&quot;inputGateBias&quot;</span>);</div>
+<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160; }</div>
+<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160; </div>
+<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160; <span class="comment">// Validate OPTIONAL params: Peephole (cellToInputWeights, cellToForgetWeights, cellToOutputWeights)</span></div>
+<div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>&#160; <span class="keywordtype">bool</span> allPeepholeWeightsPresentOrNot =</div>
+<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>&#160; (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div>
+<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160; &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div>
+<div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>&#160; || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a></div>
+<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160; &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>));</div>
+<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160; </div>
+<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160; <span class="keywordflow">if</span> (!allPeepholeWeightsPresentOrNot)</div>
+<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160; {</div>
+<div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div>
+<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>&#160; <span class="stringliteral">&quot;: CellToInputWeights, CellToForgetWeights and CellToOutputWeights should all be present (Peephole &quot;</span></div>
+<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160; <span class="stringliteral">&quot;enabled) or not be present at all (Peephole disabled). CellToInputWeights should only be present &quot;</span></div>
+<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160; <span class="stringliteral">&quot;when Peephole is enabled and CIFG is disabled. m_Parameters.m_PeepholeEnabled should be set &quot;</span></div>
+<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>&#160; <span class="stringliteral">&quot;appropriately.&quot;</span>);</div>
+<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160; }</div>
+<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160; </div>
+<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">m_PeepholeEnabled</a>)</div>
+<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160; {</div>
+<div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>&#160; <span class="keyword">auto</span> cellToForgetWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a20c10fcb26657477377d07b7b1e13120">m_CellToForgetWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToForgetWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellToForgetWeights&quot;</span>);</div>
+<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160; ValidateDataTypes(cellToForgetWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160; </div>
+<div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160; <span class="keyword">auto</span> cellToOutputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aa09f7bdb9fd0d06b6386e412a4e72dd6">m_CellToOutputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToOutputWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellToOutputWeights&quot;</span>);</div>
+<div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>&#160; ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToOutputWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>&#160; <span class="stringliteral">&quot;cellToForgetWeight&quot;</span>, <span class="stringliteral">&quot;cellToOutputWeights&quot;</span>);</div>
+<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160; </div>
+<div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div>
+<div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160; {</div>
+<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160; <span class="keyword">auto</span> cellToInputWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">m_CellToInputWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellToInputWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellToInputWeights&quot;</span>);</div>
+<div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>&#160; ValidateTensorDataTypesMatch(cellToForgetWeightsInfo, cellToInputWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160; <span class="stringliteral">&quot;cellToForgetWeights&quot;</span>, <span class="stringliteral">&quot;cellToInputWeights&quot;</span>);</div>
+<div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160; }</div>
+<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>&#160; }</div>
+<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160; </div>
+<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160; <span class="comment">// Validate OPTIONAL params: Layer Norm Weights</span></div>
+<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160; <span class="keywordtype">bool</span> allLayerNormWeightsPresentOrNot =</div>
+<div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160; (((<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> || <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>) &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a></div>
+<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160; &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div>
+<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160; || (!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a></div>
+<div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160; &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>));</div>
+<div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160; </div>
+<div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160; <span class="keywordflow">if</span> (!allLayerNormWeightsPresentOrNot)</div>
+<div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>&#160; {</div>
+<div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div>
+<div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160; <span class="stringliteral">&quot;: InputLayerNormWeights, ForgetLayerNormWeights, m_OutputLayerNormWeights &quot;</span></div>
+<div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160; <span class="stringliteral">&quot;and CellLayerNormWeights should all be present (Layer Norm enabled) or not &quot;</span></div>
+<div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160; <span class="stringliteral">&quot;be present at all (Layer Norm disabled). InputLayerNormWeights should &quot;</span></div>
+<div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160; <span class="stringliteral">&quot;only be present when Layer Norm is enabled and CIFG is disabled. &quot;</span></div>
+<div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160; <span class="stringliteral">&quot;m_Parameters.m_LayerNormEnabled should be set appropriately.&quot;</span>);</div>
+<div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160; }</div>
+<div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160; </div>
+<div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">m_LayerNormEnabled</a>)</div>
+<div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160; {</div>
+<div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160; <span class="keyword">auto</span> forgetLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ad9442e26aa79f896da5f404ab825a9c8">m_ForgetLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(forgetLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; forgetLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>&#160; ValidateDataTypes(forgetLayerNormWeightsInfo, layerNormPeepholeWeightsSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>&#160; </div>
+<div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>&#160; <span class="keyword">auto</span> cellLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">m_CellLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(cellLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; cellLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>&#160; ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, cellLayerNormWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>&#160; <span class="stringliteral">&quot;forgetLayerNormWeights&quot;</span>, <span class="stringliteral">&quot;cellLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>&#160; </div>
+<div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>&#160; <span class="keyword">auto</span> outputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a0e0f66bd03c88f3d2dc666f581d3cf12">m_OutputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(outputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; outputLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>&#160; ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, outputLayerNormWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>&#160; <span class="stringliteral">&quot;forgetLayerNormWeights&quot;</span>, <span class="stringliteral">&quot;outputLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>&#160; </div>
+<div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#ad474e5c51a0b194ef32e812b86c0cbdb">m_CifgEnabled</a>)</div>
+<div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>&#160; {</div>
+<div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>&#160; <span class="keyword">auto</span> inputLayerNormWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a1dbad32cad5c0437e1272f59fedf52ea">m_InputLayerNormWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(inputLayerNormWeightsInfo, 1, numUnits, <span class="stringliteral">&quot; inputLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>&#160; ValidateTensorDataTypesMatch(forgetLayerNormWeightsInfo, inputLayerNormWeightsInfo, descriptorName,</div>
+<div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>&#160; <span class="stringliteral">&quot;forgetLayerNormWeights&quot;</span>, <span class="stringliteral">&quot;inputLayerNormWeights&quot;</span>);</div>
+<div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160; }</div>
+<div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>&#160; }</div>
+<div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>&#160; </div>
+<div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>&#160; <span class="comment">// Validate OPTIONAL params: Projection (projectionWeights, projectionBias)</span></div>
+<div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>&#160; <span class="keywordtype">bool</span> correctProjectionTensorsPresent =</div>
+<div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>&#160; ((!<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div>
+<div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>&#160; (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; !<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>) ||</div>
+<div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>&#160; (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a> &amp;&amp; <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a> &amp;&amp; <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>));</div>
+<div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>&#160; </div>
+<div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>&#160; <span class="keywordflow">if</span> (!correctProjectionTensorsPresent)</div>
+<div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>&#160; {</div>
+<div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div>
+<div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160; <span class="stringliteral">&quot;: If projection is enabled, ProjectionWeights should be present and &quot;</span></div>
+<div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160; <span class="stringliteral">&quot;ProjectionBias is optional. If projection is disabled, neither &quot;</span></div>
+<div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160; <span class="stringliteral">&quot;ProjectionWeights nor ProjectionBias should be present.&quot;</span>);</div>
+<div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160; }</div>
+<div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>&#160; </div>
+<div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a6c9de81fc65b3c4924cab11907075a17">m_ProjectionEnabled</a>)</div>
+<div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>&#160; {</div>
+<div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>&#160; <span class="keyword">auto</span> projectionWeightsInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#a3ead2ef8da00b2709d561d85996fc513">m_ProjectionWeights</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionWeightsInfo, 2, (numUnits * outputSize), <span class="stringliteral">&quot;ProjectionWeights&quot;</span>);</div>
+<div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>&#160; ValidateDataTypes(projectionWeightsInfo, weightsSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>&#160; </div>
+<div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>)</div>
+<div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160; {</div>
+<div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160; <span class="keyword">auto</span> projectionBiasInfo = <a class="code" href="structarmnn_1_1_q_lstm_queue_descriptor.html#ac668b31de6fb0f19d4c793d5ed3c3316">m_ProjectionBias</a>-&gt;<a class="code" href="classarmnn_1_1_const_tensor_handle.html#a66e8f43a5b42b500871ed96e15419567">GetTensorInfo</a>();</div>
+<div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>&#160; <a class="code" href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">ValidateTensorNumDimNumElem</a>(projectionBiasInfo, 1, outputSize, <span class="stringliteral">&quot;ProjectionBias&quot;</span>);</div>
+<div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>&#160; ValidateDataTypes(projectionBiasInfo, biasSupportedTypes, descriptorName);</div>
+<div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>&#160; }</div>
+<div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>&#160; </div>
+<div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>&#160; }</div>
+<div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((outputInfo.GetQuantizationScale() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#af8f724af7210b52529216feefa993c98">m_HiddenStateScale</a>) &amp;&amp;</div>
+<div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>&#160; outputInfo.GetQuantizationOffset() != <a class="code" href="structarmnn_1_1_queue_descriptor_with_parameters.html#aad91b9bbf7aa365d304febe79a3d1333">m_Parameters</a>.<a class="code" href="structarmnn_1_1_q_lstm_descriptor.html#a4556cbd764d4848d8ad0637a9eed580d">m_HiddenStateZeroPoint</a>) {</div>
+<div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>&#160; <span class="keywordflow">throw</span> <a class="code" href="classarmnn_1_1_invalid_argument_exception.html">InvalidArgumentException</a>(descriptorName +</div>
+<div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>&#160; <span class="stringliteral">&quot;: If projection is disabled, output quantization info (scale, offset) &quot;</span></div>
+<div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>&#160; <span class="stringliteral">&quot;should match HiddenStateScale and HiddenStateZeroPoint.&quot;</span>);</div>
+<div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>&#160; }</div>
+<div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>&#160; </div>
+<div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>&#160;}</div>
</div><!-- fragment -->
-<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00478">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00461">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8hpp_source.html#l00193">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_handle_8hpp_source.html#l00040">ConstTensorHandle::GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00602">QLstmQueueDescriptor::m_CellBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00608">QLstmQueueDescriptor::m_CellLayerNormWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00598">QLstmQueueDescriptor::m_CellToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00597">QLstmQueueDescriptor::m_CellToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00599">QLstmQueueDescriptor::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01418">QLstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00601">QLstmQueueDescriptor::m_ForgetGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00607">QLstmQueueDescriptor::m_ForgetLayerNormWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01436">QLstmDescriptor::m_HiddenStateScale</a>, <a class="el" href="_descriptors_8hpp_source.html#l01434">QLstmDescriptor::m_HiddenStateZeroPoint</a>, <a class="el" href="_workload_data_8hpp_source.html#l00600">QLstmQueueDescriptor::m_InputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00606">QLstmQueueDescriptor::m_InputLayerNormWeights</a>, <a class="el" href="_workload_info_8hpp_source.html#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="_workload_data_8hpp_source.html#l00591">QLstmQueueDescriptor::m_InputToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00590">QLstmQueueDescriptor::m_InputToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00589">QLstmQueueDescriptor::m_InputToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00592">QLstmQueueDescriptor::m_InputToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01424">QLstmDescriptor::m_LayerNormEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00603">QLstmQueueDescriptor::m_OutputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00609">QLstmQueueDescriptor::m_OutputLayerNormWeights</a>, <a class="el" href="_workload_info_8hpp_source.html#l00019">WorkloadInfo::m_OutputTensorInfos</a>, <a class="el" href="_workload_data_8hpp_source.html#l00066">QueueDescriptorWithParameters&lt; QLstmDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l01420">QLstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00605">QLstmQueueDescriptor::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l01422">QLstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00604">QLstmQueueDescriptor::m_ProjectionWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00595">QLstmQueueDescriptor::m_RecurrentToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00594">QLstmQueueDescriptor::m_RecurrentToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00593">QLstmQueueDescriptor::m_RecurrentToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00596">QLstmQueueDescriptor::m_RecurrentToOutputWeights</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::Signed32</a>, and <a class="el" href="_workload_data_8cpp_source.html#l00435">QueueDescriptor::ValidateTensorNumDimNumElem()</a>.</p>
+<p class="reference">References <a class="el" href="_tensor_8cpp_source.html#l00482">TensorInfo::GetQuantizationOffset()</a>, <a class="el" href="_tensor_8cpp_source.html#l00461">TensorInfo::GetQuantizationScale()</a>, <a class="el" href="_tensor_8hpp_source.html#l00193">TensorInfo::GetShape()</a>, <a class="el" href="_tensor_handle_8hpp_source.html#l00040">ConstTensorHandle::GetTensorInfo()</a>, <a class="el" href="_workload_data_8hpp_source.html#l00602">QLstmQueueDescriptor::m_CellBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00608">QLstmQueueDescriptor::m_CellLayerNormWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00598">QLstmQueueDescriptor::m_CellToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00597">QLstmQueueDescriptor::m_CellToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00599">QLstmQueueDescriptor::m_CellToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01418">QLstmDescriptor::m_CifgEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00601">QLstmQueueDescriptor::m_ForgetGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00607">QLstmQueueDescriptor::m_ForgetLayerNormWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01436">QLstmDescriptor::m_HiddenStateScale</a>, <a class="el" href="_descriptors_8hpp_source.html#l01434">QLstmDescriptor::m_HiddenStateZeroPoint</a>, <a class="el" href="_workload_data_8hpp_source.html#l00600">QLstmQueueDescriptor::m_InputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00606">QLstmQueueDescriptor::m_InputLayerNormWeights</a>, <a class="el" href="_workload_info_8hpp_source.html#l00018">WorkloadInfo::m_InputTensorInfos</a>, <a class="el" href="_workload_data_8hpp_source.html#l00591">QLstmQueueDescriptor::m_InputToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00590">QLstmQueueDescriptor::m_InputToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00589">QLstmQueueDescriptor::m_InputToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00592">QLstmQueueDescriptor::m_InputToOutputWeights</a>, <a class="el" href="_descriptors_8hpp_source.html#l01424">QLstmDescriptor::m_LayerNormEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00603">QLstmQueueDescriptor::m_OutputGateBias</a>, <a class="el" href="_workload_data_8hpp_source.html#l00609">QLstmQueueDescriptor::m_OutputLayerNormWeights</a>, <a class="el" href="_workload_info_8hpp_source.html#l00019">WorkloadInfo::m_OutputTensorInfos</a>, <a class="el" href="_workload_data_8hpp_source.html#l00066">QueueDescriptorWithParameters&lt; QLstmDescriptor &gt;::m_Parameters</a>, <a class="el" href="_descriptors_8hpp_source.html#l01420">QLstmDescriptor::m_PeepholeEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00605">QLstmQueueDescriptor::m_ProjectionBias</a>, <a class="el" href="_descriptors_8hpp_source.html#l01422">QLstmDescriptor::m_ProjectionEnabled</a>, <a class="el" href="_workload_data_8hpp_source.html#l00604">QLstmQueueDescriptor::m_ProjectionWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00595">QLstmQueueDescriptor::m_RecurrentToCellWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00594">QLstmQueueDescriptor::m_RecurrentToForgetWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00593">QLstmQueueDescriptor::m_RecurrentToInputWeights</a>, <a class="el" href="_workload_data_8hpp_source.html#l00596">QLstmQueueDescriptor::m_RecurrentToOutputWeights</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9d02ea768c081d4bdb2b7cab0b3f510d">armnn::QAsymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a053c769dcf82d66ef326c86980c02ba7">armnn::QSymmS16</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6a9945327825b115e93a3b89f4302e76db">armnn::QSymmS8</a>, <a class="el" href="namespacearmnn.html#ad8ed01ff3ff33333d8e19db4d2818bb6accedffbc6e5308e33d3843e8bdc0dad7">armnn::Signed32</a>, and <a class="el" href="_workload_data_8cpp_source.html#l00436">QueueDescriptor::ValidateTensorNumDimNumElem()</a>.</p>
</div>
</div>
@@ -587,7 +587,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00602">602</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -605,7 +605,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00608">608</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -623,7 +623,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00598">598</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -641,7 +641,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00597">597</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -659,7 +659,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00599">599</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -677,7 +677,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00601">601</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -695,7 +695,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00607">607</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -713,7 +713,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00600">600</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -731,7 +731,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00606">606</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -749,7 +749,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00591">591</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -767,7 +767,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00590">590</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -785,7 +785,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00589">589</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -803,7 +803,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00592">592</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -821,7 +821,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00603">603</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -839,7 +839,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00609">609</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -857,7 +857,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00605">605</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -875,7 +875,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00604">604</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -893,7 +893,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00595">595</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -911,7 +911,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00594">594</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -929,7 +929,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00593">593</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -947,7 +947,7 @@ Additional Inherited Members</h2></td></tr>
<p class="definition">Definition at line <a class="el" href="_workload_data_8hpp_source.html#l00596">596</a> of file <a class="el" href="_workload_data_8hpp_source.html">WorkloadData.hpp</a>.</p>
-<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03146">QLstmQueueDescriptor::Validate()</a>.</p>
+<p class="reference">Referenced by <a class="el" href="_q_lstm_layer_8cpp_source.html#l00022">QLstmLayer::CreateWorkload()</a>, and <a class="el" href="_workload_data_8cpp_source.html#l03148">QLstmQueueDescriptor::Validate()</a>.</p>
</div>
</div>
@@ -989,7 +989,7 @@ Additional Inherited Members</h2></td></tr>
<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_html_a951b7c90b862138071a298065f16be61"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.html#a951b7c90b862138071a298065f16be61">armnn::QLstmQueueDescriptor::m_CellToInputWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellToInputWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00597">WorkloadData.hpp:597</a></div></div>
<div class="ttc" id="astructarmnn_1_1_q_lstm_descriptor_html_a4a8ec49f130084445d44297549254780"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.html#a4a8ec49f130084445d44297549254780">armnn::QLstmDescriptor::m_LayerNormEnabled</a></div><div class="ttdeci">bool m_LayerNormEnabled</div><div class="ttdoc">Enable/disable layer normalization.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l01424">Descriptors.hpp:1424</a></div></div>
<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_html_a6e9593869b82984de198fed27f72cdcf"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.html#a6e9593869b82984de198fed27f72cdcf">armnn::QLstmQueueDescriptor::m_CellBias</a></div><div class="ttdeci">const ConstTensorHandle * m_CellBias</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00602">WorkloadData.hpp:602</a></div></div>
-<div class="ttc" id="astructarmnn_1_1_queue_descriptor_html_a8a30194ce14c088a2625ccc8c3e9d155"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">armnn::QueueDescriptor::ValidateTensorNumDimNumElem</a></div><div class="ttdeci">void ValidateTensorNumDimNumElem(const TensorInfo &amp;tensorInfo, unsigned int numDimension, unsigned int numElements, std::string const &amp;tensorName) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.html#l00435">WorkloadData.cpp:435</a></div></div>
+<div class="ttc" id="astructarmnn_1_1_queue_descriptor_html_a8a30194ce14c088a2625ccc8c3e9d155"><div class="ttname"><a href="structarmnn_1_1_queue_descriptor.html#a8a30194ce14c088a2625ccc8c3e9d155">armnn::QueueDescriptor::ValidateTensorNumDimNumElem</a></div><div class="ttdeci">void ValidateTensorNumDimNumElem(const TensorInfo &amp;tensorInfo, unsigned int numDimension, unsigned int numElements, std::string const &amp;tensorName) const</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8cpp_source.html#l00436">WorkloadData.cpp:436</a></div></div>
<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_html_a841439e3b8dc157a7368b19c9ecb7d03"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.html#a841439e3b8dc157a7368b19c9ecb7d03">armnn::QLstmQueueDescriptor::m_InputToCellWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_InputToCellWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00591">WorkloadData.hpp:591</a></div></div>
<div class="ttc" id="astructarmnn_1_1_q_lstm_descriptor_html_a2837b4396f20c956952d1a7286cab5f8"><div class="ttname"><a href="structarmnn_1_1_q_lstm_descriptor.html#a2837b4396f20c956952d1a7286cab5f8">armnn::QLstmDescriptor::m_PeepholeEnabled</a></div><div class="ttdeci">bool m_PeepholeEnabled</div><div class="ttdoc">Enable/disable peephole.</div><div class="ttdef"><b>Definition:</b> <a href="_descriptors_8hpp_source.html#l01420">Descriptors.hpp:1420</a></div></div>
<div class="ttc" id="astructarmnn_1_1_q_lstm_queue_descriptor_html_aeef6f1ac3efad8ec8b0a7118652b64c9"><div class="ttname"><a href="structarmnn_1_1_q_lstm_queue_descriptor.html#aeef6f1ac3efad8ec8b0a7118652b64c9">armnn::QLstmQueueDescriptor::m_CellLayerNormWeights</a></div><div class="ttdeci">const ConstTensorHandle * m_CellLayerNormWeights</div><div class="ttdef"><b>Definition:</b> <a href="_workload_data_8hpp_source.html#l00608">WorkloadData.hpp:608</a></div></div>
@@ -998,7 +998,7 @@ Additional Inherited Members</h2></td></tr>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacearmnn.html">armnn</a></li><li class="navelem"><a class="el" href="structarmnn_1_1_q_lstm_queue_descriptor.html">QLstmQueueDescriptor</a></li>
- <li class="footer">Generated on Wed Feb 14 2024 16:36:24 for Arm NN by
+ <li class="footer">Generated on Thu May 16 2024 09:31:58 for Arm NN by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
</ul>