GCC 쪽 문서에도 어셈블리 명령어로만 설명이 있어서
결국은 어셈블리 명령어를 먼지 알아야 겠네 -_-
기본적으로 V를 접두로 가지며 V는 Vector의 약자로 보인다.
L은 Long
The Neon Register file has a dual view: 32 - 64 bit registers (The Dx registers) 16 - 128 bit registers (The Qx registers) The VFP Register file also has a dual view: 32 - 64 bit registers (The Dx registers) 32 - 32 bit registers (The Sx registers - Only 1/2 of the registers may be viewed as 32 bit) |
Qd, Qn, Qm 쿼드워드 연산에 대한 대상 벡터, 첫 번째 피연산자 벡터 및 두 번째 피연산자 벡터입니다. Dd, Dn, Dm 더블워드 연산에 대한 대상 벡터, 첫 번째 피연산자 벡터 및 두 번째 피연산자 벡터입니다. Qd, Dn, Dm long 연산에 대한 대상 벡터, 첫 번째 피연산자 벡터 및 두 번째 피연산자 벡터입니다. Qd, Qn, Dm Wide 연산에 대한 대상 벡터, 첫 번째 피연산자 벡터 및 두 번째 피연산자 벡터입니다. [링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ik/CIHJCAAG.html] |
double(64bit) / float(32bit)에 이은.. 덜 정밀한(16bit) 부동소수점인가?
반정밀도 확장은 VFPv3 및 NEON 아키텍처를 모두 확장하는 선택적 아키텍처로, 단정밀도 (32비트) 및 반정밀도 (16비트) 부동 소수점 숫자 간에 변환을 수행하는 VFP 및 NEON 명령어를 제공합니다. [링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ik/CJAJBFBF.html] |
128비트 쿼드워드
64비트 더블워드
32비트 워드
32개의 64비트 더블워드 레지스터, D0-D31 32개의 32비트 단일 워드 레지스터, S0-S31. 이 뷰에서는 레지스터 뱅크의 반에만 액세스할 수 있습니다. [링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ik/CIHBGCCH.html] |
음.. ARMv8 부터는 64bit 확장되면서 64bit = 1word가 되나보다?
[링크 : http://en.wikipedia.org/wiki/Word_(computer_architecture)]
NEON 논리 및 비교 연산 VAND, VBIC, VEOR, VORN 및 VORR (레지스터) - 비트 단위 AND, 비트 지우기, 배타적 OR, OR Not 및 OR (레지스터) VBIC 및 VORR (즉치값) - 비트 단위 비트 지우기 및 OR (즉치값 VBIF, VBIT 및 VBSL - False인 경우 비트 단위 삽입, True인 경우 삽입 및 선택 VMOV, VMVN (레지스터) - 이동 및 이동하지 않음 VACGE 및 VACGT - 비교 절대값 VCEQ, VCGE, VCGT, VCLE 및 VCLT - 비교 VTST - 비트 테스트 NEON 일반 데이터 처리 명령어 VCVT (고정 소수점 또는 정수와 부동 소수점 간 변환) - 고정 소수점 또는 정수와 부동 소수점 간의 벡터 변환 VCVT (반정밀도 부동 소수점과 단정밀도 부동 소수점 간에 변환) - 반정밀도 부동 소수점과 단정밀도 부동 소수점 간의 벡터 변환 VDUP - 스칼라를 벡터의 모든 레인으로 복제 VEXT - 추출 VMOV, VMVN (즉치값) - 이동 및 음수 이동 (즉치값) VMOVL, V{Q}MOVN, VQMOVUN - 이동 (레지스터) VREV - 벡터 내 요소 반전 VSWP - 벡터 스왑 VTBL, VTBX - 벡터 테이블 조회 VTRN - 벡터 이항 VUZP, VZIP - 벡터 인터리브 및 디인터리브 NEON 시프트 명령어 VSHL, VQSHL, VQSHLU 및 VSHLL (즉치값 기준) - 즉치값만큼 왼쪽으로 시프트 V{Q}{R}SHL (부호 있는 변수 기준) - 부호 있는 변수만큼 왼쪽으로 시프트 V{R}SHR{N}, V{R}SRA (즉치값 기준) - 즉치값만큼 오른쪽으로 시프트 VQ{R}SHR{U}N (즉치값 기준) - 즉치값만큼 오른쪽으로 시프트 및 포화 VSLI 및 VSRI - 왼쪽으로 시프트 및 삽입 및 오른쪽으로 시프트 및 삽입 NEON 일반 산술 명령어 VABA{L} 및 VABD{L} - 벡터 절대 차이, 누산 및 절대 차이 V{Q}ABS 및 V{Q}NEG - 벡터 절대값 및 부정 V{Q}ADD, VADDL, VADDW, V{Q}SUB, VSUBL 및 VSUBW - 벡터 더하기 및 빼기 V{R}ADDHN 및 V{R}SUBHN - 벡터 더하기 상위 반 선택 및 빼기 상위 반 선택 V{R}HADD 및 VHSUB - 벡터 양분 더하기 및 빼기 VPADD{L}, VPADAL - 벡터 인접 쌍 더하기, 더하기 및 누산 VMAX, VMIN, VPMAX 및 VPMIN - 벡터 최대값, 최소값, 인접 쌍 최대 값 및 인접 쌍 최소값 VCLS, VCLZ 및 VCNT - 벡터 선행 부호 비트 계산, 선행 0 수 계산 및 세트 비트 계산 VRECPE 및 VRSQRTE - 벡터 역수 추정 및 역수 제곱근 추정 VRECPS 및 VRSQRTS - 벡터 역수 추정 및 역수 제곱근 추정 NEON 곱하기 명령어 VMUL{L}, VMLA{L} 및 VMLS{L} - 벡터 곱하기, 곱하기 누산 및 곱하기 빼기 VMUL{L}, VMLA{L} 및 VMLS{L} (스칼라 기준) - 벡터 곱하기, 곱하기 누산 및 곱하기 빼기 (스칼라 기준) VQDMULL, VQDMLAL 및 VQDMLSL (벡터 기준 또는 스칼라 기준) - 벡터 포화 배수화 곱하기, 곱하기 누산 및 곱하기 빼기 (벡터 또는 스칼라 기준) VQ{R}DMULH (벡터 기준 또는 스칼라 기준) - 상위 반을 반환하는 벡터 포화 배수화 곱하기 (벡터 또는 스칼라 기준) NEON 요소 및 구조체 로드/저장 명령어 인터리브 요소 및 구조체 로드와 저장 명령어의 정렬에 대한 제한 VLDn 및 VSTn (단일 n-요소 구조체를 하나의 레인에 로드) - 대부분의 데이터 액세스에 사용됩니다. 일반 벡터가 로드될 수 있습니다 (n = 1) VLDn (단일 n-요소 구조체를 모든 레인에 로드) VLDn 및 VSTn (여러 n-요소 구조체) [링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ik/CIHJCAAG.html] |
[링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489i/CJABFHEJ.html]
아따.. 타입 여러가지네..
uint64x1_t vadd_u64 (uint64x1_t, uint64x1_t) uint32x2_t vadd_u32 (uint32x2_t, uint32x2_t) - Form of expected instruction(s): vadd.i32 d0, d0, d0 uint16x4_t vadd_u16 (uint16x4_t, uint16x4_t) - Form of expected instruction(s): vadd.i16 d0, d0, d0 uint8x8_t vadd_u8 (uint8x8_t, uint8x8_t) - Form of expected instruction(s): vadd.i8 d0, d0, d0 int64x1_t vadd_s64 (int64x1_t, int64x1_t) int32x2_t vadd_s32 (int32x2_t, int32x2_t) - Form of expected instruction(s): vadd.i32 d0, d0, d0 int16x4_t vadd_s16 (int16x4_t, int16x4_t) - Form of expected instruction(s): vadd.i16 d0, d0, d0 int8x8_t vadd_s8 (int8x8_t, int8x8_t) - Form of expected instruction(s): vadd.i8 d0, d0, d0 float32x2_t vadd_f32 (float32x2_t, float32x2_t) - Form of expected instruction(s): vadd.f32 d0, d0, d0 [링크 : https://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/ARM-NEON-Intrinsics.html] |
'Programming > neon' 카테고리의 다른 글
neon auto vectoring (0) | 2015.05.06 |
---|---|
kernel mode neon support? (0) | 2015.05.06 |
neon 예제 실행 + 커널 교체 (0) | 2015.05.04 |
arm neon 예제 컴파일 (0) | 2015.05.03 |
NEON Intrinsics (0) | 2015.04.30 |