В 32-битном режиме (ARMv7 и более ранних, а не ARMv8) каждый псевдоним каждого регистра Q 2 d
регистров / 4 s
регистров.Например, q1
- это d2..3
, а также s4..7
.Вы можете скопировать их отдельно.
Я не уверен, есть ли штраф за слияние за запись в регистр s
и последующее чтение содержащего регистра q
на любых ARM uarches.
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0002a/ch01s03s02.html имеет карту регистров: только q0..q7 имеют s
-регистрации псевдонимов.В q8..q15 есть только d
регистровые компоненты.(т.е. есть только 32 s
регистры, 32 d
регистры и 16 q
регистры, поэтому d16..31
не имеют своих подкомпонентов, адресуемых отдельно, а q8..15
имеет только 64-битные элементы dwordвыставляется отдельно).
Если нет лучшего способа сделать это, сохраните векторы, которые вам нужно разрезать и нарезать кубиками, в нижних регистрах 8 q
.
ARMv8 (AArch64) ввел инструкции, которые могут индексироваться в векторных регистрах, потому что s3
является младшим словом q3
: перекрытие / упаковка изменены.