From: "Maciej W. Rozycki" <macro@linux-mips.org>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
Cc: "Fredrik Noring" <noring@nocrew.org>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Aleksandar Markovic" <amarkovic@wavecomp.com>,
"Aurelien Jarno" <aurelien@aurel32.net>,
"qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>,
"Jürgen Urban" <JuergenUrban@gmx.de>
Subject: Re: [Qemu-devel] [PATCH] target/mips: Support Toshiba specific three-operand MADD and MADDU
Date: Mon, 15 Oct 2018 00:03:00 +0100 (BST) [thread overview]
Message-ID: <alpine.LFD.2.21.1810142320320.16498@eddie.linux-mips.org> (raw)
In-Reply-To: <CAAdtpL5xQYwyR0VxqAhA3dW9ec2KW07n-GKrMCt=UjQqwsuYHQ@mail.gmail.com>
On Sun, 14 Oct 2018, Philippe Mathieu-Daudé wrote:
> > > + gen_move_low32(cpu_LO[acc], t2);
> > > + gen_move_high32(cpu_HI[acc], t2);
> > > + if (rd) {
> > > + gen_move_low32(cpu_gpr[rd], t2);
> >
> > As above, are LO, HI and GPR[rd] sign-extended to 64 bits when required?
>
> MADDU rd, rs, rt
> MADDU rs, rt
> Multiply the contents of registers rs and rt as unsigned integers,
> and add the doubleword (64-bit)
> result to multiply/divide registers HI and LO. Also, store the lower
> 32 bits of the add result in register
> rd. In the MADDU rs, rt format, the store operation to a general
> register is omitted.
>
> This one looks correct.
Obviously with processors such as the TX49 or the TX79 where GPRs are
64-bit for the purpose of integer arithmetic (i.e. any multimedia
extension aside) any 32-bit results written to an integer register are
implicitly sign-extended to the full 64-bit width of the destination
register, as per the requirements of the MIPS architecture. Otherwise
operation of any subsequent 32-bit instruction (other than SLL or SLLV)
using that that result as an input operand would be unpredictable. You
need to respect that in QEMU too.
So results of individual operations are as in the comments with this
code:
mthi $0 # HI <- 0
mtlo $0 # LO <- 0
addiu $2, $0, 1 # $2 <- 1
lui $3, 0x4000 # $3 <- 0x40000000
maddu $4, $3, $2 # HI <- 0
# LO <- 0x40000000
# $4 <- 0x40000000
maddu $5, $4, $2 # HI <- 0
# LO <- 0xffffffff80000000
# $5 <- 0xffffffff80000000
maddu $6, $4, $2 # HI <- 1
# LO <- 0
# $6 <- 0
Similarly:
addiu $2, $0, 1 # $2 <- 1
sll $3, $2, 31 # $3 <- 0xffffffff80000000
dsll $4, $2, 31 # $4 <- 0x80000000
dsll $5, $3, 0 # $5 <- 0xffffffff80000000
sll $6, $3, 0 # $6 <- 0xffffffff80000000
dsll $7, $4, 0 # $7 <- 0x80000000
sll $8, $4, 0 # $8 <- 0xffffffff80000000
daddu $9, $3, $3 # $9 <- 0xffffffff00000000
addu $10, $3, $3 # $10 <- 0
daddu $11, $4, $4 # $11 <- 0x100000000
addu $12, $4, $4 # unpredictable!
HTH,
Maciej
next prev parent reply other threads:[~2018-10-14 23:03 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-14 14:29 [Qemu-devel] [PATCH] target/mips: Support Toshiba specific three-operand MADD and MADDU Philippe Mathieu-Daudé
2018-10-14 16:41 ` Fredrik Noring
2018-10-14 21:56 ` Philippe Mathieu-Daudé
2018-10-14 23:03 ` Maciej W. Rozycki [this message]
2018-10-15 17:02 ` Fredrik Noring
2018-10-16 9:43 ` Aleksandar Markovic
2018-10-16 18:19 ` Fredrik Noring
2018-10-16 18:37 ` Richard Henderson
2018-10-16 18:52 ` Fredrik Noring
2018-10-16 19:02 ` Maciej W. Rozycki
2018-10-19 18:09 ` Aleksandar Markovic
2018-10-28 19:43 ` Aleksandar Markovic
2018-10-28 20:00 ` Maciej W. Rozycki
2018-10-29 11:52 ` Aleksandar Markovic
2018-10-29 14:51 ` Fredrik Noring
2018-10-29 15:03 ` Aleksandar Markovic
2018-10-29 15:44 ` Maciej W. Rozycki
2018-10-16 18:55 ` Maciej W. Rozycki
2018-10-15 15:36 ` Fredrik Noring
2018-10-24 18:01 ` Fredrik Noring
2018-10-26 11:17 ` Aleksandar Markovic
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.LFD.2.21.1810142320320.16498@eddie.linux-mips.org \
--to=macro@linux-mips.org \
--cc=JuergenUrban@gmx.de \
--cc=amarkovic@wavecomp.com \
--cc=aurelien@aurel32.net \
--cc=f4bug@amsat.org \
--cc=noring@nocrew.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).