mirror of
https://github.com/golang/go
synced 2024-10-05 18:31:28 -06:00
[dev.ssa] cmd/compile: add a few more binary ops
With this, all non-float, non-complex binary ops found in the standard library are implemented. Change-Id: I6087f115229888c0dce10ab35db3fd36a0e0a8b1 Reviewed-on: https://go-review.googlesource.com/12799 Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
9cb332efd4
commit
1bab5b9b41
@ -702,8 +702,10 @@ var opToSSA = map[opAndType]ssa.Op{
|
||||
opAndType{OADD, TUINT16}: ssa.OpAdd16,
|
||||
opAndType{OADD, TINT32}: ssa.OpAdd32,
|
||||
opAndType{OADD, TUINT32}: ssa.OpAdd32,
|
||||
opAndType{OADD, TPTR32}: ssa.OpAdd32,
|
||||
opAndType{OADD, TINT64}: ssa.OpAdd64,
|
||||
opAndType{OADD, TUINT64}: ssa.OpAdd64,
|
||||
opAndType{OADD, TPTR64}: ssa.OpAdd64,
|
||||
|
||||
opAndType{OSUB, TINT8}: ssa.OpSub8,
|
||||
opAndType{OSUB, TUINT8}: ssa.OpSub8,
|
||||
@ -761,39 +763,41 @@ var opToSSA = map[opAndType]ssa.Op{
|
||||
opAndType{ORSH, TINT64}: ssa.OpRsh64,
|
||||
opAndType{ORSH, TUINT64}: ssa.OpRsh64U,
|
||||
|
||||
opAndType{OEQ, TBOOL}: ssa.OpEq8,
|
||||
opAndType{OEQ, TINT8}: ssa.OpEq8,
|
||||
opAndType{OEQ, TUINT8}: ssa.OpEq8,
|
||||
opAndType{OEQ, TINT16}: ssa.OpEq16,
|
||||
opAndType{OEQ, TUINT16}: ssa.OpEq16,
|
||||
opAndType{OEQ, TINT32}: ssa.OpEq32,
|
||||
opAndType{OEQ, TUINT32}: ssa.OpEq32,
|
||||
opAndType{OEQ, TINT64}: ssa.OpEq64,
|
||||
opAndType{OEQ, TUINT64}: ssa.OpEq64,
|
||||
opAndType{OEQ, TPTR64}: ssa.OpEq64,
|
||||
opAndType{OEQ, TINTER}: ssa.OpEqFat, // e == nil only
|
||||
opAndType{OEQ, TARRAY}: ssa.OpEqFat, // slice only; a == nil only
|
||||
opAndType{OEQ, TFUNC}: ssa.OpEqPtr,
|
||||
opAndType{OEQ, TMAP}: ssa.OpEqPtr,
|
||||
opAndType{OEQ, TCHAN}: ssa.OpEqPtr,
|
||||
opAndType{OEQ, TUINTPTR}: ssa.OpEqPtr,
|
||||
opAndType{OEQ, TBOOL}: ssa.OpEq8,
|
||||
opAndType{OEQ, TINT8}: ssa.OpEq8,
|
||||
opAndType{OEQ, TUINT8}: ssa.OpEq8,
|
||||
opAndType{OEQ, TINT16}: ssa.OpEq16,
|
||||
opAndType{OEQ, TUINT16}: ssa.OpEq16,
|
||||
opAndType{OEQ, TINT32}: ssa.OpEq32,
|
||||
opAndType{OEQ, TUINT32}: ssa.OpEq32,
|
||||
opAndType{OEQ, TINT64}: ssa.OpEq64,
|
||||
opAndType{OEQ, TUINT64}: ssa.OpEq64,
|
||||
opAndType{OEQ, TPTR64}: ssa.OpEq64,
|
||||
opAndType{OEQ, TINTER}: ssa.OpEqFat, // e == nil only
|
||||
opAndType{OEQ, TARRAY}: ssa.OpEqFat, // slice only; a == nil only
|
||||
opAndType{OEQ, TFUNC}: ssa.OpEqPtr,
|
||||
opAndType{OEQ, TMAP}: ssa.OpEqPtr,
|
||||
opAndType{OEQ, TCHAN}: ssa.OpEqPtr,
|
||||
opAndType{OEQ, TUINTPTR}: ssa.OpEqPtr,
|
||||
opAndType{OEQ, TUNSAFEPTR}: ssa.OpEqPtr,
|
||||
|
||||
opAndType{ONE, TBOOL}: ssa.OpNeq8,
|
||||
opAndType{ONE, TINT8}: ssa.OpNeq8,
|
||||
opAndType{ONE, TUINT8}: ssa.OpNeq8,
|
||||
opAndType{ONE, TINT16}: ssa.OpNeq16,
|
||||
opAndType{ONE, TUINT16}: ssa.OpNeq16,
|
||||
opAndType{ONE, TINT32}: ssa.OpNeq32,
|
||||
opAndType{ONE, TUINT32}: ssa.OpNeq32,
|
||||
opAndType{ONE, TINT64}: ssa.OpNeq64,
|
||||
opAndType{ONE, TUINT64}: ssa.OpNeq64,
|
||||
opAndType{ONE, TPTR64}: ssa.OpNeq64,
|
||||
opAndType{ONE, TINTER}: ssa.OpNeqFat, // e != nil only
|
||||
opAndType{ONE, TARRAY}: ssa.OpNeqFat, // slice only; a != nil only
|
||||
opAndType{ONE, TFUNC}: ssa.OpNeqPtr,
|
||||
opAndType{ONE, TMAP}: ssa.OpNeqPtr,
|
||||
opAndType{ONE, TCHAN}: ssa.OpNeqPtr,
|
||||
opAndType{ONE, TUINTPTR}: ssa.OpNeqPtr,
|
||||
opAndType{ONE, TBOOL}: ssa.OpNeq8,
|
||||
opAndType{ONE, TINT8}: ssa.OpNeq8,
|
||||
opAndType{ONE, TUINT8}: ssa.OpNeq8,
|
||||
opAndType{ONE, TINT16}: ssa.OpNeq16,
|
||||
opAndType{ONE, TUINT16}: ssa.OpNeq16,
|
||||
opAndType{ONE, TINT32}: ssa.OpNeq32,
|
||||
opAndType{ONE, TUINT32}: ssa.OpNeq32,
|
||||
opAndType{ONE, TINT64}: ssa.OpNeq64,
|
||||
opAndType{ONE, TUINT64}: ssa.OpNeq64,
|
||||
opAndType{ONE, TPTR64}: ssa.OpNeq64,
|
||||
opAndType{ONE, TINTER}: ssa.OpNeqFat, // e != nil only
|
||||
opAndType{ONE, TARRAY}: ssa.OpNeqFat, // slice only; a != nil only
|
||||
opAndType{ONE, TFUNC}: ssa.OpNeqPtr,
|
||||
opAndType{ONE, TMAP}: ssa.OpNeqPtr,
|
||||
opAndType{ONE, TCHAN}: ssa.OpNeqPtr,
|
||||
opAndType{ONE, TUINTPTR}: ssa.OpNeqPtr,
|
||||
opAndType{ONE, TUNSAFEPTR}: ssa.OpNeqPtr,
|
||||
|
||||
opAndType{OLT, TINT8}: ssa.OpLess8,
|
||||
opAndType{OLT, TUINT8}: ssa.OpLess8U,
|
||||
|
Loading…
Reference in New Issue
Block a user