mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-08-01 15:02:40 +00:00
Clang Format & UNREACHABLE_MSG
This commit is contained in:
parent
600e1bc888
commit
d4dab94acd
@ -12,14 +12,11 @@ std::pair<Id, Id> AtomicArgs(EmitContext& ctx) {
|
|||||||
return {scope, semantics};
|
return {scope, semantics};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Id BufferAtomicU32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value,
|
Id BufferAtomicU32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value,
|
||||||
Id (Sirit::Module::*atomic_func)(Id, Id, Id, Id, Id)) {
|
Id (Sirit::Module::*atomic_func)(Id, Id, Id, Id, Id)) {
|
||||||
auto& buffer = ctx.buffers[handle];
|
auto& buffer = ctx.buffers[handle];
|
||||||
address =
|
address = ctx.OpIAdd(ctx.U32[1], address, buffer.offset);
|
||||||
ctx.OpIAdd(ctx.U32[1], address, buffer.offset);
|
const Id index = ctx.OpShiftRightLogical(ctx.U32[1], address, ctx.ConstU32(2u));
|
||||||
const Id index =
|
|
||||||
ctx.OpShiftRightLogical(ctx.U32[1], address, ctx.ConstU32(2u));
|
|
||||||
const Id pointer{ctx.OpAccessChain(buffer.pointer_type, buffer.id, ctx.u32_zero_value, index)};
|
const Id pointer{ctx.OpAccessChain(buffer.pointer_type, buffer.id, ctx.u32_zero_value, index)};
|
||||||
const auto [scope, semantics]{AtomicArgs(ctx)};
|
const auto [scope, semantics]{AtomicArgs(ctx)};
|
||||||
return (ctx.*atomic_func)(ctx.U32[1], pointer, scope, semantics, value);
|
return (ctx.*atomic_func)(ctx.U32[1], pointer, scope, semantics, value);
|
||||||
@ -55,13 +52,13 @@ Id EmitBufferAtomicUMax32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id addre
|
|||||||
}
|
}
|
||||||
|
|
||||||
Id EmitBufferAtomicInc32(EmitContext&, IR::Inst*, u32, Id, Id) {
|
Id EmitBufferAtomicInc32(EmitContext&, IR::Inst*, u32, Id, Id) {
|
||||||
// TODO: This is not yet implemented
|
// TODO
|
||||||
throw NotImplementedException("SPIR-V Instruction");
|
UNREACHABLE_MSG("Unsupported BUFFER_ATOMIC opcode: ", IR::Opcode::BufferAtomicInc32);
|
||||||
}
|
}
|
||||||
|
|
||||||
Id EmitBufferAtomicDec32(EmitContext&, IR::Inst*, u32, Id, Id) {
|
Id EmitBufferAtomicDec32(EmitContext&, IR::Inst*, u32, Id, Id){
|
||||||
// TODO: This is not yet implemented
|
// TODO
|
||||||
throw NotImplementedException("SPIR-V Instruction");
|
UNREACHABLE_MSG("Unsupported BUFFER_ATOMIC opcode: ", IR::Opcode::BufferAtomicDec32);
|
||||||
}
|
}
|
||||||
|
|
||||||
Id EmitBufferAtomicAnd32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) {
|
Id EmitBufferAtomicAnd32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value) {
|
||||||
|
@ -424,10 +424,10 @@ void Translator::BUFFER_ATOMIC(AtomicOp op, const GcnInst& inst) {
|
|||||||
|
|
||||||
const IR::Value address = [&]() -> IR::Value {
|
const IR::Value address = [&]() -> IR::Value {
|
||||||
if (mtbuf.idxen && mtbuf.offen) {
|
if (mtbuf.idxen && mtbuf.offen) {
|
||||||
return ir.CompositeConstruct(ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1));
|
return ir.CompositeConstruct(ir.GetVectorReg(addr_reg), ir.GetVectorReg(addr_reg + 1));
|
||||||
}
|
}
|
||||||
if (mtbuf.idxen || mtbuf.offen) {
|
if (mtbuf.idxen || mtbuf.offen) {
|
||||||
return ir.GetVectorReg(addr_reg);
|
return ir.GetVectorReg(addr_reg);
|
||||||
}
|
}
|
||||||
return IR::Value{};
|
return IR::Value{};
|
||||||
}();
|
}();
|
||||||
@ -439,7 +439,7 @@ void Translator::BUFFER_ATOMIC(AtomicOp op, const GcnInst& inst) {
|
|||||||
|
|
||||||
const IR::Value handle =
|
const IR::Value handle =
|
||||||
ir.CompositeConstruct(ir.GetScalarReg(sharp), ir.GetScalarReg(sharp + 1),
|
ir.CompositeConstruct(ir.GetScalarReg(sharp), ir.GetScalarReg(sharp + 1),
|
||||||
ir.GetScalarReg(sharp + 2), ir.GetScalarReg(sharp + 3));
|
ir.GetScalarReg(sharp + 2), ir.GetScalarReg(sharp + 3));
|
||||||
const IR::Value value = ir.GetVectorReg(src_reg);
|
const IR::Value value = ir.GetVectorReg(src_reg);
|
||||||
|
|
||||||
const IR::Value result = [&] {
|
const IR::Value result = [&] {
|
||||||
|
@ -115,12 +115,11 @@ public:
|
|||||||
[[nodiscard]] Value BufferAtomicAnd(const Value& handle, const Value& address,
|
[[nodiscard]] Value BufferAtomicAnd(const Value& handle, const Value& address,
|
||||||
const Value& value, BufferInstInfo info);
|
const Value& value, BufferInstInfo info);
|
||||||
[[nodiscard]] Value BufferAtomicOr(const Value& handle, const Value& address,
|
[[nodiscard]] Value BufferAtomicOr(const Value& handle, const Value& address,
|
||||||
const Value& value,
|
const Value& value, BufferInstInfo info);
|
||||||
BufferInstInfo info);
|
|
||||||
[[nodiscard]] Value BufferAtomicXor(const Value& handle, const Value& address,
|
[[nodiscard]] Value BufferAtomicXor(const Value& handle, const Value& address,
|
||||||
const Value& value, BufferInstInfo info);
|
const Value& value, BufferInstInfo info);
|
||||||
[[nodiscard]] Value BufferAtomicExchange(const Value& handle, const Value& address,
|
[[nodiscard]] Value BufferAtomicExchange(const Value& handle, const Value& address,
|
||||||
const Value& value, BufferInstInfo info);
|
const Value& value, BufferInstInfo info);
|
||||||
|
|
||||||
[[nodiscard]] U32 LaneId();
|
[[nodiscard]] U32 LaneId();
|
||||||
[[nodiscard]] U32 WarpId();
|
[[nodiscard]] U32 WarpId();
|
||||||
|
Loading…
Reference in New Issue
Block a user