ARM 인 텐트에는 크기가 다른 스칼라를 추출하는 함수가 포함되어 있습니다. 기능은 ARM® C Language Extensions에서 가장 완전하게 설명되어 있습니다 :vgetq_lane_u64 (x, 0) vget_low_u64 (x)
ET vgetQ_lane_ST(T vec, const int lane);
는 입력 벡터의 지정된 차선에서 값을 가져옵니다. 내장 함수는 입니다.
그리고 :
T vget_high_ST(T2 a); T vget_low_ST(T2 a);
는 128 비트 벡터의 높은 또는 낮은 반을 가져옵니다. 24 내장 프로그램이 있습니다.
일부 상황에서는 동일한 점을 알고 있습니다. 예를 들어, 리틀 엔디안 시스템에서, 다음은 64 비트 값 마찬가지 :
유사한 등가 높은 차선 존재uint64x2_t x = ...;
vgetq_lane_u64(x, 0) == vget_low_u64(x);
:
이uint64x2_t x = ...;
vgetq_lane_u64(x, 1) == vget_high_u64(x);
내 질문은은 무엇인가 두 함수가 스칼라를 반환하기 때문에 실제적인 차이점이 있습니까? 한 쪽이 다른 쪽보다 선호되어야합니까?
'리틀 엔디안 머신에서'는 아마도 관련이 없습니다. 왜냐하면 어떤 시점에서도 배열을 인덱싱하지 않기 때문입니다. 벡터 레지스터의 인덱싱 요소는 스칼라 레지스터에서 정수의 왼쪽/오른쪽 교대와 같습니다. 나는 보지 않았지만 endianness에서 실행될 수있는 아키텍처가 벡터를 뒤섞거나 벡터에 스칼라를 삽입/추출하는 지침의 동작을 변경하지 않는다고 가정합니다. (물론 스칼라가 메모리에서 오는 경우, 엔디안은 스칼라 내의 바이트 순서에 중요하지만 벡터 내의 요소 위치는 중요하지 않습니다.) –