나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-07-07 11:25:12

RDNA(ISA)


파일:관련 문서 아이콘.svg   관련 문서: RDNA
,
,
,
,
,


1. 개요2. 역사3. 레지스터4. 명령어 인코딩5. 명령어 구성
5.1. 정수 명령어5.2. 벡터 명령어
6. 기타7. 관련 문서

1. 개요

이 문서에서는 AMD RDNA GPU에서 사용되는 명령어 집합에 대해 다룬다.

2. 역사

RDNA의 명령어 집합은 GCN 명령어 집합을 기반으로 설계되었다.

3. 레지스터

RDNA 프로그램 상태는 다음과 같은 레지스터들로 구성된다.

4. 명령어 인코딩

RDNA 명령어는 32-bit/64-bit/96-bit 길이로 인코딩된다.

5. 명령어 구성

5.1. 정수 명령어

명령어 인코딩 Sets SCC? 동작
32비트 정수 연산 명령어
S_ADD_I32 SOP2 y D = S0 + S1, SCC = overflow.
S_ADD_U32 SOP2 y D = S0 + S1, SCC = carry out.
S_ADDC_U32 SOP2 y D = S0 + S1 + SCC = overflow.
S_SUB_I32 SOP2 y D = S0 - S1, SCC = overflow.
S_SUB_U32 SOP2 y D = S0 - S1, SCC = carry out.
S_SUBB_U32 SOP2 y D = S0 - S1 - SCC = carry out.
S_ABSDIFF_I32 SOP2 y D = abs (S0 - S1), SCC = result not zero.
S_MIN_I32
S_MIN_U32
SOP2 y D = (S0 < S1) ? S0 : S1. SCC = 1 if S0 was min.
S_MAX_I32
S_MAX_U32
SOP2 y D = (S0 > S1) ? S0 : S1. SCC = 1 if S0 was max.
S_MUL_I32 SOP2 n D = S0 * S1. Low 32 bits of result.
S_ADDK_I32 SOPK y D = D + simm16, SCC = overflow. Sign extended version of simm16.
S_MULK_I32 SOPK n D = D * simm16. Return low 32bits. Sign extended version of simm16.
S_ABS_I32 SOP1 y D.i = abs (S0.i). SCC=result not zero.
S_SEXT_I32_I8 SOP1 n D = { 24{S0[7]}, S0[7:0] }.
S_SEXT_I32_I16 SOP1 n D = { 16{S0[15]}, S0[15:0] }.
32비트 조건부 연산 명령어
S_CSELECT_{B32, B64} SOP2 n D = SCC ? S0 : S1.
S_CMOVK_I32 SOPK n if (SCC) D = signext(simm16).
S_CMOV_{B32,B64} SOP1 n if (SCC) D = S0, else NOP.
32비트 비교 연산 명령어
32비트 비트 연산 명령어
제어 레지스터 접근 명령어

5.2. 벡터 명령어

6. 기타

7. 관련 문서


[1] 2의 거듭제곱인 128이 아닌 106개인데, S106-S107은 Vector Condition Code의 상위 및 하위 비트를 저장하는 데 사용되며, 나머지 레지스터 번호는 16개의 Trap 처리용 SGPR, NULL 레지스터(=상수 0), 마스크 레지스터 등을 지정하는 데 할당된다.