inst,ir: cancelling inputs (#92)

Adds support for a `CancellingInputs` instruction flag, to indicate cases like `XORQ R10, R10` where the instruction actually does not depend on the value of `R10` at all.

Closes #89
This commit is contained in:
Michael McLoughlin
2019-07-28 17:58:49 -07:00
committed by GitHub
parent 8f97788836
commit d43efabdbe
16 changed files with 970 additions and 392 deletions

View File

@@ -97,6 +97,11 @@ func construct(i inst.Instruction, f inst.Form, s signature) string {
fmt.Fprintf(buf, "\tIsConditional: %#v,\n", i.IsConditionalBranch())
}
// Cancelling inputs.
if f.CancellingInputs {
fmt.Fprintf(buf, "\tCancellingInputs: true,\n")
}
fmt.Fprintf(buf, "}")
return buf.String()
}

View File

@@ -57,6 +57,10 @@ func (g *godata) Generate(is []inst.Instruction) ([]byte, error) {
g.Printf("},\n")
}
if f.CancellingInputs {
g.Printf("CancellingInputs: true,\n")
}
g.Printf("},\n")
}
g.Printf("},\n")