mirror of https://github.com/golang/go.git
cmd/compile: replace isSigned(t) with t.IsSigned()
No change in semantics, just removing an unneeded helper. Also align rules a bit. Change-Id: Ie4dabb99392315a7700c645b3d0931eb8766a5fa Reviewed-on: https://go-review.googlesource.com/c/go/+/483439 Reviewed-by: David Chase <drchase@google.com> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Keith Randall <khr@google.com>
This commit is contained in:
parent
60140a86b3
commit
a3f3868c7a
|
|
@ -206,8 +206,8 @@
|
||||||
(Load <t> ptr mem) && is64BitFloat(t) => (MOVSDload ptr mem)
|
(Load <t> ptr mem) && is64BitFloat(t) => (MOVSDload ptr mem)
|
||||||
|
|
||||||
// Lowering stores
|
// Lowering stores
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVSDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVSDstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVSSstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVSSstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVLstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVLstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 2 => (MOVWstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 2 => (MOVWstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 1 => (MOVBstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 1 => (MOVBstore ptr val mem)
|
||||||
|
|
|
||||||
|
|
@ -234,8 +234,8 @@
|
||||||
(Load <t> ptr mem) && is64BitFloat(t) => (MOVSDload ptr mem)
|
(Load <t> ptr mem) && is64BitFloat(t) => (MOVSDload ptr mem)
|
||||||
|
|
||||||
// Lowering stores
|
// Lowering stores
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVSDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVSDstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVSSstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVSSstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVQstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVQstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVLstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVLstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 2 => (MOVWstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 2 => (MOVWstore ptr val mem)
|
||||||
|
|
|
||||||
|
|
@ -253,10 +253,10 @@
|
||||||
|
|
||||||
// loads
|
// loads
|
||||||
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is8BitInt(t) && isSigned(t)) => (MOVBload ptr mem)
|
(Load <t> ptr mem) && (is8BitInt(t) && t.IsSigned()) => (MOVBload ptr mem)
|
||||||
(Load <t> ptr mem) && (is8BitInt(t) && !isSigned(t)) => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && (is8BitInt(t) && !t.IsSigned()) => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && isSigned(t)) => (MOVHload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && t.IsSigned()) => (MOVHload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && !isSigned(t)) => (MOVHUload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && !t.IsSigned()) => (MOVHUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is32BitInt(t) || isPtr(t)) => (MOVWload ptr mem)
|
(Load <t> ptr mem) && (is32BitInt(t) || isPtr(t)) => (MOVWload ptr mem)
|
||||||
(Load <t> ptr mem) && is32BitFloat(t) => (MOVFload ptr mem)
|
(Load <t> ptr mem) && is32BitFloat(t) => (MOVFload ptr mem)
|
||||||
(Load <t> ptr mem) && is64BitFloat(t) => (MOVDload ptr mem)
|
(Load <t> ptr mem) && is64BitFloat(t) => (MOVDload ptr mem)
|
||||||
|
|
@ -265,8 +265,8 @@
|
||||||
(Store {t} ptr val mem) && t.Size() == 1 => (MOVBstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 1 => (MOVBstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVFstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVFstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVDstore ptr val mem)
|
||||||
|
|
||||||
// zero instructions
|
// zero instructions
|
||||||
(Zero [0] _ mem) => mem
|
(Zero [0] _ mem) => mem
|
||||||
|
|
|
||||||
|
|
@ -327,12 +327,12 @@
|
||||||
|
|
||||||
// loads
|
// loads
|
||||||
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is8BitInt(t) && isSigned(t)) => (MOVBload ptr mem)
|
(Load <t> ptr mem) && (is8BitInt(t) && t.IsSigned()) => (MOVBload ptr mem)
|
||||||
(Load <t> ptr mem) && (is8BitInt(t) && !isSigned(t)) => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && (is8BitInt(t) && !t.IsSigned()) => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && isSigned(t)) => (MOVHload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && t.IsSigned()) => (MOVHload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && !isSigned(t)) => (MOVHUload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && !t.IsSigned()) => (MOVHUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is32BitInt(t) && isSigned(t)) => (MOVWload ptr mem)
|
(Load <t> ptr mem) && (is32BitInt(t) && t.IsSigned()) => (MOVWload ptr mem)
|
||||||
(Load <t> ptr mem) && (is32BitInt(t) && !isSigned(t)) => (MOVWUload ptr mem)
|
(Load <t> ptr mem) && (is32BitInt(t) && !t.IsSigned()) => (MOVWUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVDload ptr mem)
|
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVDload ptr mem)
|
||||||
(Load <t> ptr mem) && is32BitFloat(t) => (FMOVSload ptr mem)
|
(Load <t> ptr mem) && is32BitFloat(t) => (FMOVSload ptr mem)
|
||||||
(Load <t> ptr mem) && is64BitFloat(t) => (FMOVDload ptr mem)
|
(Load <t> ptr mem) && is64BitFloat(t) => (FMOVDload ptr mem)
|
||||||
|
|
@ -342,8 +342,8 @@
|
||||||
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVDstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (FMOVSstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (FMOVSstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (FMOVDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (FMOVDstore ptr val mem)
|
||||||
|
|
||||||
// zeroing
|
// zeroing
|
||||||
(Zero [0] _ mem) => mem
|
(Zero [0] _ mem) => mem
|
||||||
|
|
|
||||||
|
|
@ -233,12 +233,12 @@
|
||||||
|
|
||||||
// loads
|
// loads
|
||||||
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is8BitInt(t) && isSigned(t)) => (MOVBload ptr mem)
|
(Load <t> ptr mem) && (is8BitInt(t) && t.IsSigned()) => (MOVBload ptr mem)
|
||||||
(Load <t> ptr mem) && (is8BitInt(t) && !isSigned(t)) => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && (is8BitInt(t) && !t.IsSigned()) => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && isSigned(t)) => (MOVHload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && t.IsSigned()) => (MOVHload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && !isSigned(t)) => (MOVHUload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && !t.IsSigned()) => (MOVHUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is32BitInt(t) && isSigned(t)) => (MOVWload ptr mem)
|
(Load <t> ptr mem) && (is32BitInt(t) && t.IsSigned()) => (MOVWload ptr mem)
|
||||||
(Load <t> ptr mem) && (is32BitInt(t) && !isSigned(t)) => (MOVWUload ptr mem)
|
(Load <t> ptr mem) && (is32BitInt(t) && !t.IsSigned()) => (MOVWUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVVload ptr mem)
|
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVVload ptr mem)
|
||||||
(Load <t> ptr mem) && is32BitFloat(t) => (MOVFload ptr mem)
|
(Load <t> ptr mem) && is32BitFloat(t) => (MOVFload ptr mem)
|
||||||
(Load <t> ptr mem) && is64BitFloat(t) => (MOVDload ptr mem)
|
(Load <t> ptr mem) && is64BitFloat(t) => (MOVDload ptr mem)
|
||||||
|
|
@ -248,8 +248,8 @@
|
||||||
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVVstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVVstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVFstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVFstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVDstore ptr val mem)
|
||||||
|
|
||||||
// zeroing
|
// zeroing
|
||||||
(Zero [0] _ mem) => mem
|
(Zero [0] _ mem) => mem
|
||||||
|
|
|
||||||
|
|
@ -215,10 +215,10 @@
|
||||||
|
|
||||||
// loads
|
// loads
|
||||||
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is8BitInt(t) && isSigned(t)) => (MOVBload ptr mem)
|
(Load <t> ptr mem) && (is8BitInt(t) && t.IsSigned()) => (MOVBload ptr mem)
|
||||||
(Load <t> ptr mem) && (is8BitInt(t) && !isSigned(t)) => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && (is8BitInt(t) && !t.IsSigned()) => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && isSigned(t)) => (MOVHload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && t.IsSigned()) => (MOVHload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && !isSigned(t)) => (MOVHUload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && !t.IsSigned()) => (MOVHUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is32BitInt(t) || isPtr(t)) => (MOVWload ptr mem)
|
(Load <t> ptr mem) && (is32BitInt(t) || isPtr(t)) => (MOVWload ptr mem)
|
||||||
(Load <t> ptr mem) && is32BitFloat(t) => (MOVFload ptr mem)
|
(Load <t> ptr mem) && is32BitFloat(t) => (MOVFload ptr mem)
|
||||||
(Load <t> ptr mem) && is64BitFloat(t) => (MOVDload ptr mem)
|
(Load <t> ptr mem) && is64BitFloat(t) => (MOVDload ptr mem)
|
||||||
|
|
@ -227,8 +227,8 @@
|
||||||
(Store {t} ptr val mem) && t.Size() == 1 => (MOVBstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 1 => (MOVBstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVFstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVFstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVDstore ptr val mem)
|
||||||
|
|
||||||
// zero instructions
|
// zero instructions
|
||||||
(Zero [0] _ mem) => mem
|
(Zero [0] _ mem) => mem
|
||||||
|
|
|
||||||
|
|
@ -224,12 +224,12 @@
|
||||||
|
|
||||||
// loads
|
// loads
|
||||||
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is8BitInt(t) && isSigned(t)) => (MOVBload ptr mem)
|
(Load <t> ptr mem) && (is8BitInt(t) && t.IsSigned()) => (MOVBload ptr mem)
|
||||||
(Load <t> ptr mem) && (is8BitInt(t) && !isSigned(t)) => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && (is8BitInt(t) && !t.IsSigned()) => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && isSigned(t)) => (MOVHload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && t.IsSigned()) => (MOVHload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && !isSigned(t)) => (MOVHUload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && !t.IsSigned()) => (MOVHUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is32BitInt(t) && isSigned(t)) => (MOVWload ptr mem)
|
(Load <t> ptr mem) && (is32BitInt(t) && t.IsSigned()) => (MOVWload ptr mem)
|
||||||
(Load <t> ptr mem) && (is32BitInt(t) && !isSigned(t)) => (MOVWUload ptr mem)
|
(Load <t> ptr mem) && (is32BitInt(t) && !t.IsSigned()) => (MOVWUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVVload ptr mem)
|
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVVload ptr mem)
|
||||||
(Load <t> ptr mem) && is32BitFloat(t) => (MOVFload ptr mem)
|
(Load <t> ptr mem) && is32BitFloat(t) => (MOVFload ptr mem)
|
||||||
(Load <t> ptr mem) && is64BitFloat(t) => (MOVDload ptr mem)
|
(Load <t> ptr mem) && is64BitFloat(t) => (MOVDload ptr mem)
|
||||||
|
|
@ -239,8 +239,8 @@
|
||||||
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVVstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVVstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVFstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (MOVFstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (MOVDstore ptr val mem)
|
||||||
|
|
||||||
// zeroing
|
// zeroing
|
||||||
(Zero [0] _ mem) => mem
|
(Zero [0] _ mem) => mem
|
||||||
|
|
|
||||||
|
|
@ -84,11 +84,11 @@
|
||||||
(ZeroExt16to(32|64) ...) => (MOVHZreg ...)
|
(ZeroExt16to(32|64) ...) => (MOVHZreg ...)
|
||||||
(ZeroExt32to64 ...) => (MOVWZreg ...)
|
(ZeroExt32to64 ...) => (MOVWZreg ...)
|
||||||
|
|
||||||
(Trunc(16|32|64)to8 <t> x) && isSigned(t) => (MOVBreg x)
|
(Trunc(16|32|64)to8 <t> x) && t.IsSigned() => (MOVBreg x)
|
||||||
(Trunc(16|32|64)to8 x) => (MOVBZreg x)
|
(Trunc(16|32|64)to8 x) => (MOVBZreg x)
|
||||||
(Trunc(32|64)to16 <t> x) && isSigned(t) => (MOVHreg x)
|
(Trunc(32|64)to16 <t> x) && t.IsSigned() => (MOVHreg x)
|
||||||
(Trunc(32|64)to16 x) => (MOVHZreg x)
|
(Trunc(32|64)to16 x) => (MOVHZreg x)
|
||||||
(Trunc64to32 <t> x) && isSigned(t) => (MOVWreg x)
|
(Trunc64to32 <t> x) && t.IsSigned() => (MOVWreg x)
|
||||||
(Trunc64to32 x) => (MOVWZreg x)
|
(Trunc64to32 x) => (MOVWZreg x)
|
||||||
|
|
||||||
// Lowering constants
|
// Lowering constants
|
||||||
|
|
@ -274,14 +274,14 @@
|
||||||
// Lowering comparisons
|
// Lowering comparisons
|
||||||
(EqB x y) => (Select0 <typ.Int> (ANDCCconst [1] (EQV x y)))
|
(EqB x y) => (Select0 <typ.Int> (ANDCCconst [1] (EQV x y)))
|
||||||
// Sign extension dependence on operand sign sets up for sign/zero-extension elision later
|
// Sign extension dependence on operand sign sets up for sign/zero-extension elision later
|
||||||
(Eq(8|16) x y) && isSigned(x.Type) && isSigned(y.Type) => (Equal (CMPW (SignExt(8|16)to32 x) (SignExt(8|16)to32 y)))
|
(Eq(8|16) x y) && x.Type.IsSigned() && y.Type.IsSigned() => (Equal (CMPW (SignExt(8|16)to32 x) (SignExt(8|16)to32 y)))
|
||||||
(Eq(8|16) x y) => (Equal (CMPW (ZeroExt(8|16)to32 x) (ZeroExt(8|16)to32 y)))
|
(Eq(8|16) x y) => (Equal (CMPW (ZeroExt(8|16)to32 x) (ZeroExt(8|16)to32 y)))
|
||||||
(Eq(32|64|Ptr) x y) => (Equal ((CMPW|CMP|CMP) x y))
|
(Eq(32|64|Ptr) x y) => (Equal ((CMPW|CMP|CMP) x y))
|
||||||
(Eq(32|64)F x y) => (Equal (FCMPU x y))
|
(Eq(32|64)F x y) => (Equal (FCMPU x y))
|
||||||
|
|
||||||
(NeqB ...) => (XOR ...)
|
(NeqB ...) => (XOR ...)
|
||||||
// Like Eq8 and Eq16, prefer sign extension likely to enable later elision.
|
// Like Eq8 and Eq16, prefer sign extension likely to enable later elision.
|
||||||
(Neq(8|16) x y) && isSigned(x.Type) && isSigned(y.Type) => (NotEqual (CMPW (SignExt(8|16)to32 x) (SignExt(8|16)to32 y)))
|
(Neq(8|16) x y) && x.Type.IsSigned() && y.Type.IsSigned() => (NotEqual (CMPW (SignExt(8|16)to32 x) (SignExt(8|16)to32 y)))
|
||||||
(Neq(8|16) x y) => (NotEqual (CMPW (ZeroExt(8|16)to32 x) (ZeroExt(8|16)to32 y)))
|
(Neq(8|16) x y) => (NotEqual (CMPW (ZeroExt(8|16)to32 x) (ZeroExt(8|16)to32 y)))
|
||||||
(Neq(32|64|Ptr) x y) => (NotEqual ((CMPW|CMP|CMP) x y))
|
(Neq(32|64|Ptr) x y) => (NotEqual ((CMPW|CMP|CMP) x y))
|
||||||
(Neq(32|64)F x y) => (NotEqual (FCMPU x y))
|
(Neq(32|64)F x y) => (NotEqual (FCMPU x y))
|
||||||
|
|
@ -419,19 +419,19 @@
|
||||||
|
|
||||||
// Lowering loads
|
// Lowering loads
|
||||||
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVDload ptr mem)
|
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVDload ptr mem)
|
||||||
(Load <t> ptr mem) && is32BitInt(t) && isSigned(t) => (MOVWload ptr mem)
|
(Load <t> ptr mem) && is32BitInt(t) && t.IsSigned() => (MOVWload ptr mem)
|
||||||
(Load <t> ptr mem) && is32BitInt(t) && !isSigned(t) => (MOVWZload ptr mem)
|
(Load <t> ptr mem) && is32BitInt(t) && !t.IsSigned() => (MOVWZload ptr mem)
|
||||||
(Load <t> ptr mem) && is16BitInt(t) && isSigned(t) => (MOVHload ptr mem)
|
(Load <t> ptr mem) && is16BitInt(t) && t.IsSigned() => (MOVHload ptr mem)
|
||||||
(Load <t> ptr mem) && is16BitInt(t) && !isSigned(t) => (MOVHZload ptr mem)
|
(Load <t> ptr mem) && is16BitInt(t) && !t.IsSigned() => (MOVHZload ptr mem)
|
||||||
(Load <t> ptr mem) && t.IsBoolean() => (MOVBZload ptr mem)
|
(Load <t> ptr mem) && t.IsBoolean() => (MOVBZload ptr mem)
|
||||||
(Load <t> ptr mem) && is8BitInt(t) && isSigned(t) => (MOVBreg (MOVBZload ptr mem)) // PPC has no signed-byte load.
|
(Load <t> ptr mem) && is8BitInt(t) && t.IsSigned() => (MOVBreg (MOVBZload ptr mem)) // PPC has no signed-byte load.
|
||||||
(Load <t> ptr mem) && is8BitInt(t) && !isSigned(t) => (MOVBZload ptr mem)
|
(Load <t> ptr mem) && is8BitInt(t) && !t.IsSigned() => (MOVBZload ptr mem)
|
||||||
|
|
||||||
(Load <t> ptr mem) && is32BitFloat(t) => (FMOVSload ptr mem)
|
(Load <t> ptr mem) && is32BitFloat(t) => (FMOVSload ptr mem)
|
||||||
(Load <t> ptr mem) && is64BitFloat(t) => (FMOVDload ptr mem)
|
(Load <t> ptr mem) && is64BitFloat(t) => (FMOVDload ptr mem)
|
||||||
|
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (FMOVDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (FMOVDstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (FMOVSstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (FMOVSstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVDstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
||||||
|
|
@ -804,12 +804,12 @@
|
||||||
(MOV(B|W)Zreg x:(Select0 (LoweredAtomicLoad(8|32) _ _))) => x
|
(MOV(B|W)Zreg x:(Select0 (LoweredAtomicLoad(8|32) _ _))) => x
|
||||||
|
|
||||||
// don't extend if argument is already extended
|
// don't extend if argument is already extended
|
||||||
(MOVBreg x:(Arg <t>)) && is8BitInt(t) && isSigned(t) => x
|
(MOVBreg x:(Arg <t>)) && is8BitInt(t) && t.IsSigned() => x
|
||||||
(MOVBZreg x:(Arg <t>)) && is8BitInt(t) && !isSigned(t) => x
|
(MOVBZreg x:(Arg <t>)) && is8BitInt(t) && !t.IsSigned() => x
|
||||||
(MOVHreg x:(Arg <t>)) && (is8BitInt(t) || is16BitInt(t)) && isSigned(t) => x
|
(MOVHreg x:(Arg <t>)) && (is8BitInt(t) || is16BitInt(t)) && t.IsSigned() => x
|
||||||
(MOVHZreg x:(Arg <t>)) && (is8BitInt(t) || is16BitInt(t)) && !isSigned(t) => x
|
(MOVHZreg x:(Arg <t>)) && (is8BitInt(t) || is16BitInt(t)) && !t.IsSigned() => x
|
||||||
(MOVWreg x:(Arg <t>)) && (is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && isSigned(t) => x
|
(MOVWreg x:(Arg <t>)) && (is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && t.IsSigned() => x
|
||||||
(MOVWZreg x:(Arg <t>)) && (is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && !isSigned(t) => x
|
(MOVWZreg x:(Arg <t>)) && (is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && !t.IsSigned() => x
|
||||||
|
|
||||||
(MOVBZreg (MOVDconst [c])) => (MOVDconst [int64(uint8(c))])
|
(MOVBZreg (MOVDconst [c])) => (MOVDconst [int64(uint8(c))])
|
||||||
(MOVBreg (MOVDconst [c])) => (MOVDconst [int64(int8(c))])
|
(MOVBreg (MOVDconst [c])) => (MOVDconst [int64(int8(c))])
|
||||||
|
|
|
||||||
|
|
@ -282,16 +282,16 @@
|
||||||
(Neq32F ...) => (FNES ...)
|
(Neq32F ...) => (FNES ...)
|
||||||
|
|
||||||
// Loads
|
// Loads
|
||||||
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && t.IsBoolean() => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && ( is8BitInt(t) && isSigned(t)) => (MOVBload ptr mem)
|
(Load <t> ptr mem) && ( is8BitInt(t) && t.IsSigned()) => (MOVBload ptr mem)
|
||||||
(Load <t> ptr mem) && ( is8BitInt(t) && !isSigned(t)) => (MOVBUload ptr mem)
|
(Load <t> ptr mem) && ( is8BitInt(t) && !t.IsSigned()) => (MOVBUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && isSigned(t)) => (MOVHload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && t.IsSigned()) => (MOVHload ptr mem)
|
||||||
(Load <t> ptr mem) && (is16BitInt(t) && !isSigned(t)) => (MOVHUload ptr mem)
|
(Load <t> ptr mem) && (is16BitInt(t) && !t.IsSigned()) => (MOVHUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is32BitInt(t) && isSigned(t)) => (MOVWload ptr mem)
|
(Load <t> ptr mem) && (is32BitInt(t) && t.IsSigned()) => (MOVWload ptr mem)
|
||||||
(Load <t> ptr mem) && (is32BitInt(t) && !isSigned(t)) => (MOVWUload ptr mem)
|
(Load <t> ptr mem) && (is32BitInt(t) && !t.IsSigned()) => (MOVWUload ptr mem)
|
||||||
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVDload ptr mem)
|
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVDload ptr mem)
|
||||||
(Load <t> ptr mem) && is32BitFloat(t) => (FMOVWload ptr mem)
|
(Load <t> ptr mem) && is32BitFloat(t) => (FMOVWload ptr mem)
|
||||||
(Load <t> ptr mem) && is64BitFloat(t) => (FMOVDload ptr mem)
|
(Load <t> ptr mem) && is64BitFloat(t) => (FMOVDload ptr mem)
|
||||||
|
|
||||||
// Stores
|
// Stores
|
||||||
(Store {t} ptr val mem) && t.Size() == 1 => (MOVBstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 1 => (MOVBstore ptr val mem)
|
||||||
|
|
|
||||||
|
|
@ -336,18 +336,18 @@
|
||||||
|
|
||||||
// Lowering loads
|
// Lowering loads
|
||||||
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVDload ptr mem)
|
(Load <t> ptr mem) && (is64BitInt(t) || isPtr(t)) => (MOVDload ptr mem)
|
||||||
(Load <t> ptr mem) && is32BitInt(t) && isSigned(t) => (MOVWload ptr mem)
|
(Load <t> ptr mem) && is32BitInt(t) && t.IsSigned() => (MOVWload ptr mem)
|
||||||
(Load <t> ptr mem) && is32BitInt(t) && !isSigned(t) => (MOVWZload ptr mem)
|
(Load <t> ptr mem) && is32BitInt(t) && !t.IsSigned() => (MOVWZload ptr mem)
|
||||||
(Load <t> ptr mem) && is16BitInt(t) && isSigned(t) => (MOVHload ptr mem)
|
(Load <t> ptr mem) && is16BitInt(t) && t.IsSigned() => (MOVHload ptr mem)
|
||||||
(Load <t> ptr mem) && is16BitInt(t) && !isSigned(t) => (MOVHZload ptr mem)
|
(Load <t> ptr mem) && is16BitInt(t) && !t.IsSigned() => (MOVHZload ptr mem)
|
||||||
(Load <t> ptr mem) && is8BitInt(t) && isSigned(t) => (MOVBload ptr mem)
|
(Load <t> ptr mem) && is8BitInt(t) && t.IsSigned() => (MOVBload ptr mem)
|
||||||
(Load <t> ptr mem) && (t.IsBoolean() || (is8BitInt(t) && !isSigned(t))) => (MOVBZload ptr mem)
|
(Load <t> ptr mem) && (t.IsBoolean() || (is8BitInt(t) && !t.IsSigned())) => (MOVBZload ptr mem)
|
||||||
(Load <t> ptr mem) && is32BitFloat(t) => (FMOVSload ptr mem)
|
(Load <t> ptr mem) && is32BitFloat(t) => (FMOVSload ptr mem)
|
||||||
(Load <t> ptr mem) && is64BitFloat(t) => (FMOVDload ptr mem)
|
(Load <t> ptr mem) && is64BitFloat(t) => (FMOVDload ptr mem)
|
||||||
|
|
||||||
// Lowering stores
|
// Lowering stores
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (FMOVDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && t.IsFloat() => (FMOVDstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (FMOVSstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && t.IsFloat() => (FMOVSstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVDstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 8 && !t.IsFloat() => (MOVDstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 4 && !t.IsFloat() => (MOVWstore ptr val mem)
|
||||||
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
(Store {t} ptr val mem) && t.Size() == 2 => (MOVHstore ptr val mem)
|
||||||
|
|
|
||||||
|
|
@ -235,10 +235,6 @@ func isPtr(t *types.Type) bool {
|
||||||
return t.IsPtrShaped()
|
return t.IsPtrShaped()
|
||||||
}
|
}
|
||||||
|
|
||||||
func isSigned(t *types.Type) bool {
|
|
||||||
return t.IsSigned()
|
|
||||||
}
|
|
||||||
|
|
||||||
// mergeSym merges two symbolic offsets. There is no real merging of
|
// mergeSym merges two symbolic offsets. There is no real merging of
|
||||||
// offsets, we just pick the non-nil one.
|
// offsets, we just pick the non-nil one.
|
||||||
func mergeSym(x, y Sym) Sym {
|
func mergeSym(x, y Sym) Sym {
|
||||||
|
|
|
||||||
|
|
@ -13952,13 +13952,13 @@ func rewriteValueARM_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is8BitInt(t) && isSigned(t))
|
// cond: (is8BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVBload ptr mem)
|
// result: (MOVBload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && isSigned(t)) {
|
if !(is8BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpARMMOVBload)
|
v.reset(OpARMMOVBload)
|
||||||
|
|
@ -13966,13 +13966,13 @@ func rewriteValueARM_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is8BitInt(t) && !isSigned(t))
|
// cond: (is8BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVBUload ptr mem)
|
// result: (MOVBUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && !isSigned(t)) {
|
if !(is8BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpARMMOVBUload)
|
v.reset(OpARMMOVBUload)
|
||||||
|
|
@ -13980,13 +13980,13 @@ func rewriteValueARM_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && isSigned(t))
|
// cond: (is16BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVHload ptr mem)
|
// result: (MOVHload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && isSigned(t)) {
|
if !(is16BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpARMMOVHload)
|
v.reset(OpARMMOVHload)
|
||||||
|
|
@ -13994,13 +13994,13 @@ func rewriteValueARM_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && !isSigned(t))
|
// cond: (is16BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVHUload ptr mem)
|
// result: (MOVHUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && !isSigned(t)) {
|
if !(is16BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpARMMOVHUload)
|
v.reset(OpARMMOVHUload)
|
||||||
|
|
|
||||||
|
|
@ -25150,13 +25150,13 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is8BitInt(t) && isSigned(t))
|
// cond: (is8BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVBload ptr mem)
|
// result: (MOVBload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && isSigned(t)) {
|
if !(is8BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpARM64MOVBload)
|
v.reset(OpARM64MOVBload)
|
||||||
|
|
@ -25164,13 +25164,13 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is8BitInt(t) && !isSigned(t))
|
// cond: (is8BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVBUload ptr mem)
|
// result: (MOVBUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && !isSigned(t)) {
|
if !(is8BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpARM64MOVBUload)
|
v.reset(OpARM64MOVBUload)
|
||||||
|
|
@ -25178,13 +25178,13 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && isSigned(t))
|
// cond: (is16BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVHload ptr mem)
|
// result: (MOVHload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && isSigned(t)) {
|
if !(is16BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpARM64MOVHload)
|
v.reset(OpARM64MOVHload)
|
||||||
|
|
@ -25192,13 +25192,13 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && !isSigned(t))
|
// cond: (is16BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVHUload ptr mem)
|
// result: (MOVHUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && !isSigned(t)) {
|
if !(is16BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpARM64MOVHUload)
|
v.reset(OpARM64MOVHUload)
|
||||||
|
|
@ -25206,13 +25206,13 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is32BitInt(t) && isSigned(t))
|
// cond: (is32BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVWload ptr mem)
|
// result: (MOVWload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && isSigned(t)) {
|
if !(is32BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpARM64MOVWload)
|
v.reset(OpARM64MOVWload)
|
||||||
|
|
@ -25220,13 +25220,13 @@ func rewriteValueARM64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is32BitInt(t) && !isSigned(t))
|
// cond: (is32BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVWUload ptr mem)
|
// result: (MOVWUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && !isSigned(t)) {
|
if !(is32BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpARM64MOVWUload)
|
v.reset(OpARM64MOVWUload)
|
||||||
|
|
|
||||||
|
|
@ -4582,13 +4582,13 @@ func rewriteValueLOONG64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is8BitInt(t) && isSigned(t))
|
// cond: (is8BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVBload ptr mem)
|
// result: (MOVBload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && isSigned(t)) {
|
if !(is8BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpLOONG64MOVBload)
|
v.reset(OpLOONG64MOVBload)
|
||||||
|
|
@ -4596,13 +4596,13 @@ func rewriteValueLOONG64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is8BitInt(t) && !isSigned(t))
|
// cond: (is8BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVBUload ptr mem)
|
// result: (MOVBUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && !isSigned(t)) {
|
if !(is8BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpLOONG64MOVBUload)
|
v.reset(OpLOONG64MOVBUload)
|
||||||
|
|
@ -4610,13 +4610,13 @@ func rewriteValueLOONG64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && isSigned(t))
|
// cond: (is16BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVHload ptr mem)
|
// result: (MOVHload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && isSigned(t)) {
|
if !(is16BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpLOONG64MOVHload)
|
v.reset(OpLOONG64MOVHload)
|
||||||
|
|
@ -4624,13 +4624,13 @@ func rewriteValueLOONG64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && !isSigned(t))
|
// cond: (is16BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVHUload ptr mem)
|
// result: (MOVHUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && !isSigned(t)) {
|
if !(is16BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpLOONG64MOVHUload)
|
v.reset(OpLOONG64MOVHUload)
|
||||||
|
|
@ -4638,13 +4638,13 @@ func rewriteValueLOONG64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is32BitInt(t) && isSigned(t))
|
// cond: (is32BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVWload ptr mem)
|
// result: (MOVWload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && isSigned(t)) {
|
if !(is32BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpLOONG64MOVWload)
|
v.reset(OpLOONG64MOVWload)
|
||||||
|
|
@ -4652,13 +4652,13 @@ func rewriteValueLOONG64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is32BitInt(t) && !isSigned(t))
|
// cond: (is32BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVWUload ptr mem)
|
// result: (MOVWUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && !isSigned(t)) {
|
if !(is32BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpLOONG64MOVWUload)
|
v.reset(OpLOONG64MOVWUload)
|
||||||
|
|
|
||||||
|
|
@ -1553,13 +1553,13 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is8BitInt(t) && isSigned(t))
|
// cond: (is8BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVBload ptr mem)
|
// result: (MOVBload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && isSigned(t)) {
|
if !(is8BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpMIPSMOVBload)
|
v.reset(OpMIPSMOVBload)
|
||||||
|
|
@ -1567,13 +1567,13 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is8BitInt(t) && !isSigned(t))
|
// cond: (is8BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVBUload ptr mem)
|
// result: (MOVBUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && !isSigned(t)) {
|
if !(is8BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpMIPSMOVBUload)
|
v.reset(OpMIPSMOVBUload)
|
||||||
|
|
@ -1581,13 +1581,13 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && isSigned(t))
|
// cond: (is16BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVHload ptr mem)
|
// result: (MOVHload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && isSigned(t)) {
|
if !(is16BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpMIPSMOVHload)
|
v.reset(OpMIPSMOVHload)
|
||||||
|
|
@ -1595,13 +1595,13 @@ func rewriteValueMIPS_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && !isSigned(t))
|
// cond: (is16BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVHUload ptr mem)
|
// result: (MOVHUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && !isSigned(t)) {
|
if !(is16BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpMIPSMOVHUload)
|
v.reset(OpMIPSMOVHUload)
|
||||||
|
|
|
||||||
|
|
@ -1720,13 +1720,13 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is8BitInt(t) && isSigned(t))
|
// cond: (is8BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVBload ptr mem)
|
// result: (MOVBload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && isSigned(t)) {
|
if !(is8BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpMIPS64MOVBload)
|
v.reset(OpMIPS64MOVBload)
|
||||||
|
|
@ -1734,13 +1734,13 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is8BitInt(t) && !isSigned(t))
|
// cond: (is8BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVBUload ptr mem)
|
// result: (MOVBUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && !isSigned(t)) {
|
if !(is8BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpMIPS64MOVBUload)
|
v.reset(OpMIPS64MOVBUload)
|
||||||
|
|
@ -1748,13 +1748,13 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && isSigned(t))
|
// cond: (is16BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVHload ptr mem)
|
// result: (MOVHload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && isSigned(t)) {
|
if !(is16BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpMIPS64MOVHload)
|
v.reset(OpMIPS64MOVHload)
|
||||||
|
|
@ -1762,13 +1762,13 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && !isSigned(t))
|
// cond: (is16BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVHUload ptr mem)
|
// result: (MOVHUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && !isSigned(t)) {
|
if !(is16BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpMIPS64MOVHUload)
|
v.reset(OpMIPS64MOVHUload)
|
||||||
|
|
@ -1776,13 +1776,13 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is32BitInt(t) && isSigned(t))
|
// cond: (is32BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVWload ptr mem)
|
// result: (MOVWload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && isSigned(t)) {
|
if !(is32BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpMIPS64MOVWload)
|
v.reset(OpMIPS64MOVWload)
|
||||||
|
|
@ -1790,13 +1790,13 @@ func rewriteValueMIPS64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is32BitInt(t) && !isSigned(t))
|
// cond: (is32BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVWUload ptr mem)
|
// result: (MOVWUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && !isSigned(t)) {
|
if !(is32BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpMIPS64MOVWUload)
|
v.reset(OpMIPS64MOVWUload)
|
||||||
|
|
|
||||||
|
|
@ -1702,13 +1702,13 @@ func rewriteValuePPC64_OpEq16(v *Value) bool {
|
||||||
b := v.Block
|
b := v.Block
|
||||||
typ := &b.Func.Config.Types
|
typ := &b.Func.Config.Types
|
||||||
// match: (Eq16 x y)
|
// match: (Eq16 x y)
|
||||||
// cond: isSigned(x.Type) && isSigned(y.Type)
|
// cond: x.Type.IsSigned() && y.Type.IsSigned()
|
||||||
// result: (Equal (CMPW (SignExt16to32 x) (SignExt16to32 y)))
|
// result: (Equal (CMPW (SignExt16to32 x) (SignExt16to32 y)))
|
||||||
for {
|
for {
|
||||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||||
x := v_0
|
x := v_0
|
||||||
y := v_1
|
y := v_1
|
||||||
if !(isSigned(x.Type) && isSigned(y.Type)) {
|
if !(x.Type.IsSigned() && y.Type.IsSigned()) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64Equal)
|
v.reset(OpPPC64Equal)
|
||||||
|
|
@ -1809,13 +1809,13 @@ func rewriteValuePPC64_OpEq8(v *Value) bool {
|
||||||
b := v.Block
|
b := v.Block
|
||||||
typ := &b.Func.Config.Types
|
typ := &b.Func.Config.Types
|
||||||
// match: (Eq8 x y)
|
// match: (Eq8 x y)
|
||||||
// cond: isSigned(x.Type) && isSigned(y.Type)
|
// cond: x.Type.IsSigned() && y.Type.IsSigned()
|
||||||
// result: (Equal (CMPW (SignExt8to32 x) (SignExt8to32 y)))
|
// result: (Equal (CMPW (SignExt8to32 x) (SignExt8to32 y)))
|
||||||
for {
|
for {
|
||||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||||
x := v_0
|
x := v_0
|
||||||
y := v_1
|
y := v_1
|
||||||
if !(isSigned(x.Type) && isSigned(y.Type)) {
|
if !(x.Type.IsSigned() && y.Type.IsSigned()) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64Equal)
|
v.reset(OpPPC64Equal)
|
||||||
|
|
@ -2310,13 +2310,13 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: is32BitInt(t) && isSigned(t)
|
// cond: is32BitInt(t) && t.IsSigned()
|
||||||
// result: (MOVWload ptr mem)
|
// result: (MOVWload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && isSigned(t)) {
|
if !(is32BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVWload)
|
v.reset(OpPPC64MOVWload)
|
||||||
|
|
@ -2324,13 +2324,13 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: is32BitInt(t) && !isSigned(t)
|
// cond: is32BitInt(t) && !t.IsSigned()
|
||||||
// result: (MOVWZload ptr mem)
|
// result: (MOVWZload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && !isSigned(t)) {
|
if !(is32BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVWZload)
|
v.reset(OpPPC64MOVWZload)
|
||||||
|
|
@ -2338,13 +2338,13 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: is16BitInt(t) && isSigned(t)
|
// cond: is16BitInt(t) && t.IsSigned()
|
||||||
// result: (MOVHload ptr mem)
|
// result: (MOVHload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && isSigned(t)) {
|
if !(is16BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVHload)
|
v.reset(OpPPC64MOVHload)
|
||||||
|
|
@ -2352,13 +2352,13 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: is16BitInt(t) && !isSigned(t)
|
// cond: is16BitInt(t) && !t.IsSigned()
|
||||||
// result: (MOVHZload ptr mem)
|
// result: (MOVHZload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && !isSigned(t)) {
|
if !(is16BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVHZload)
|
v.reset(OpPPC64MOVHZload)
|
||||||
|
|
@ -2380,13 +2380,13 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: is8BitInt(t) && isSigned(t)
|
// cond: is8BitInt(t) && t.IsSigned()
|
||||||
// result: (MOVBreg (MOVBZload ptr mem))
|
// result: (MOVBreg (MOVBZload ptr mem))
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && isSigned(t)) {
|
if !(is8BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVBreg)
|
v.reset(OpPPC64MOVBreg)
|
||||||
|
|
@ -2396,13 +2396,13 @@ func rewriteValuePPC64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: is8BitInt(t) && !isSigned(t)
|
// cond: is8BitInt(t) && !t.IsSigned()
|
||||||
// result: (MOVBZload ptr mem)
|
// result: (MOVBZload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && !isSigned(t)) {
|
if !(is8BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVBZload)
|
v.reset(OpPPC64MOVBZload)
|
||||||
|
|
@ -3617,13 +3617,13 @@ func rewriteValuePPC64_OpNeq16(v *Value) bool {
|
||||||
b := v.Block
|
b := v.Block
|
||||||
typ := &b.Func.Config.Types
|
typ := &b.Func.Config.Types
|
||||||
// match: (Neq16 x y)
|
// match: (Neq16 x y)
|
||||||
// cond: isSigned(x.Type) && isSigned(y.Type)
|
// cond: x.Type.IsSigned() && y.Type.IsSigned()
|
||||||
// result: (NotEqual (CMPW (SignExt16to32 x) (SignExt16to32 y)))
|
// result: (NotEqual (CMPW (SignExt16to32 x) (SignExt16to32 y)))
|
||||||
for {
|
for {
|
||||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||||
x := v_0
|
x := v_0
|
||||||
y := v_1
|
y := v_1
|
||||||
if !(isSigned(x.Type) && isSigned(y.Type)) {
|
if !(x.Type.IsSigned() && y.Type.IsSigned()) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64NotEqual)
|
v.reset(OpPPC64NotEqual)
|
||||||
|
|
@ -3724,13 +3724,13 @@ func rewriteValuePPC64_OpNeq8(v *Value) bool {
|
||||||
b := v.Block
|
b := v.Block
|
||||||
typ := &b.Func.Config.Types
|
typ := &b.Func.Config.Types
|
||||||
// match: (Neq8 x y)
|
// match: (Neq8 x y)
|
||||||
// cond: isSigned(x.Type) && isSigned(y.Type)
|
// cond: x.Type.IsSigned() && y.Type.IsSigned()
|
||||||
// result: (NotEqual (CMPW (SignExt8to32 x) (SignExt8to32 y)))
|
// result: (NotEqual (CMPW (SignExt8to32 x) (SignExt8to32 y)))
|
||||||
for {
|
for {
|
||||||
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
|
||||||
x := v_0
|
x := v_0
|
||||||
y := v_1
|
y := v_1
|
||||||
if !(isSigned(x.Type) && isSigned(y.Type)) {
|
if !(x.Type.IsSigned() && y.Type.IsSigned()) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64NotEqual)
|
v.reset(OpPPC64NotEqual)
|
||||||
|
|
@ -6649,7 +6649,7 @@ func rewriteValuePPC64_OpPPC64MOVBZreg(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (MOVBZreg x:(Arg <t>))
|
// match: (MOVBZreg x:(Arg <t>))
|
||||||
// cond: is8BitInt(t) && !isSigned(t)
|
// cond: is8BitInt(t) && !t.IsSigned()
|
||||||
// result: x
|
// result: x
|
||||||
for {
|
for {
|
||||||
x := v_0
|
x := v_0
|
||||||
|
|
@ -6657,7 +6657,7 @@ func rewriteValuePPC64_OpPPC64MOVBZreg(v *Value) bool {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
t := x.Type
|
t := x.Type
|
||||||
if !(is8BitInt(t) && !isSigned(t)) {
|
if !(is8BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.copyOf(x)
|
v.copyOf(x)
|
||||||
|
|
@ -6859,7 +6859,7 @@ func rewriteValuePPC64_OpPPC64MOVBreg(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (MOVBreg x:(Arg <t>))
|
// match: (MOVBreg x:(Arg <t>))
|
||||||
// cond: is8BitInt(t) && isSigned(t)
|
// cond: is8BitInt(t) && t.IsSigned()
|
||||||
// result: x
|
// result: x
|
||||||
for {
|
for {
|
||||||
x := v_0
|
x := v_0
|
||||||
|
|
@ -6867,7 +6867,7 @@ func rewriteValuePPC64_OpPPC64MOVBreg(v *Value) bool {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
t := x.Type
|
t := x.Type
|
||||||
if !(is8BitInt(t) && isSigned(t)) {
|
if !(is8BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.copyOf(x)
|
v.copyOf(x)
|
||||||
|
|
@ -8818,7 +8818,7 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (MOVHZreg x:(Arg <t>))
|
// match: (MOVHZreg x:(Arg <t>))
|
||||||
// cond: (is8BitInt(t) || is16BitInt(t)) && !isSigned(t)
|
// cond: (is8BitInt(t) || is16BitInt(t)) && !t.IsSigned()
|
||||||
// result: x
|
// result: x
|
||||||
for {
|
for {
|
||||||
x := v_0
|
x := v_0
|
||||||
|
|
@ -8826,7 +8826,7 @@ func rewriteValuePPC64_OpPPC64MOVHZreg(v *Value) bool {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
t := x.Type
|
t := x.Type
|
||||||
if !((is8BitInt(t) || is16BitInt(t)) && !isSigned(t)) {
|
if !((is8BitInt(t) || is16BitInt(t)) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.copyOf(x)
|
v.copyOf(x)
|
||||||
|
|
@ -9191,7 +9191,7 @@ func rewriteValuePPC64_OpPPC64MOVHreg(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (MOVHreg x:(Arg <t>))
|
// match: (MOVHreg x:(Arg <t>))
|
||||||
// cond: (is8BitInt(t) || is16BitInt(t)) && isSigned(t)
|
// cond: (is8BitInt(t) || is16BitInt(t)) && t.IsSigned()
|
||||||
// result: x
|
// result: x
|
||||||
for {
|
for {
|
||||||
x := v_0
|
x := v_0
|
||||||
|
|
@ -9199,7 +9199,7 @@ func rewriteValuePPC64_OpPPC64MOVHreg(v *Value) bool {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
t := x.Type
|
t := x.Type
|
||||||
if !((is8BitInt(t) || is16BitInt(t)) && isSigned(t)) {
|
if !((is8BitInt(t) || is16BitInt(t)) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.copyOf(x)
|
v.copyOf(x)
|
||||||
|
|
@ -10155,7 +10155,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (MOVWZreg x:(Arg <t>))
|
// match: (MOVWZreg x:(Arg <t>))
|
||||||
// cond: (is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && !isSigned(t)
|
// cond: (is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && !t.IsSigned()
|
||||||
// result: x
|
// result: x
|
||||||
for {
|
for {
|
||||||
x := v_0
|
x := v_0
|
||||||
|
|
@ -10163,7 +10163,7 @@ func rewriteValuePPC64_OpPPC64MOVWZreg(v *Value) bool {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
t := x.Type
|
t := x.Type
|
||||||
if !((is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && !isSigned(t)) {
|
if !((is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.copyOf(x)
|
v.copyOf(x)
|
||||||
|
|
@ -10549,7 +10549,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (MOVWreg x:(Arg <t>))
|
// match: (MOVWreg x:(Arg <t>))
|
||||||
// cond: (is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && isSigned(t)
|
// cond: (is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && t.IsSigned()
|
||||||
// result: x
|
// result: x
|
||||||
for {
|
for {
|
||||||
x := v_0
|
x := v_0
|
||||||
|
|
@ -10557,7 +10557,7 @@ func rewriteValuePPC64_OpPPC64MOVWreg(v *Value) bool {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
t := x.Type
|
t := x.Type
|
||||||
if !((is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && isSigned(t)) {
|
if !((is8BitInt(t) || is16BitInt(t) || is32BitInt(t)) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.copyOf(x)
|
v.copyOf(x)
|
||||||
|
|
@ -16150,12 +16150,12 @@ func rewriteValuePPC64_OpStore(v *Value) bool {
|
||||||
func rewriteValuePPC64_OpTrunc16to8(v *Value) bool {
|
func rewriteValuePPC64_OpTrunc16to8(v *Value) bool {
|
||||||
v_0 := v.Args[0]
|
v_0 := v.Args[0]
|
||||||
// match: (Trunc16to8 <t> x)
|
// match: (Trunc16to8 <t> x)
|
||||||
// cond: isSigned(t)
|
// cond: t.IsSigned()
|
||||||
// result: (MOVBreg x)
|
// result: (MOVBreg x)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
x := v_0
|
x := v_0
|
||||||
if !(isSigned(t)) {
|
if !(t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVBreg)
|
v.reset(OpPPC64MOVBreg)
|
||||||
|
|
@ -16174,12 +16174,12 @@ func rewriteValuePPC64_OpTrunc16to8(v *Value) bool {
|
||||||
func rewriteValuePPC64_OpTrunc32to16(v *Value) bool {
|
func rewriteValuePPC64_OpTrunc32to16(v *Value) bool {
|
||||||
v_0 := v.Args[0]
|
v_0 := v.Args[0]
|
||||||
// match: (Trunc32to16 <t> x)
|
// match: (Trunc32to16 <t> x)
|
||||||
// cond: isSigned(t)
|
// cond: t.IsSigned()
|
||||||
// result: (MOVHreg x)
|
// result: (MOVHreg x)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
x := v_0
|
x := v_0
|
||||||
if !(isSigned(t)) {
|
if !(t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVHreg)
|
v.reset(OpPPC64MOVHreg)
|
||||||
|
|
@ -16198,12 +16198,12 @@ func rewriteValuePPC64_OpTrunc32to16(v *Value) bool {
|
||||||
func rewriteValuePPC64_OpTrunc32to8(v *Value) bool {
|
func rewriteValuePPC64_OpTrunc32to8(v *Value) bool {
|
||||||
v_0 := v.Args[0]
|
v_0 := v.Args[0]
|
||||||
// match: (Trunc32to8 <t> x)
|
// match: (Trunc32to8 <t> x)
|
||||||
// cond: isSigned(t)
|
// cond: t.IsSigned()
|
||||||
// result: (MOVBreg x)
|
// result: (MOVBreg x)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
x := v_0
|
x := v_0
|
||||||
if !(isSigned(t)) {
|
if !(t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVBreg)
|
v.reset(OpPPC64MOVBreg)
|
||||||
|
|
@ -16222,12 +16222,12 @@ func rewriteValuePPC64_OpTrunc32to8(v *Value) bool {
|
||||||
func rewriteValuePPC64_OpTrunc64to16(v *Value) bool {
|
func rewriteValuePPC64_OpTrunc64to16(v *Value) bool {
|
||||||
v_0 := v.Args[0]
|
v_0 := v.Args[0]
|
||||||
// match: (Trunc64to16 <t> x)
|
// match: (Trunc64to16 <t> x)
|
||||||
// cond: isSigned(t)
|
// cond: t.IsSigned()
|
||||||
// result: (MOVHreg x)
|
// result: (MOVHreg x)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
x := v_0
|
x := v_0
|
||||||
if !(isSigned(t)) {
|
if !(t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVHreg)
|
v.reset(OpPPC64MOVHreg)
|
||||||
|
|
@ -16246,12 +16246,12 @@ func rewriteValuePPC64_OpTrunc64to16(v *Value) bool {
|
||||||
func rewriteValuePPC64_OpTrunc64to32(v *Value) bool {
|
func rewriteValuePPC64_OpTrunc64to32(v *Value) bool {
|
||||||
v_0 := v.Args[0]
|
v_0 := v.Args[0]
|
||||||
// match: (Trunc64to32 <t> x)
|
// match: (Trunc64to32 <t> x)
|
||||||
// cond: isSigned(t)
|
// cond: t.IsSigned()
|
||||||
// result: (MOVWreg x)
|
// result: (MOVWreg x)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
x := v_0
|
x := v_0
|
||||||
if !(isSigned(t)) {
|
if !(t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVWreg)
|
v.reset(OpPPC64MOVWreg)
|
||||||
|
|
@ -16270,12 +16270,12 @@ func rewriteValuePPC64_OpTrunc64to32(v *Value) bool {
|
||||||
func rewriteValuePPC64_OpTrunc64to8(v *Value) bool {
|
func rewriteValuePPC64_OpTrunc64to8(v *Value) bool {
|
||||||
v_0 := v.Args[0]
|
v_0 := v.Args[0]
|
||||||
// match: (Trunc64to8 <t> x)
|
// match: (Trunc64to8 <t> x)
|
||||||
// cond: isSigned(t)
|
// cond: t.IsSigned()
|
||||||
// result: (MOVBreg x)
|
// result: (MOVBreg x)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
x := v_0
|
x := v_0
|
||||||
if !(isSigned(t)) {
|
if !(t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpPPC64MOVBreg)
|
v.reset(OpPPC64MOVBreg)
|
||||||
|
|
|
||||||
|
|
@ -1479,13 +1479,13 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: ( is8BitInt(t) && isSigned(t))
|
// cond: ( is8BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVBload ptr mem)
|
// result: (MOVBload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && isSigned(t)) {
|
if !(is8BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpRISCV64MOVBload)
|
v.reset(OpRISCV64MOVBload)
|
||||||
|
|
@ -1493,13 +1493,13 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: ( is8BitInt(t) && !isSigned(t))
|
// cond: ( is8BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVBUload ptr mem)
|
// result: (MOVBUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && !isSigned(t)) {
|
if !(is8BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpRISCV64MOVBUload)
|
v.reset(OpRISCV64MOVBUload)
|
||||||
|
|
@ -1507,13 +1507,13 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && isSigned(t))
|
// cond: (is16BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVHload ptr mem)
|
// result: (MOVHload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && isSigned(t)) {
|
if !(is16BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpRISCV64MOVHload)
|
v.reset(OpRISCV64MOVHload)
|
||||||
|
|
@ -1521,13 +1521,13 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is16BitInt(t) && !isSigned(t))
|
// cond: (is16BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVHUload ptr mem)
|
// result: (MOVHUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && !isSigned(t)) {
|
if !(is16BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpRISCV64MOVHUload)
|
v.reset(OpRISCV64MOVHUload)
|
||||||
|
|
@ -1535,13 +1535,13 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is32BitInt(t) && isSigned(t))
|
// cond: (is32BitInt(t) && t.IsSigned())
|
||||||
// result: (MOVWload ptr mem)
|
// result: (MOVWload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && isSigned(t)) {
|
if !(is32BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpRISCV64MOVWload)
|
v.reset(OpRISCV64MOVWload)
|
||||||
|
|
@ -1549,13 +1549,13 @@ func rewriteValueRISCV64_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (is32BitInt(t) && !isSigned(t))
|
// cond: (is32BitInt(t) && !t.IsSigned())
|
||||||
// result: (MOVWUload ptr mem)
|
// result: (MOVWUload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && !isSigned(t)) {
|
if !(is32BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpRISCV64MOVWUload)
|
v.reset(OpRISCV64MOVWUload)
|
||||||
|
|
|
||||||
|
|
@ -2346,13 +2346,13 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: is32BitInt(t) && isSigned(t)
|
// cond: is32BitInt(t) && t.IsSigned()
|
||||||
// result: (MOVWload ptr mem)
|
// result: (MOVWload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && isSigned(t)) {
|
if !(is32BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpS390XMOVWload)
|
v.reset(OpS390XMOVWload)
|
||||||
|
|
@ -2360,13 +2360,13 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: is32BitInt(t) && !isSigned(t)
|
// cond: is32BitInt(t) && !t.IsSigned()
|
||||||
// result: (MOVWZload ptr mem)
|
// result: (MOVWZload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is32BitInt(t) && !isSigned(t)) {
|
if !(is32BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpS390XMOVWZload)
|
v.reset(OpS390XMOVWZload)
|
||||||
|
|
@ -2374,13 +2374,13 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: is16BitInt(t) && isSigned(t)
|
// cond: is16BitInt(t) && t.IsSigned()
|
||||||
// result: (MOVHload ptr mem)
|
// result: (MOVHload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && isSigned(t)) {
|
if !(is16BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpS390XMOVHload)
|
v.reset(OpS390XMOVHload)
|
||||||
|
|
@ -2388,13 +2388,13 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: is16BitInt(t) && !isSigned(t)
|
// cond: is16BitInt(t) && !t.IsSigned()
|
||||||
// result: (MOVHZload ptr mem)
|
// result: (MOVHZload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is16BitInt(t) && !isSigned(t)) {
|
if !(is16BitInt(t) && !t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpS390XMOVHZload)
|
v.reset(OpS390XMOVHZload)
|
||||||
|
|
@ -2402,13 +2402,13 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: is8BitInt(t) && isSigned(t)
|
// cond: is8BitInt(t) && t.IsSigned()
|
||||||
// result: (MOVBload ptr mem)
|
// result: (MOVBload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(is8BitInt(t) && isSigned(t)) {
|
if !(is8BitInt(t) && t.IsSigned()) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpS390XMOVBload)
|
v.reset(OpS390XMOVBload)
|
||||||
|
|
@ -2416,13 +2416,13 @@ func rewriteValueS390X_OpLoad(v *Value) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
// match: (Load <t> ptr mem)
|
// match: (Load <t> ptr mem)
|
||||||
// cond: (t.IsBoolean() || (is8BitInt(t) && !isSigned(t)))
|
// cond: (t.IsBoolean() || (is8BitInt(t) && !t.IsSigned()))
|
||||||
// result: (MOVBZload ptr mem)
|
// result: (MOVBZload ptr mem)
|
||||||
for {
|
for {
|
||||||
t := v.Type
|
t := v.Type
|
||||||
ptr := v_0
|
ptr := v_0
|
||||||
mem := v_1
|
mem := v_1
|
||||||
if !(t.IsBoolean() || (is8BitInt(t) && !isSigned(t))) {
|
if !(t.IsBoolean() || (is8BitInt(t) && !t.IsSigned())) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
v.reset(OpS390XMOVBZload)
|
v.reset(OpS390XMOVBZload)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue