명확하게 대답 할 정의가있다.
NEON은 64 비트 폭 (16 비트 레지스터로서 128 비트 폭)의 32 레지스터를 갖는다.
- 여섯 128- 비트 쿼드 워드 레지스터, Q0-Q15
- 서른 두 레지스터 더블 64 비트 D0-D31 :
네온 유닛은 상기와 같은 레지스터 뱅크를 볼 수 .
uint16x8_t
는 그것이
quadword
레지스터에 있어야하므로 128 비트 저장을 필요로하는 타입이다.
ARM 네온 내장 함수 ARM® C Language Extensions의 vector array data type
라고 정의 가지고 테이블 룩업 동작에
...로드 및 저장 동작의 사용을, 및 동작의 결과 유형으로 그 한 쌍의 벡터를 반환합니다.
vzip 명령
...는 두 벡터의 요소들을 인터리빙한다.VZIP 지침 아무튼 때문에
VZIP DD, DM
하고, 우리가 uint8x8x2_t 실제로이 개 임의 번호가 더블 레지스터의 목록입니다 결론을 내릴 수있는 intrinsic이에서
uint8x8x2_t vzip_u8 (uint8x8_t, uint8x8_t)
같은있다 입력 레지스터의 순서에 대한 요구 사항이 없습니다.
이제 답 uint16x8_t
처음 하나 (D0-D31 짝수 인덱스를 갖는 두 개의 연속 dualword 레지스터로 구성된 데이터 구조 인 반면
uint8x8x2_t
비 연속적인 두 dualword 레지스터를 포함 할 수 ... 인 -> Q0 -Q15).
이 때문에 두 개의 더블 워드 레지스터가있는 vector array data type
을 쿼드 워드 레지스터에 쉽게 캐스팅 할 수 없습니다.
컴파일러가 도움이 될 정도로 스마트하거나 변환을 강제 할 수는 있지만 결과 어셈블리의 성능과 정확성을 검사합니다.
. 그러나 아직도 어떻게 개조 할 것인지 전혀 모른다. –
작은 스 니펫을 게시하여 질문을 보여줄 수 있습니까? – auselen