mirror of
https://github.com/golang/go
synced 2024-09-19 07:52:34 +00:00
cmd/compile: avoid extending floating point comparision on riscv64
The result of these operations are already extended. Change-Id: Ifc8ba362dda7035d8fd0d40046a96f61d3082877 Reviewed-on: https://go-review.googlesource.com/c/go/+/426260 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Meng Zhuo <mzh@golangcn.org> Reviewed-by: Heschi Kreinick <heschi@google.com> Run-TryBot: Cherry Mui <cherryyz@google.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
This commit is contained in:
parent
9085ff5859
commit
239115c3ef
|
@ -630,6 +630,8 @@
|
|||
(MOVDstore [off] {sym} ptr (MOVDconst [0]) mem) => (MOVDstorezero [off] {sym} ptr mem)
|
||||
|
||||
// Boolean ops are already extended.
|
||||
(MOVBUreg x:((FLES|FLTS|FEQS|FNES) _ _)) => x
|
||||
(MOVBUreg x:((FLED|FLTD|FEQD|FNED) _ _)) => x
|
||||
(MOVBUreg x:((SEQZ|SNEZ) _)) => x
|
||||
(MOVBUreg x:((SLT|SLTU) _ _)) => x
|
||||
|
||||
|
|
|
@ -3160,6 +3160,86 @@ func rewriteValueRISCV64_OpRISCV64MOVBUload(v *Value) bool {
|
|||
func rewriteValueRISCV64_OpRISCV64MOVBUreg(v *Value) bool {
|
||||
v_0 := v.Args[0]
|
||||
b := v.Block
|
||||
// match: (MOVBUreg x:(FLES _ _))
|
||||
// result: x
|
||||
for {
|
||||
x := v_0
|
||||
if x.Op != OpRISCV64FLES {
|
||||
break
|
||||
}
|
||||
v.copyOf(x)
|
||||
return true
|
||||
}
|
||||
// match: (MOVBUreg x:(FLTS _ _))
|
||||
// result: x
|
||||
for {
|
||||
x := v_0
|
||||
if x.Op != OpRISCV64FLTS {
|
||||
break
|
||||
}
|
||||
v.copyOf(x)
|
||||
return true
|
||||
}
|
||||
// match: (MOVBUreg x:(FEQS _ _))
|
||||
// result: x
|
||||
for {
|
||||
x := v_0
|
||||
if x.Op != OpRISCV64FEQS {
|
||||
break
|
||||
}
|
||||
v.copyOf(x)
|
||||
return true
|
||||
}
|
||||
// match: (MOVBUreg x:(FNES _ _))
|
||||
// result: x
|
||||
for {
|
||||
x := v_0
|
||||
if x.Op != OpRISCV64FNES {
|
||||
break
|
||||
}
|
||||
v.copyOf(x)
|
||||
return true
|
||||
}
|
||||
// match: (MOVBUreg x:(FLED _ _))
|
||||
// result: x
|
||||
for {
|
||||
x := v_0
|
||||
if x.Op != OpRISCV64FLED {
|
||||
break
|
||||
}
|
||||
v.copyOf(x)
|
||||
return true
|
||||
}
|
||||
// match: (MOVBUreg x:(FLTD _ _))
|
||||
// result: x
|
||||
for {
|
||||
x := v_0
|
||||
if x.Op != OpRISCV64FLTD {
|
||||
break
|
||||
}
|
||||
v.copyOf(x)
|
||||
return true
|
||||
}
|
||||
// match: (MOVBUreg x:(FEQD _ _))
|
||||
// result: x
|
||||
for {
|
||||
x := v_0
|
||||
if x.Op != OpRISCV64FEQD {
|
||||
break
|
||||
}
|
||||
v.copyOf(x)
|
||||
return true
|
||||
}
|
||||
// match: (MOVBUreg x:(FNED _ _))
|
||||
// result: x
|
||||
for {
|
||||
x := v_0
|
||||
if x.Op != OpRISCV64FNED {
|
||||
break
|
||||
}
|
||||
v.copyOf(x)
|
||||
return true
|
||||
}
|
||||
// match: (MOVBUreg x:(SEQZ _))
|
||||
// result: x
|
||||
for {
|
||||
|
|
Loading…
Reference in a new issue