|
From: <sv...@va...> - 2005-11-05 02:33:31
|
Author: sewardj
Date: 2005-11-05 02:33:25 +0000 (Sat, 05 Nov 2005)
New Revision: 1439
Log:
Implement vector FP unordered compares on amd64.
Modified:
trunk/priv/host-amd64/hdefs.c
trunk/priv/host-amd64/isel.c
Modified: trunk/priv/host-amd64/hdefs.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-amd64/hdefs.c 2005-11-05 01:54:07 UTC (rev 1438)
+++ trunk/priv/host-amd64/hdefs.c 2005-11-05 02:33:25 UTC (rev 1439)
@@ -3135,6 +3135,7 @@
case Asse_CMPEQF: *p++ =3D 0xC2; xtra =3D 0x100; break;
case Asse_CMPLTF: *p++ =3D 0xC2; xtra =3D 0x101; break;
case Asse_CMPLEF: *p++ =3D 0xC2; xtra =3D 0x102; break;
+ case Asse_CMPUNF: *p++ =3D 0xC2; xtra =3D 0x103; break;
default: goto bad;
}
p =3D doAMode_R(p, vreg2ireg(i->Ain.Sse32Fx4.dst),
@@ -3163,6 +3164,7 @@
case Asse_CMPEQF: *p++ =3D 0xC2; xtra =3D 0x100; break;
case Asse_CMPLTF: *p++ =3D 0xC2; xtra =3D 0x101; break;
case Asse_CMPLEF: *p++ =3D 0xC2; xtra =3D 0x102; break;
+ case Asse_CMPUNF: *p++ =3D 0xC2; xtra =3D 0x103; break;
default: goto bad;
}
p =3D doAMode_R(p, vreg2ireg(i->Ain.Sse64Fx2.dst),
@@ -3191,6 +3193,7 @@
case Asse_CMPEQF: *p++ =3D 0xC2; xtra =3D 0x100; break;
case Asse_CMPLTF: *p++ =3D 0xC2; xtra =3D 0x101; break;
case Asse_CMPLEF: *p++ =3D 0xC2; xtra =3D 0x102; break;
+ case Asse_CMPUNF: *p++ =3D 0xC2; xtra =3D 0x103; break;
default: goto bad;
}
p =3D doAMode_R(p, vreg2ireg(i->Ain.Sse32FLo.dst),
@@ -3219,6 +3222,7 @@
case Asse_CMPEQF: *p++ =3D 0xC2; xtra =3D 0x100; break;
case Asse_CMPLTF: *p++ =3D 0xC2; xtra =3D 0x101; break;
case Asse_CMPLEF: *p++ =3D 0xC2; xtra =3D 0x102; break;
+ case Asse_CMPUNF: *p++ =3D 0xC2; xtra =3D 0x103; break;
default: goto bad;
}
p =3D doAMode_R(p, vreg2ireg(i->Ain.Sse64FLo.dst),
Modified: trunk/priv/host-amd64/isel.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/priv/host-amd64/isel.c 2005-11-05 01:54:07 UTC (rev 1438)
+++ trunk/priv/host-amd64/isel.c 2005-11-05 02:33:25 UTC (rev 1439)
@@ -3305,6 +3305,7 @@
case Iop_CmpEQ32Fx4: op =3D Asse_CMPEQF; goto do_32Fx4;
case Iop_CmpLT32Fx4: op =3D Asse_CMPLTF; goto do_32Fx4;
case Iop_CmpLE32Fx4: op =3D Asse_CMPLEF; goto do_32Fx4;
+ case Iop_CmpUN32Fx4: op =3D Asse_CMPUNF; goto do_32Fx4;
case Iop_Add32Fx4: op =3D Asse_ADDF; goto do_32Fx4;
case Iop_Div32Fx4: op =3D Asse_DIVF; goto do_32Fx4;
case Iop_Max32Fx4: op =3D Asse_MAXF; goto do_32Fx4;
@@ -3324,6 +3325,7 @@
case Iop_CmpEQ64Fx2: op =3D Asse_CMPEQF; goto do_64Fx2;
case Iop_CmpLT64Fx2: op =3D Asse_CMPLTF; goto do_64Fx2;
case Iop_CmpLE64Fx2: op =3D Asse_CMPLEF; goto do_64Fx2;
+ case Iop_CmpUN64Fx2: op =3D Asse_CMPUNF; goto do_64Fx2;
case Iop_Add64Fx2: op =3D Asse_ADDF; goto do_64Fx2;
case Iop_Div64Fx2: op =3D Asse_DIVF; goto do_64Fx2;
case Iop_Max64Fx2: op =3D Asse_MAXF; goto do_64Fx2;
@@ -3343,6 +3345,7 @@
case Iop_CmpEQ32F0x4: op =3D Asse_CMPEQF; goto do_32F0x4;
case Iop_CmpLT32F0x4: op =3D Asse_CMPLTF; goto do_32F0x4;
case Iop_CmpLE32F0x4: op =3D Asse_CMPLEF; goto do_32F0x4;
+ case Iop_CmpUN32F0x4: op =3D Asse_CMPUNF; goto do_32F0x4;
case Iop_Add32F0x4: op =3D Asse_ADDF; goto do_32F0x4;
case Iop_Div32F0x4: op =3D Asse_DIVF; goto do_32F0x4;
case Iop_Max32F0x4: op =3D Asse_MAXF; goto do_32F0x4;
@@ -3361,6 +3364,7 @@
case Iop_CmpEQ64F0x2: op =3D Asse_CMPEQF; goto do_64F0x2;
case Iop_CmpLT64F0x2: op =3D Asse_CMPLTF; goto do_64F0x2;
case Iop_CmpLE64F0x2: op =3D Asse_CMPLEF; goto do_64F0x2;
+ case Iop_CmpUN64F0x2: op =3D Asse_CMPUNF; goto do_64F0x2;
case Iop_Add64F0x2: op =3D Asse_ADDF; goto do_64F0x2;
case Iop_Div64F0x2: op =3D Asse_DIVF; goto do_64F0x2;
case Iop_Max64F0x2: op =3D Asse_MAXF; goto do_64F0x2;
|