Compartilhar via


atomic_cmp_store (sm5 – asm)

Comparação atômica e gravação na memória.

atomic_cmp_store dest, dstAddress[.swizzle], src0[.select_component], src1[.select_component]
Item Descrição
Dest
[in] Os componentes a serem comparados com src0. Esse valor deve ser uma exibição de acesso não ordenada (UAV) (u#). No sombreador de computação, ele também pode ser memória compartilhada do grupo de threads (g#).
dstAddress
[in] O endereço de memória.
src0
[in] O valor de 32 bits a ser comparado com dest.
src1
[in] O valor a ser gravado na memória se os valores comparados forem idênticos.

Comentários

Esta instrução executa um único componente de comparação de valor de 32 bits de operando src0 com dest a 32 bits por dstAddress de endereço de componente.

Se os valores comparados forem idênticos, o valor de 32 bits de componente único em src1 será gravado na memória de destino. Caso contrário, o destino não será alterado.

Toda a operação de comparação e gravação é executada atomicamente.

Se dest for um u#, ele poderá ser declarado como bruto, digitado ou estruturado. Se digitado, ele deverá ser declarado como UINT/SINT com o formato de recurso associado sendo R32_UINT/_SINT.

Se dest for g#, ele deverá ser declarado como bruto ou estruturado.

O número de componentes retirados do endereço é determinado pela dimensionalidade de dest u# ou g#.

Nada é retornado ao sombreador.

Se a invocação do sombreador estiver inativa, por exemplo, se o pixel tiver sido descartado anteriormente em sua execução, ou uma instrução de pixel/exemplo não alterará a memória dest (silenciosamente).

O endereçamento fora dos limites em u# não faz com que nada seja gravado na memória, exceto se o u# estiver estruturado e o deslocamento de bytes para o struct (segundo componente do endereço) estiver causando o acesso fora dos limites e, em seguida, todo o conteúdo do UAV ficar indefinido.

O endereçamento fora dos limites em g# (os limites desse g#específico, em vez de toda a memória compartilhada) faz com que todo o conteúdo de toda a memória compartilhada se torne indefinido.

Esta instrução se aplica aos seguintes estágios de sombreador:

Vértice Casco Domínio Geometry Pixel Computação
X X

Como os UAVs estão disponíveis em todos os estágios de sombreador para Direct3D 11.1, essa instrução se aplica a todos os estágios de sombreador para o runtime do Direct3D 11.1, que está disponível a partir do Windows 8.

Vértice Casco Domínio Geometry Pixel Computação
X X X X X X

Modelo de sombreador mínimo

Esta instrução tem suporte nos seguintes modelos de sombreador:

Modelo de Sombreador Com suporte
Modelo de sombreador 5 sim
Modelo de sombreador 4.1 não
Modelo de sombreador 4 não
Modelo de Sombreador 3 (DirectX HLSL) não
Modelo de Sombreador 2 (DirectX HLSL) não
Modelo de Sombreador 1 (DirectX HLSL) não

Assembly do Modelo de Sombreador 5 (DirectX HLSL)