swapc (sm5 - asm)

두 입력 레지스터 사이의 값에 대한 구성 요소별 조건부 교환을 수행합니다.

swapc dst0[.mask], dst1[.mask], src0[.swizzle], src1[.swizzle], src2[.swizzle]
항목 설명
dst0
[in] 비어 있지 않은 임의의 쓰기 마스크가 있는 레지스터입니다. dst1과 달라야 합니다.
dst1
[in] 비어 있지 않은 임의의 쓰기 마스크가 있는 레지스터입니다. dst0과 달라야 합니다.
src0
[in] 4개 조건을 제공합니다. 0이 아닌 정수 값은 true를 의미합니다.
src1
[in] 교환할 값 중 하나입니다.
src2
[in] 교환할 값 중 하나입니다.

설명

이 명령의 인코딩은 교환과 관련된 숫자 쌍 정렬에 약간의 유연성을 갖고 두 개의 4분 레지스터에서 스칼라의 여러 병렬 조건부 교환을 간결하게 표현하려고 시도합니다.

src0, src1, src2에 대한 레지스터와 값의 선택은 movc와 같이 어떠한 방식으로도 제한되지 않습니다.

이 명령의 의미 체계는 movc 명령과 동등한 연산으로 설명할 수 있습니다. 다음 예제는 대상 레지스터가 끝까지 업데이트되지 않도록 하는 최악의 경우를 보여줍니다.

                swapc dst0[.mask], 
                      dst1[.mask],
                      src0[.swizzle],
                      src1[.swizzle],
                      src2[.swizzle]

                expands to:

                movc temp[dst0 s mask], 
                     src0[.swizzle], 
                     src2[.swizzle], src1[.swizzle]

                movc dst1[.mask], 
                     src0[.swizzle], 
                     src1[.swizzle], src2[.swizzle]

                mov  dst0.mask, temp

직접 수행하지 않는 경우 작업을 해결하는 방법을 선택할 수 있습니다. 예를 들어 최대 4개의 단순 스칼라 조건부 교환 시퀀스 또는 위와 같이 두 개의 벡터 movc 명령, 확장 중에 이전 작업으로 인해 원본 값이 변경되지 않도록 하는 오버헤드를 통해 동일한 효과를 얻을 수 있습니다.

이 명령을 사용하여 정렬합니다.

이 명령은 다음 셰이더 단계에 적용됩니다.

꼭짓점 Hull 도메인 기하 도형 픽셀 컴퓨팅
X X X X X X

최소 셰이더 모델

이 명령은 다음 셰이더 모델에서 지원됩니다.

셰이더 모델 지원됨
셰이더 모델 5
셰이더 모델 4.1 아니요
셰이더 모델 4 아니요
셰이더 모델 3(DirectX HLSL) 아니요
셰이더 모델 2(DirectX HLSL) 아니요
셰이더 모델 1(DirectX HLSL) 아니요

셰이더 모델 5 어셈블리(DirectX HLSL)