summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/frontend/ir')
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.cpp6
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.h2
-rw-r--r--src/shader_recompiler/frontend/ir/opcodes.inc3
3 files changed, 11 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
index 6e7dddead..ba9591727 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
@@ -1567,6 +1567,12 @@ Value IREmitter::ImageQueryDimension(const Value& handle, const IR::U32& lod) {
1567 return Inst(op, handle, lod); 1567 return Inst(op, handle, lod);
1568} 1568}
1569 1569
1570Value IREmitter::ImageQueryLod(const Value& handle, const Value& coords) {
1571 const Opcode op{handle.IsImmediate() ? Opcode::BoundImageQueryLod
1572 : Opcode::BindlessImageQueryLod};
1573 return Inst(op, handle, coords);
1574}
1575
1570U1 IREmitter::VoteAll(const U1& value) { 1576U1 IREmitter::VoteAll(const U1& value) {
1571 return Inst<U1>(Opcode::VoteAll, value); 1577 return Inst<U1>(Opcode::VoteAll, value);
1572} 1578}
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.h b/src/shader_recompiler/frontend/ir/ir_emitter.h
index 8f3325738..9e752b208 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.h
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.h
@@ -255,6 +255,8 @@ public:
255 TextureInstInfo info); 255 TextureInstInfo info);
256 [[nodiscard]] Value ImageQueryDimension(const Value& handle, const IR::U32& lod); 256 [[nodiscard]] Value ImageQueryDimension(const Value& handle, const IR::U32& lod);
257 257
258 [[nodiscard]] Value ImageQueryLod(const Value& handle, const Value& coords);
259
258 [[nodiscard]] Value ImageGather(const Value& handle, const Value& coords, const Value& offset, 260 [[nodiscard]] Value ImageGather(const Value& handle, const Value& coords, const Value& offset,
259 const Value& offset2, TextureInstInfo info); 261 const Value& offset2, TextureInstInfo info);
260 262
diff --git a/src/shader_recompiler/frontend/ir/opcodes.inc b/src/shader_recompiler/frontend/ir/opcodes.inc
index 302b8471d..49cdcd57f 100644
--- a/src/shader_recompiler/frontend/ir/opcodes.inc
+++ b/src/shader_recompiler/frontend/ir/opcodes.inc
@@ -380,6 +380,7 @@ OPCODE(BindlessImageGather, F32x4, U32,
380OPCODE(BindlessImageGatherDref, F32x4, U32, Opaque, Opaque, Opaque, F32, ) 380OPCODE(BindlessImageGatherDref, F32x4, U32, Opaque, Opaque, Opaque, F32, )
381OPCODE(BindlessImageFetch, F32x4, U32, Opaque, Opaque, Opaque, Opaque, ) 381OPCODE(BindlessImageFetch, F32x4, U32, Opaque, Opaque, Opaque, Opaque, )
382OPCODE(BindlessImageQueryDimensions, U32x4, U32, U32, ) 382OPCODE(BindlessImageQueryDimensions, U32x4, U32, U32, )
383OPCODE(BindlessImageQueryLod, F32x4, U32, Opaque, )
383 384
384OPCODE(BoundImageSampleImplicitLod, F32x4, U32, Opaque, Opaque, Opaque, ) 385OPCODE(BoundImageSampleImplicitLod, F32x4, U32, Opaque, Opaque, Opaque, )
385OPCODE(BoundImageSampleExplicitLod, F32x4, U32, Opaque, Opaque, Opaque, ) 386OPCODE(BoundImageSampleExplicitLod, F32x4, U32, Opaque, Opaque, Opaque, )
@@ -389,6 +390,7 @@ OPCODE(BoundImageGather, F32x4, U32,
389OPCODE(BoundImageGatherDref, F32x4, U32, Opaque, Opaque, Opaque, F32, ) 390OPCODE(BoundImageGatherDref, F32x4, U32, Opaque, Opaque, Opaque, F32, )
390OPCODE(BoundImageFetch, F32x4, U32, Opaque, Opaque, Opaque, Opaque, ) 391OPCODE(BoundImageFetch, F32x4, U32, Opaque, Opaque, Opaque, Opaque, )
391OPCODE(BoundImageQueryDimensions, U32x4, U32, U32, ) 392OPCODE(BoundImageQueryDimensions, U32x4, U32, U32, )
393OPCODE(BoundImageQueryLod, F32x4, U32, Opaque, )
392 394
393OPCODE(ImageSampleImplicitLod, F32x4, U32, Opaque, Opaque, Opaque, ) 395OPCODE(ImageSampleImplicitLod, F32x4, U32, Opaque, Opaque, Opaque, )
394OPCODE(ImageSampleExplicitLod, F32x4, U32, Opaque, Opaque, Opaque, ) 396OPCODE(ImageSampleExplicitLod, F32x4, U32, Opaque, Opaque, Opaque, )
@@ -398,6 +400,7 @@ OPCODE(ImageGather, F32x4, U32,
398OPCODE(ImageGatherDref, F32x4, U32, Opaque, Opaque, Opaque, F32, ) 400OPCODE(ImageGatherDref, F32x4, U32, Opaque, Opaque, Opaque, F32, )
399OPCODE(ImageFetch, F32x4, U32, Opaque, Opaque, Opaque, Opaque, ) 401OPCODE(ImageFetch, F32x4, U32, Opaque, Opaque, Opaque, Opaque, )
400OPCODE(ImageQueryDimensions, U32x4, U32, U32, ) 402OPCODE(ImageQueryDimensions, U32x4, U32, U32, )
403OPCODE(ImageQueryLod, F32x4, U32, Opaque, )
401 404
402// Warp operations 405// Warp operations
403OPCODE(VoteAll, U1, U1, ) 406OPCODE(VoteAll, U1, U1, )