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) | 아니요 |