MOVNTDQA—Load Double Quadword Non-Temporal Aligned HintInstruction Operand Encoding1DescriptionMOVNTDQA loads a double quadword from the source operand (second operand) to the destination operand (first operand) using a non-temporal hint if the memory source is WC (write combining) memory type. For WC memory type, the nontemporal hint may be implemented by loading a temporary internal buffer with the equivalent of an aligned cache line without filling this data to the cache. Any memory-type aliased lines in the cache will be snooped and flushed. Subsequent MOVNTDQA reads to unread portions of the WC cache line will receive data from the temporary internal buffer if data is available. The temporary internal buffer may be flushed by the processor at any time for any reason, for example:• A load operation other than a MOVNTDQA which references memory already resident in a temporary internal buffer.• A non-WC reference to memory already resident in a temporary internal buffer.• Interleaving of reads and writes to a single temporary internal buffer.• Repeated (V)MOVNTDQA loads of a particular 16-byte item in a streaming line.• Certain micro-architectural conditions including resource shortages, detection ofa mis-speculation condition, and various fault conditionsThe non-temporal hint is implemented by using a write combining (WC) memory type protocol when reading the data from memory. Using this protocol, the processor does not read the data into the cache hierarchy, nor does it fetch the corresponding cache line from memory into the cache hierarchy. The memory type of the region being read can override the non-temporal hint, if the memory address specified for the non-temporal read is not a WC memory region. Information on non-temporal reads and writes can be found in “Caching of Temporal vs. Non-Temporal Data” in Chapter 10 in the Intel® 64 and IA-32 Architecture Software Developer’s Manual, Volume 3A.Because the WC protocol uses a weakly-ordered memory consistency model, a fencing operation implemented with a MFENCE instruction should be used in conjunction with MOVNTDQA instructions if multiple processors might use different memory types for the referenced memory locations or to synchronize reads of a processor with writes by other agents in the system. A processor’s implementation of the streaming load hint does not override the effective memory type, but the implementation of the hint is processor dependent. For example, a processor implementa-tion may choose to ignore the hint and process the instruction as a normal MOVDQA for any memory type. Alter-Opcode/InstructionOp / En64/32 bit Mode SupportCPUID Feature FlagDescription66 0F 38 2A /rMOVNTDQA xmm1, m128AV/VSSE4_1Move double quadword from m128 to xmm1 using non-temporal hint if WC memory type.VEX.128.66.0F38.WIG 2A /rVMOVNTDQA xmm1, m128AV/VAVXMove double quadword from m128 to xmm using non-temporal hint if WC memory type.VEX.256.66.0F38.WIG 2A /rVMOVNTDQA ymm1, m256AV/VAVX2Move 256-bit data from m256 to ymm using non-temporal hint if WC memory type.EVEX.128.66.0F38.W0 2A /rVMOVNTDQA xmm1, m128BV/VAVX512VLAVX512FMove 128-bit data from m128 to xmm using non-temporal hint if WC memory type.EVEX.256.66.0F38.W0 2A /rVMOVNTDQA ymm1, m256BV/VAVX512VLAVX512FMove 256-bit data from m256 to ymm using non-temporal hint if WC memory type.EVEX.512.66.0F38.W0 2A /rVMOVNTDQA zmm1, m512BV/VAVX512FMove 512-bit data from m512 to zmm using non-temporal hint if WC memory type.Op/EnTuple TypeOperand 1Operand 2Operand 3Operand 4ANAModRM:reg (w)ModRM:r/m (r)NANABFull MemModRM:reg (w)ModRM:r/m (r)NANA1.ModRM.MOD != 011B
This UNOFFICIAL reference was generated from the official Intel® 64 and IA-32 Architectures Software Developer’s Manual by a dumb script. There is no guarantee that some parts aren't mangled or broken and is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.