* [Qemu-devel] [PATCH v2] target-mips: remove wrong checks for recip.fmt and rsqrt.fmt
@ 2015-08-26 12:12 Petar Jovanovic
2015-09-02 7:50 ` Leon Alrae
2015-10-11 20:30 ` Aurelien Jarno
0 siblings, 2 replies; 6+ messages in thread
From: Petar Jovanovic @ 2015-08-26 12:12 UTC (permalink / raw)
To: qemu-devel; +Cc: leon.alrae, petar.jovanovic, aurelien
From: Petar Jovanovic <petar.jovanovic@imgtec.com>
Instructions recip.{s|d} and rsqrt.{s|d} do not require 64-bit FPU neither
they require any particular mode for its FPU. This patch removes the checks
that may break a program that uses these instructions.
Signed-off-by: Petar Jovanovic <petar.jovanovic@imgtec.com>
---
v2:
- add check_cp1_registers() for recip.d and rsqrt.d, as suggested by Leon A.
target-mips/translate.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/target-mips/translate.c b/target-mips/translate.c
index 93cb4f2..15285bc 100644
--- a/target-mips/translate.c
+++ b/target-mips/translate.c
@@ -9294,7 +9294,6 @@ static void gen_farith (DisasContext *ctx, enum fopcode op1,
opn = "movn.s";
break;
case OPC_RECIP_S:
- check_cop1x(ctx);
{
TCGv_i32 fp0 = tcg_temp_new_i32();
@@ -9306,7 +9305,6 @@ static void gen_farith (DisasContext *ctx, enum fopcode op1,
opn = "recip.s";
break;
case OPC_RSQRT_S:
- check_cop1x(ctx);
{
TCGv_i32 fp0 = tcg_temp_new_i32();
@@ -9839,7 +9837,7 @@ static void gen_farith (DisasContext *ctx, enum fopcode op1,
opn = "movn.d";
break;
case OPC_RECIP_D:
- check_cp1_64bitmode(ctx);
+ check_cp1_registers(ctx, fs | fd);
{
TCGv_i64 fp0 = tcg_temp_new_i64();
@@ -9851,7 +9849,7 @@ static void gen_farith (DisasContext *ctx, enum fopcode op1,
opn = "recip.d";
break;
case OPC_RSQRT_D:
- check_cp1_64bitmode(ctx);
+ check_cp1_registers(ctx, fs | fd);
{
TCGv_i64 fp0 = tcg_temp_new_i64();
--
1.7.9.5
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2] target-mips: remove wrong checks for recip.fmt and rsqrt.fmt
2015-08-26 12:12 [Qemu-devel] [PATCH v2] target-mips: remove wrong checks for recip.fmt and rsqrt.fmt Petar Jovanovic
@ 2015-09-02 7:50 ` Leon Alrae
2015-10-11 20:30 ` Aurelien Jarno
1 sibling, 0 replies; 6+ messages in thread
From: Leon Alrae @ 2015-09-02 7:50 UTC (permalink / raw)
To: Petar Jovanovic, qemu-devel; +Cc: petar.jovanovic, aurelien
On 26/08/2015 13:12, Petar Jovanovic wrote:
> From: Petar Jovanovic <petar.jovanovic@imgtec.com>
>
> Instructions recip.{s|d} and rsqrt.{s|d} do not require 64-bit FPU neither
> they require any particular mode for its FPU. This patch removes the checks
> that may break a program that uses these instructions.
>
> Signed-off-by: Petar Jovanovic <petar.jovanovic@imgtec.com>
> ---
> v2:
> - add check_cp1_registers() for recip.d and rsqrt.d, as suggested by Leon A.
>
> target-mips/translate.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
Applied to mips-next, thanks.
Leon
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2] target-mips: remove wrong checks for recip.fmt and rsqrt.fmt
2015-08-26 12:12 [Qemu-devel] [PATCH v2] target-mips: remove wrong checks for recip.fmt and rsqrt.fmt Petar Jovanovic
2015-09-02 7:50 ` Leon Alrae
@ 2015-10-11 20:30 ` Aurelien Jarno
2015-10-19 16:40 ` Leon Alrae
1 sibling, 1 reply; 6+ messages in thread
From: Aurelien Jarno @ 2015-10-11 20:30 UTC (permalink / raw)
To: Petar Jovanovic; +Cc: leon.alrae, qemu-devel, petar.jovanovic
(sorry for the late answer)
On 2015-08-26 14:12, Petar Jovanovic wrote:
> From: Petar Jovanovic <petar.jovanovic@imgtec.com>
>
> Instructions recip.{s|d} and rsqrt.{s|d} do not require 64-bit FPU neither
> they require any particular mode for its FPU. This patch removes the checks
> that may break a program that uses these instructions.
That is correct. That said these instructions do require at least a
MIPS32R2 or a MIPS64R1 CPU. I guess we should add these checks now that
check_cop1x do not guard them anymore.
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien@aurel32.net http://www.aurel32.net
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2] target-mips: remove wrong checks for recip.fmt and rsqrt.fmt
2015-10-11 20:30 ` Aurelien Jarno
@ 2015-10-19 16:40 ` Leon Alrae
2015-10-19 16:49 ` Leon Alrae
2015-10-31 6:35 ` Maciej W. Rozycki
0 siblings, 2 replies; 6+ messages in thread
From: Leon Alrae @ 2015-10-19 16:40 UTC (permalink / raw)
To: Petar Jovanovic, qemu-devel, petar.jovanovic
On 11/10/15 21:30, Aurelien Jarno wrote:
> (sorry for the late answer)
>
> On 2015-08-26 14:12, Petar Jovanovic wrote:
>> From: Petar Jovanovic <petar.jovanovic@imgtec.com>
>>
>> Instructions recip.{s|d} and rsqrt.{s|d} do not require 64-bit FPU neither
>> they require any particular mode for its FPU. This patch removes the checks
>> that may break a program that uses these instructions.
>
> That is correct. That said these instructions do require at least a
> MIPS32R2 or a MIPS64R1 CPU. I guess we should add these checks now that
> check_cop1x do not guard them anymore.
I suspect that this might too restrictive if we take into account also
legacy processors. As far as I know these instructions were already
present in MIPS IV implementations. I think it'll be safer if for the
pre-MIPS32R2 and pre-MIPS64R1 CPUs we keep the check_cop1x. (actually
I'm not certain if check_cop1x is correct, but at least we aren't
relaxing the previous restrictions too much).
Regards,
Leon
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2] target-mips: remove wrong checks for recip.fmt and rsqrt.fmt
2015-10-19 16:40 ` Leon Alrae
@ 2015-10-19 16:49 ` Leon Alrae
2015-10-31 6:35 ` Maciej W. Rozycki
1 sibling, 0 replies; 6+ messages in thread
From: Leon Alrae @ 2015-10-19 16:49 UTC (permalink / raw)
To: Petar Jovanovic, qemu-devel, petar.jovanovic, Aurelien Jarno
Oops my email client dropped Aurelien's email from CC for some reason...
(adding back)
On 19/10/15 17:40, Leon Alrae wrote:
> On 11/10/15 21:30, Aurelien Jarno wrote:
>> (sorry for the late answer)
>>
>> On 2015-08-26 14:12, Petar Jovanovic wrote:
>>> From: Petar Jovanovic <petar.jovanovic@imgtec.com>
>>>
>>> Instructions recip.{s|d} and rsqrt.{s|d} do not require 64-bit FPU neither
>>> they require any particular mode for its FPU. This patch removes the checks
>>> that may break a program that uses these instructions.
>>
>> That is correct. That said these instructions do require at least a
>> MIPS32R2 or a MIPS64R1 CPU. I guess we should add these checks now that
>> check_cop1x do not guard them anymore.
>
> I suspect that this might too restrictive if we take into account also
> legacy processors. As far as I know these instructions were already
> present in MIPS IV implementations. I think it'll be safer if for the
> pre-MIPS32R2 and pre-MIPS64R1 CPUs we keep the check_cop1x. (actually
> I'm not certain if check_cop1x is correct, but at least we aren't
> relaxing the previous restrictions too much).
>
> Regards,
> Leon
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v2] target-mips: remove wrong checks for recip.fmt and rsqrt.fmt
2015-10-19 16:40 ` Leon Alrae
2015-10-19 16:49 ` Leon Alrae
@ 2015-10-31 6:35 ` Maciej W. Rozycki
1 sibling, 0 replies; 6+ messages in thread
From: Maciej W. Rozycki @ 2015-10-31 6:35 UTC (permalink / raw)
To: Leon Alrae; +Cc: petar.jovanovic, Petar Jovanovic, Aurelien Jarno, qemu-devel
On Mon, 19 Oct 2015, Leon Alrae wrote:
> >> Instructions recip.{s|d} and rsqrt.{s|d} do not require 64-bit FPU neither
> >> they require any particular mode for its FPU. This patch removes the checks
> >> that may break a program that uses these instructions.
> >
> > That is correct. That said these instructions do require at least a
> > MIPS32R2 or a MIPS64R1 CPU. I guess we should add these checks now that
> > check_cop1x do not guard them anymore.
>
> I suspect that this might too restrictive if we take into account also
> legacy processors. As far as I know these instructions were already
> present in MIPS IV implementations. I think it'll be safer if for the
> pre-MIPS32R2 and pre-MIPS64R1 CPUs we keep the check_cop1x. (actually
> I'm not certain if check_cop1x is correct, but at least we aren't
> relaxing the previous restrictions too much).
These instructions are unrestricted in the MIPS IV ISA[1]. In the
MIPS64r1 ISA the double-precision variants do require CP0.Status.FR=1[2].
See also <https://gcc.gnu.org/ml/gcc-patches/2013-11/msg01695.html>.
References:
[1] "MIPS IV Instruction Set", MIPS Technologies, Inc., Revision 3.2, By
Charles Price, September, 1995, pp. B-83, B-86
<http://techpubs.sgi.com/library/manuals/2000/007-2597-001/pdf/007-2597-001.pdf>
[2] "MIPS Architecture For Programmers, Volume II: The MIPS64 Instruction
Set", MIPS Technologies, Inc., Document Number: MD00087, Revision
1.00, August 29, 2002, pp. 244, 258
Maciej
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-10-31 6:36 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-26 12:12 [Qemu-devel] [PATCH v2] target-mips: remove wrong checks for recip.fmt and rsqrt.fmt Petar Jovanovic
2015-09-02 7:50 ` Leon Alrae
2015-10-11 20:30 ` Aurelien Jarno
2015-10-19 16:40 ` Leon Alrae
2015-10-19 16:49 ` Leon Alrae
2015-10-31 6:35 ` Maciej W. Rozycki
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).