SSE3
SSSE3Supplemental Streaming SIMD Extensions 3 (SSE3 또는 SSE3S)는 인텔이 작성한 SIMD 명령어 세트로 SSE 테크놀로지의 4번째 반복입니다.
역사
SSE3는 2006년 6월 26일 코어 마이크로아키텍처를 기반으로 한 인텔 프로세서에서 Woodcrest Xeons와 함께 처음 도입되었습니다.
SSSE3는 TNI(Tejas New Instructions) 또는 MNI(Merom New Instructions)라는 코드네임으로 대응하고 있는 최초의 프로세서 설계에서 사용되고 있습니다.
기능
SSSE3에는 16개의 새로운 개별 명령이 포함되어 있습니다.각 명령은 64비트 MMX 또는 128비트 XMM 레지스터에서 작동할 수 있습니다.따라서 인텔의 자료에는 32개의 새로운 명령이 기재되어 있습니다.다음과 [1]같은 것이 있습니다.
- 수평 덧셈 또는 뺄셈 연산을 수행하는 12개의 명령.
- 절대값을 평가하는 여섯 가지 명령입니다.
- 곱셈 및 덧셈 연산을 수행하는 두 가지 명령은 도트 제품의 평가를 가속화합니다.
- 패킹된 정수 곱셈 연산을 가속화하고 스케일링을 통해 정수 값을 생성하는 두 가지 명령입니다.
- 두 번째 셔플 제어 피연산자에 따라 바이트 단위로 in-place 셔플을 수행하는 두 가지 명령입니다.
- 소스 피연산자의 대응하는 요소의 기호가 0보다 작은 경우, 수신처 피연산자의 패킹된 정수를 부정하는 6개의 명령.
- 두 오퍼랜드의 합성 데이터를 정렬하는 두 가지 명령입니다.
SSSE3 탑재 CPU
- AMD:
- 인텔:
- Xeon 5100 시리즈
- Xeon 5300 시리즈
- Xeon 5400 시리즈
- Xeon 3000 시리즈
- Core 2 Duo
- Core 2 Extreme
- 코어 2 쿼드
- Core i7
- Core i5
- Core i3
- Pentium 듀얼코어 (64비트 지원, Allendale 이후)
- Celeron 4xx 시퀀스 Conroe-L
- Celeron 듀얼코어 E1200
- Celeron M 500 시리즈
- 아톰
- VIA:
새로운 순서
아래 표에서 satsw(X)는 부호 있는 정수 X를 취하여 -32768보다 작으면 -32768로 변환하고 32767보다 크면 +32767로 변환하며, 그렇지 않으면 변경되지 않습니다.인텔 아키텍처에서는 통상적으로 바이트는 8비트, 워드 16비트, 워드 32비트입니다.「register 」는 MMX 또는 XMM 벡터 [1]레지스터를 나타냅니다.
PSIGNB, PSIGNW, PSIGND | 포장된 간판 | 다른 레지스터의 해당 요소의 부호가 음수인 경우 바이트, 워드 또는 드워드의 레지스터 요소를 부정합니다. |
---|---|---|
PABSB, PABSW, PABSD | 절대 값 재료 | 바이트, 워드 또는 dwords의 또 다른 계산대의 요소의 절대 가치를 계산대의 요소들을 가득 채운다. |
PALIGNR | 가득하게 맞아 | , 그들의 가치 concatenate고 즉각적인 값 명령에 인코딩에 의한 오프셋에서 register-length 부분을 끄집어 낸 두개 등록하세요. |
PSHUFB | 순서 섞기 바이트 재료 | 바이트 A=[a0 a1a2...]및 B=[b0 b1b2...]과[ab0ab1 ab2...]을 가진 대체됩니다;만약 bi복소수의 최고 비트 집합은이라는 것을 제외하면 그것은 0과 함께ith 진입한 레지스터를 감행한다. |
PMULHRSW | 재료 Pow고등, 스케일과. | 레지스터 A와 B부호 있는 16비트 fixed-point 번호 −1.00000000과 +0.99996948 사이에 비어 있는 16비트 단어 처리하다...(예를 들어 0x4000과 0xA000 분무기로 −0.75으로 취급 받는다)여 정확한 라운딩과 함께를 곱하면 된다. |
PMADDUBSW | 곱셈과 추가 Packed과 Unsigned 바이트의 서명. | 레지스터 A와 B에 함께 넣고 증식, 페어,signed-saturate고 가게를 추가한 바이트다.즉,[a0 a1a2…]pmaddubsw[b0 b1b2…])[satsw(a0b0+a1b1)satsw(a2b2+a3b3)…]. |
PHSUBW, PHSUBD | 패킹된 수평 감산(Words 또는 Double Words) | 는 레지스터 A = [a0 a1 a2 …]및 B = [b0 b1 b2 …]를 취득하여 [a0-a1 a2-a3 … b0-b1 b2-b3 …]를 출력합니다. |
PHSUBSW | 패킹된 수평 감산 및 포화 단어 | PHSUBW와 비슷하지만 출력 [satsw(a0-a1) satsw(a2-a3) ...satsw(b0-b1) satsw(b2-b3) ...] |
PADDW, PADDD | 포장된 수평 추가(단어 또는 이중어) | 는 레지스터 A = [a0 a1 a2 …]및 B = [b0 b1 b2 …]를 취득하여 [a0+a1 a2+a3 … b0+b1 b2+b3 …]를 출력합니다. |
PADSW | 포장된 수평 추가 및 포화 단어 | PADDW와 비슷하지만 출력 [satsw(a0+a1) satsw(a2+a3) ...satsw(b0+b1) satsw(b2+b3) ...] |
「 」를 참조해 주세요.
레퍼런스
- ^ a b "2.9.5". Intel 64 and IA-32 Architectures Optimization Reference Manual (PDF) (Technical report). Intel.com. 2016. pp. 92–93. Archived (PDF) from the original on June 20, 2018. Retrieved June 22, 2018.