1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-18 02:52:10 +01:00

[dxbc] Implement ImmAtomic*Min/Max instructions

This commit is contained in:
Philip Rebohle 2018-04-02 10:58:26 +02:00
parent 00a145906c
commit d2c6ec5c41
4 changed files with 16 additions and 12 deletions

View File

@ -2061,24 +2061,28 @@ namespace dxvk {
break;
case DxbcOpcode::AtomicIMin:
case DxbcOpcode::ImmAtomicIMin:
value.id = m_module.opAtomicSMin(typeId,
pointer.id, scopeId, semanticsId,
src[0].id);
break;
case DxbcOpcode::AtomicIMax:
case DxbcOpcode::ImmAtomicIMax:
value.id = m_module.opAtomicSMax(typeId,
pointer.id, scopeId, semanticsId,
src[0].id);
break;
case DxbcOpcode::AtomicUMin:
case DxbcOpcode::ImmAtomicUMin:
value.id = m_module.opAtomicUMin(typeId,
pointer.id, scopeId, semanticsId,
src[0].id);
break;
case DxbcOpcode::AtomicUMax:
case DxbcOpcode::ImmAtomicUMax:
value.id = m_module.opAtomicUMax(typeId,
pointer.id, scopeId, semanticsId,
src[0].id);

View File

@ -927,28 +927,28 @@ namespace dxvk {
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
} },
/* ImmAtomicImax */
/* ImmAtomicIMax */
{ 4, DxbcInstClass::Atomic, {
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
} },
/* ImmAtomicImin */
/* ImmAtomicIMin */
{ 4, DxbcInstClass::Atomic, {
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
} },
/* ImmAtomicUmax */
/* ImmAtomicUMax */
{ 4, DxbcInstClass::Atomic, {
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
} },
/* ImmAtomicUmin */
/* ImmAtomicUMin */
{ 4, DxbcInstClass::Atomic, {
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },

View File

@ -194,10 +194,10 @@ namespace dxvk {
ImmAtomicXor = 183,
ImmAtomicExch = 184,
ImmAtomicCmpExch = 185,
ImmAtomicImax = 186,
ImmAtomicImin = 187,
ImmAtomicUmax = 188,
ImmAtomicUmin = 189,
ImmAtomicIMax = 186,
ImmAtomicIMin = 187,
ImmAtomicUMax = 188,
ImmAtomicUMin = 189,
Sync = 190,
DAdd = 191,
DMax = 192,

View File

@ -190,10 +190,10 @@ std::ostream& operator << (std::ostream& os, DxbcOpcode e) {
ENUM_NAME(DxbcOpcode::ImmAtomicXor);
ENUM_NAME(DxbcOpcode::ImmAtomicExch);
ENUM_NAME(DxbcOpcode::ImmAtomicCmpExch);
ENUM_NAME(DxbcOpcode::ImmAtomicImax);
ENUM_NAME(DxbcOpcode::ImmAtomicImin);
ENUM_NAME(DxbcOpcode::ImmAtomicUmax);
ENUM_NAME(DxbcOpcode::ImmAtomicUmin);
ENUM_NAME(DxbcOpcode::ImmAtomicIMax);
ENUM_NAME(DxbcOpcode::ImmAtomicIMin);
ENUM_NAME(DxbcOpcode::ImmAtomicUMax);
ENUM_NAME(DxbcOpcode::ImmAtomicUMin);
ENUM_NAME(DxbcOpcode::Sync);
ENUM_NAME(DxbcOpcode::DAdd);
ENUM_NAME(DxbcOpcode::DMax);