(old) | htmldiff from- | no new file |
Load Tag Vector loads an implementation defined number of Allocation Tags from the naturally aligned array of 16 Allocation Tags which includes a tag whose address is the address in the source register, and writes them to the destination register. Bits of the destination register which do not store a tag are set to 0. The Allocation Tag at the address in the source register is always loaded, and the first source register is updated to the address of the first Allocation Tag at an address higher than the original address that was not loaded.
This instruction is undefined at EL0.
This instruction generates an Unchecked access.
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Xn | Xt |
integer t = UInt(Xt); integer n = UInt(Xn); boolean wback = TRUE; boolean wb_unknown = FALSE;
<Xt> | Is the 64-bit name of the general-purpose register to be transferred, encoded in the "Xt" field. |
<Xn|SP> | Is the 64-bit name of the general-purpose base register or stack pointer, encoded in the "Xn" field. |
bits(64) data = Zeros(64); bits(64) address; integer count; if n == t then c = ConstrainUnpredictable(Unpredictable_WBOVERLAPLD); assert c IN {Constraint_WBSUPPRESS, Constraint_UNKNOWN, Constraint_UNDEF, Constraint_NOP}; case c of when Constraint_WBSUPPRESS wback = FALSE; // writeback is suppressed when Constraint_UNKNOWN wb_unknown = TRUE; // writeback is UNKNOWN when Constraint_UNDEF UnallocatedEncoding(); when Constraint_NOP EndOfInstruction(); if n == 31 then CheckSPAlignment(); address = SP[]; else address = X[n]; (address, count) = ImpDefTagArrayStartAndCount(address); for i = 0 to count-1 integer index = UInt(address<LOG2_TAG_GRANULE+3:LOG2_TAG_GRANULE>); bits(4) tag = MemTag[address]; data<(index*4)+3:(index*4)> = tag; address = address + TAG_GRANULE; X[t] = data; if wback then if wb_unknown then address = bits(64) UNKNOWN; if n == 31 then SP[] = address; else X[n] = address;
Internal version only: isa v30.3, AdvSIMD v27.04, pseudocode v85-xml-00bet9_rc1_1, sve v8.5-00bet9_rc1 ; Build timestamp: 2018-12-12T11:50
Copyright © 2010-2018 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.
(old) | htmldiff from- | no new file |