2015-01-20 2 views
3

일부 ARM NEON 코드를 64 비트 ARM-v8로 이식하려고하는데, 이에 대한 좋은 설명서를 찾을 수 없습니다.ARM NEON 코드를 AARCH64로 이식, 많은 질문이 있습니다.

많은 기능이 사라진 것처럼 보이며, 사용하지 않고 동일한 기능을 구현하는 방법을 모르겠습니다.

일반적인 질문은 다음과 같습니다. 많은 ARM-NEON 자습서에서 설명하는 것과 동일한 간단한 작업을 수행하는 방법에 대한 설명을 포함하여 새로운 SIMD 구현에 대한 전체 참조는 어디에서 찾을 수 있습니까? 특정 기능에 대한

몇 가지 질문 :

1 - 어떻게이 DX를 레지스터의 모든 차선에 값을로드 할 수 있습니까? 오래된 코드는

mov R0, #42 
    vdup.8 D0, R0 

내 생각은했다 :

mov W0, #42 
    dup V0.8B, W0 

2 - 어떻게 여러 DX를/QX는 인터리빙 된 데이터에 등록로드합니까? 이전 코드에서는 다음과 같습니다.

vld4.8 {D0-D3}, [R0]! 

그러나 새 문서에서 아무것도 찾을 수 없습니다.

나는 그것이 완전히 새로운 모델의 이해하지만, 매우 잘 문서화 아니다 (또는 적어도, 나는 읽을 샘플에 대한 참조 찾을 수없는거야)

+1

내가 dup'는'vdup'에 해당하는 것으로 보이는'동의 하겠지만하게된다; 'vld4'에 해당하는 것은 아마도 놀랍지 않게'ld4' 인 것 같습니다. 이전의 "ARMv8 명령어 세트 개요"PDF 사본을 추적 해 볼 가치가 있습니다. 적절한 ARMv8-A ARM이 게시되었으므로 ARM 웹 사이트에서 제외되었지만 더 쉽게 건너 뛸 수있었습니다. – Notlikethat

답변

4

안드로이드에 ARMv8을 사용하는 방법에 대한 문서가 매우되지 않습니다 좋은,하지만 특정 질문에 대해, 그들은이 문서에 아주 잘 대답하고 있습니다 : 특정 질문에 대답하기 위해

ARMv8 Instruction Set Overview

:

mov R0, #42 
vdup.8 D0, R0 

mov w0,#42 
dup v0.8b,w0 

vld4.8 {d0-d3}, [r0]! 

ld4 {v0.8b,v1.8b,v2.8b,v3.8b},[x0],#32 
+0

이 첫 번째 답변을 주셔서 감사합니다. 이제 나머지를 파악하려고합니다. 예를 들어, 단순한 PLD 명령이 복잡성의 괴물이 된 것 같습니다. –

+0

아니요, 대기 ... dup.8b 및 ld4.8b가 존재하지 않습니다. 레지스터는 니모닉이 아닌 접미사입니다. –

+0

기꺼이 도와 드리겠습니다. PLD는 읽기/쓰기 및 L0/L1/L2/L3 캐시에 대한 많은 옵션을 지원하도록 변경되었습니다. Xcode에서 사용하려고했지만 ARM 설명서의 구문을 허용하지 않습니다. ARM64에서 시작하는 가장 좋은 방법은 GCC에서 C의 ASM 소스 코드를 출력하고 그 기능을 파악하는 것입니다. – BitBank

관련 문제