shader: Read branch conditions from an instruction

Fixes the identity removal pass.
This commit is contained in:
ReinUsesLisp 2021-05-18 02:04:22 -03:00 committed by ameerj
parent 43bca14217
commit 5c6dc51c69
12 changed files with 36 additions and 16 deletions

View file

@ -61,8 +61,12 @@ F64 IREmitter::Imm64(f64 value) const {
return F64{Value{value}};
}
void IREmitter::DummyReference(const Value& value) {
Inst(Opcode::DummyReference, value);
U1 IREmitter::ConditionRef(const U1& value) {
return Inst<U1>(Opcode::ConditionRef, value);
}
void IREmitter::Reference(const Value& value) {
Inst(Opcode::Reference, value);
}
void IREmitter::PhiMove(IR::Inst& phi, const Value& value) {

View file

@ -32,7 +32,9 @@ public:
[[nodiscard]] U64 Imm64(s64 value) const;
[[nodiscard]] F64 Imm64(f64 value) const;
void DummyReference(const Value& value);
U1 ConditionRef(const U1& value);
void Reference(const Value& value);
void PhiMove(IR::Inst& phi, const Value& value);
void Prologue();

View file

@ -56,7 +56,8 @@ Inst::~Inst() {
bool Inst::MayHaveSideEffects() const noexcept {
switch (op) {
case Opcode::DummyReference:
case Opcode::ConditionRef:
case Opcode::Reference:
case Opcode::PhiMove:
case Opcode::Prologue:
case Opcode::Epilogue:

View file

@ -6,7 +6,8 @@
OPCODE(Phi, Opaque, )
OPCODE(Identity, Opaque, Opaque, )
OPCODE(Void, Void, )
OPCODE(DummyReference, Void, Opaque, )
OPCODE(ConditionRef, U1, U1, )
OPCODE(Reference, Void, Opaque, )
OPCODE(PhiMove, Void, Opaque, Opaque, )
// Special operations