mirror of
https://github.com/EduApps-CDG/OpenDX
synced 2024-12-30 09:45:37 +01:00
[dxbc] Implement ImmAtomic*Min/Max instructions
This commit is contained in:
parent
00a145906c
commit
d2c6ec5c41
@ -2061,24 +2061,28 @@ namespace dxvk {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case DxbcOpcode::AtomicIMin:
|
case DxbcOpcode::AtomicIMin:
|
||||||
|
case DxbcOpcode::ImmAtomicIMin:
|
||||||
value.id = m_module.opAtomicSMin(typeId,
|
value.id = m_module.opAtomicSMin(typeId,
|
||||||
pointer.id, scopeId, semanticsId,
|
pointer.id, scopeId, semanticsId,
|
||||||
src[0].id);
|
src[0].id);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DxbcOpcode::AtomicIMax:
|
case DxbcOpcode::AtomicIMax:
|
||||||
|
case DxbcOpcode::ImmAtomicIMax:
|
||||||
value.id = m_module.opAtomicSMax(typeId,
|
value.id = m_module.opAtomicSMax(typeId,
|
||||||
pointer.id, scopeId, semanticsId,
|
pointer.id, scopeId, semanticsId,
|
||||||
src[0].id);
|
src[0].id);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DxbcOpcode::AtomicUMin:
|
case DxbcOpcode::AtomicUMin:
|
||||||
|
case DxbcOpcode::ImmAtomicUMin:
|
||||||
value.id = m_module.opAtomicUMin(typeId,
|
value.id = m_module.opAtomicUMin(typeId,
|
||||||
pointer.id, scopeId, semanticsId,
|
pointer.id, scopeId, semanticsId,
|
||||||
src[0].id);
|
src[0].id);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DxbcOpcode::AtomicUMax:
|
case DxbcOpcode::AtomicUMax:
|
||||||
|
case DxbcOpcode::ImmAtomicUMax:
|
||||||
value.id = m_module.opAtomicUMax(typeId,
|
value.id = m_module.opAtomicUMax(typeId,
|
||||||
pointer.id, scopeId, semanticsId,
|
pointer.id, scopeId, semanticsId,
|
||||||
src[0].id);
|
src[0].id);
|
||||||
|
@ -927,28 +927,28 @@ namespace dxvk {
|
|||||||
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
||||||
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
||||||
} },
|
} },
|
||||||
/* ImmAtomicImax */
|
/* ImmAtomicIMax */
|
||||||
{ 4, DxbcInstClass::Atomic, {
|
{ 4, DxbcInstClass::Atomic, {
|
||||||
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
||||||
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
||||||
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
||||||
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
||||||
} },
|
} },
|
||||||
/* ImmAtomicImin */
|
/* ImmAtomicIMin */
|
||||||
{ 4, DxbcInstClass::Atomic, {
|
{ 4, DxbcInstClass::Atomic, {
|
||||||
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
||||||
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Sint32 },
|
||||||
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
||||||
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
||||||
} },
|
} },
|
||||||
/* ImmAtomicUmax */
|
/* ImmAtomicUMax */
|
||||||
{ 4, DxbcInstClass::Atomic, {
|
{ 4, DxbcInstClass::Atomic, {
|
||||||
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
||||||
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
||||||
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Sint32 },
|
||||||
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
{ DxbcOperandKind::SrcReg, DxbcScalarType::Uint32 },
|
||||||
} },
|
} },
|
||||||
/* ImmAtomicUmin */
|
/* ImmAtomicUMin */
|
||||||
{ 4, DxbcInstClass::Atomic, {
|
{ 4, DxbcInstClass::Atomic, {
|
||||||
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
||||||
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
{ DxbcOperandKind::DstReg, DxbcScalarType::Uint32 },
|
||||||
|
@ -194,10 +194,10 @@ namespace dxvk {
|
|||||||
ImmAtomicXor = 183,
|
ImmAtomicXor = 183,
|
||||||
ImmAtomicExch = 184,
|
ImmAtomicExch = 184,
|
||||||
ImmAtomicCmpExch = 185,
|
ImmAtomicCmpExch = 185,
|
||||||
ImmAtomicImax = 186,
|
ImmAtomicIMax = 186,
|
||||||
ImmAtomicImin = 187,
|
ImmAtomicIMin = 187,
|
||||||
ImmAtomicUmax = 188,
|
ImmAtomicUMax = 188,
|
||||||
ImmAtomicUmin = 189,
|
ImmAtomicUMin = 189,
|
||||||
Sync = 190,
|
Sync = 190,
|
||||||
DAdd = 191,
|
DAdd = 191,
|
||||||
DMax = 192,
|
DMax = 192,
|
||||||
|
@ -190,10 +190,10 @@ std::ostream& operator << (std::ostream& os, DxbcOpcode e) {
|
|||||||
ENUM_NAME(DxbcOpcode::ImmAtomicXor);
|
ENUM_NAME(DxbcOpcode::ImmAtomicXor);
|
||||||
ENUM_NAME(DxbcOpcode::ImmAtomicExch);
|
ENUM_NAME(DxbcOpcode::ImmAtomicExch);
|
||||||
ENUM_NAME(DxbcOpcode::ImmAtomicCmpExch);
|
ENUM_NAME(DxbcOpcode::ImmAtomicCmpExch);
|
||||||
ENUM_NAME(DxbcOpcode::ImmAtomicImax);
|
ENUM_NAME(DxbcOpcode::ImmAtomicIMax);
|
||||||
ENUM_NAME(DxbcOpcode::ImmAtomicImin);
|
ENUM_NAME(DxbcOpcode::ImmAtomicIMin);
|
||||||
ENUM_NAME(DxbcOpcode::ImmAtomicUmax);
|
ENUM_NAME(DxbcOpcode::ImmAtomicUMax);
|
||||||
ENUM_NAME(DxbcOpcode::ImmAtomicUmin);
|
ENUM_NAME(DxbcOpcode::ImmAtomicUMin);
|
||||||
ENUM_NAME(DxbcOpcode::Sync);
|
ENUM_NAME(DxbcOpcode::Sync);
|
||||||
ENUM_NAME(DxbcOpcode::DAdd);
|
ENUM_NAME(DxbcOpcode::DAdd);
|
||||||
ENUM_NAME(DxbcOpcode::DMax);
|
ENUM_NAME(DxbcOpcode::DMax);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user