본문 바로가기

Programming/NEON

[NEON] 비교 연산과 절대값

1. 비교 연산

1.1 같음(==) 비교 함수

벡터 사이에 레인 값이 같은지 비교한다.

 

uint16x8_t r = vceqq_s16(int16x8_t a, int16x8_t b)

벡터 a와 b의 레인이 같은 값인지 비교하여 벡터 r의 각 레인에 결과가 참이면 16진수로

0xffff, 거짓이면 16진수로 0x0000을 저장한다.

 

1.2 크거나 같음(>=) 비교 함수

벡터 사이에 레인 값이 크거나 같은지 비교한다.


uint16x8_t r = vcgqe_s16(int16x8_t a, int16x8_t b)

벡터 a가 b보다 크거나 같은지 비교하여 벡터 r의 각 레인에 그 결과가 참이면

0xffff, 거짓이면 0x0000을 저장한다.

 

1.3 작거나 같음(<=) 비교 함수

벡터 사이에 레인 값이 작거나 같은지 비교한다.

 

uint16x8_t r = vcleq_s16(int16x8_t a, int16x8_t b)

벡터 a가 b보다 작거나 같은지 비교하여 벡터 r의 각 레인의 위치에 그 결과가 참이면 0xffff,

거짓이면 0x0000을 저장한다.

 

1.4 큼(>) 비교 함수

벡터 사이에 레인 값이 큰지를 비교한다.

 

uint16x8_t r = vcgtq_s16(int16x8_t a, int16x8_t b)

벡터 a가 b보다 큰지를 비교하여 벡터 r의 각 레인의 위치에 그 결과가 참이면 0xffff, 거짓이면 0x0000을 저장한다.

 

1.5 작음(<) 비교 함수

벡터  사이에 레인값이 작은지 비교한다.

 

uint16x8_t r = vcltq_s16(int16x8_t a, int16x8_t b)

벡터 a가 b보다 작은지를 비교하여 벡터 r의 각 레인의 위치에 그 결과가 참이면 0xffff, 거짓이면 0x0000을 저장한다.


2. 절댓값

2.1 절댓값 함수

벡터의 절댓값(ABS)를 구한다.


int8x8_t r = vabs_s8(int8x8_t a)

벡터 a의 절댓값을 계산한다.


2.2 절대 차이 함수

벡터 변수 사이에 빼기 연산을 하고 절댓값을 구한다.


int8x8_t r = vabd_s8(int8x8_t a, int8x8_t b)

벡터 a에서 b를 뺀 결과의 절댓값을 구한다. (r = |a-b|)

 

2.3 절대 차이 누계 함수

절대 차이 함수의 실행 결과에 또 다른 벡터를 더하여 저장한다.

 

int8x8_t r = vaba_s8(int8x8_t a, int 8x8_t b, int8x8_t c)

벡터 b에서 c를 뺀 절댓값에 벡터 a를 더한다. (r = a + |b-c|)


2.4 절댓값 비교

NEON은 절댓값 사이의 비교 연산을 지원한다. 절댓값 비교의 종류는 총 4가지로

절댓값이 크거나 같음, 절댓값이 작거나 같음, 절댓값 큼, 절댓값 작음이 있다.

단, 절댓값 비교는 실수형 벡터만 지원한다.

 

절댓값 크거나 같음 (>=)

uint32x4_t r = vcageq_f32(float 32x4_t a, float32x4_t b)

실수 32bit 레인 벡터 a의 절댓값이 같은 크기의 벡터 b의 절댓값보다 크거나 같은지 비교하여

결과를 부호 없는 정수형 벡터 r에 대입한다. 정수 비교와 마찬가지로 참이면 대상 레인은

0xffff로 설정되고, 그렇지 않으면 모두 0x0000으로 설정된다.

 

절댓값 큼 (<)

uint32x4_t r = vcagtq_f32(float32x4_t a, float32x4_t b)

실수 32bit 레인 벡터 a의 절댓값이 같은 크기의 벡터 b의 절댓값보다 큰지 비교하여 결과를

부호 없는 정수형 벡터 r에 대입한다.

 

절댓값 작거나 같음 (<=)

uint32x4_t r = vcaleq_f32(float32x4_t a, float32x4_t b)

실수 32bit 레인 벡터 a의 절댓값이 같은 크기의 벡터 b의 절댓값보다 작거나 같은지 비교하여 결과를

부호 없는 정수형 벡터 r에 대입한다.

 

절댓값 작음 (<)

uint32x4_t r = vcaltq_f32(float32x4_t a, float32x4_t b)

실수 32bit 레인 벡터 a의 절댓값이 같은 크기의 벡터 b의 절댓값보다 작은지 비교하여 결과를

부호없는 정수형 벡터 r에 대입한다.

'Programming > NEON' 카테고리의 다른 글

[NEON] 수학, 이항, 스칼라 연산  (0) 2016.09.23
[NEON] 변환 연산  (0) 2016.09.23
[NEON] 비트와 시프트 연산  (0) 2016.09.23
[NEON] 레인 설정과 조회  (0) 2016.09.23
[NEON 산술 연산과 확장  (0) 2016.09.23