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

@@ -0,0 +1,22 @@
// +build ignore
package main
import (
. "github.com/mmcloughlin/avo/build"
. "github.com/mmcloughlin/avo/operand"
)
func main() {
TEXT("Issue89", NOSPLIT, "func() uint64")
x := GP64()
MOVQ(U32(42), x)
for i := 0; i < 100; i++ {
zero := GP64()
XORQ(zero, zero)
ADDQ(zero, x)
}
Store(x, ReturnIndex(0))
RET()
Generate()
}