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:
Joel Sing 2022-08-28 02:30:58 +10:00
parent 9085ff5859
commit 239115c3ef
2 changed files with 82 additions and 0 deletions

View file

@ -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

View file

@ -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 {