mirror of
https://github.com/golang/go
synced 2024-11-18 00:54:45 -07:00
cmd/internal/obj/arm: fix wrong encoding of MUL
The arm assembler incorrectly encodes the following instructions. "MUL R2, R4" -> 0xe0040492 ("MUL R4, R2, R4") "MUL R2, R4, R4" -> 0xe0040492 ("MUL R4, R2, R4") The CL fixes that issue. fixes #25347 Change-Id: I883716c7bc51c5f64837ae7d81342f94540a58cb Reviewed-on: https://go-review.googlesource.com/112737 Reviewed-by: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
3080b7d0af
commit
bec2f51b07
12
src/cmd/asm/internal/asm/testdata/arm.s
vendored
12
src/cmd/asm/internal/asm/testdata/arm.s
vendored
@ -951,13 +951,17 @@ jmp_label_3:
|
||||
|
||||
// MUL
|
||||
MUL R2, R3, R4 // 930204e0
|
||||
MUL R2, R4 // 920404e0
|
||||
MUL R2, R4 // 940204e0
|
||||
MUL R2, R4, R4 // 940204e0
|
||||
MUL.S R2, R3, R4 // 930214e0
|
||||
MUL.S R2, R4 // 920414e0
|
||||
MUL.S R2, R4 // 940214e0
|
||||
MUL.S R2, R4, R4 // 940214e0
|
||||
MULU R5, R6, R7 // 960507e0
|
||||
MULU R5, R7 // 950707e0
|
||||
MULU R5, R7 // 970507e0
|
||||
MULU R5, R7, R7 // 970507e0
|
||||
MULU.S R5, R6, R7 // 960517e0
|
||||
MULU.S R5, R7 // 950717e0
|
||||
MULU.S R5, R7 // 970517e0
|
||||
MULU.S R5, R7, R7 // 970517e0
|
||||
MULLU R1, R2, (R4, R3) // 923184e0
|
||||
MULLU.S R1, R2, (R4, R3) // 923194e0
|
||||
MULL R1, R2, (R4, R3) // 9231c4e0
|
||||
|
@ -2046,16 +2046,6 @@ func (c *ctxt5) asmout(p *obj.Prog, o *Optab, out []uint32) {
|
||||
if r == 0 {
|
||||
r = rt
|
||||
}
|
||||
if rt == r {
|
||||
r = rf
|
||||
rf = rt
|
||||
}
|
||||
|
||||
if false {
|
||||
if rt == r || rf == REGPC&15 || r == REGPC&15 || rt == REGPC&15 {
|
||||
c.ctxt.Diag("%v: bad registers in MUL", p)
|
||||
}
|
||||
}
|
||||
|
||||
o1 |= (uint32(rf)&15)<<8 | (uint32(r)&15)<<0 | (uint32(rt)&15)<<16
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user