From: Julian Seward Date: Sat, 5 Nov 2005 01:54:07 +0000 (+0000) Subject: The earth's core is a vast mass of molten sse and sse2 instructions. X-Git-Tag: svn/VALGRIND_3_1_1^2~53 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7512d9e6d771f2b7c34956b3545e905cbd75cec1;p=thirdparty%2Fvalgrind.git The earth's core is a vast mass of molten sse and sse2 instructions. Occasionally some make their way to the surface and spew out, causing havoc for miles around. git-svn-id: svn://svn.valgrind.org/vex/trunk@1438 --- diff --git a/VEX/priv/host-x86/hdefs.c b/VEX/priv/host-x86/hdefs.c index 6355a5772a..334899a4f3 100644 --- a/VEX/priv/host-x86/hdefs.c +++ b/VEX/priv/host-x86/hdefs.c @@ -2634,6 +2634,7 @@ Int emit_X86Instr ( UChar* buf, Int nbuf, X86Instr* i ) case Xsse_CMPEQF: *p++ = 0xC2; xtra = 0x100; break; case Xsse_CMPLTF: *p++ = 0xC2; xtra = 0x101; break; case Xsse_CMPLEF: *p++ = 0xC2; xtra = 0x102; break; + case Xsse_CMPUNF: *p++ = 0xC2; xtra = 0x103; break; default: goto bad; } p = doAMode_R(p, fake(vregNo(i->Xin.Sse32Fx4.dst)), @@ -2659,6 +2660,7 @@ Int emit_X86Instr ( UChar* buf, Int nbuf, X86Instr* i ) case Xsse_CMPEQF: *p++ = 0xC2; xtra = 0x100; break; case Xsse_CMPLTF: *p++ = 0xC2; xtra = 0x101; break; case Xsse_CMPLEF: *p++ = 0xC2; xtra = 0x102; break; + case Xsse_CMPUNF: *p++ = 0xC2; xtra = 0x103; break; default: goto bad; } p = doAMode_R(p, fake(vregNo(i->Xin.Sse64Fx2.dst)), @@ -2684,6 +2686,7 @@ Int emit_X86Instr ( UChar* buf, Int nbuf, X86Instr* i ) case Xsse_CMPEQF: *p++ = 0xC2; xtra = 0x100; break; case Xsse_CMPLTF: *p++ = 0xC2; xtra = 0x101; break; case Xsse_CMPLEF: *p++ = 0xC2; xtra = 0x102; break; + case Xsse_CMPUNF: *p++ = 0xC2; xtra = 0x103; break; default: goto bad; } p = doAMode_R(p, fake(vregNo(i->Xin.Sse32FLo.dst)), @@ -2709,6 +2712,7 @@ Int emit_X86Instr ( UChar* buf, Int nbuf, X86Instr* i ) case Xsse_CMPEQF: *p++ = 0xC2; xtra = 0x100; break; case Xsse_CMPLTF: *p++ = 0xC2; xtra = 0x101; break; case Xsse_CMPLEF: *p++ = 0xC2; xtra = 0x102; break; + case Xsse_CMPUNF: *p++ = 0xC2; xtra = 0x103; break; default: goto bad; } p = doAMode_R(p, fake(vregNo(i->Xin.Sse64FLo.dst)), diff --git a/VEX/priv/host-x86/isel.c b/VEX/priv/host-x86/isel.c index 33b501c7ba..71763dd7a4 100644 --- a/VEX/priv/host-x86/isel.c +++ b/VEX/priv/host-x86/isel.c @@ -3076,6 +3076,7 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e ) case Iop_CmpEQ32Fx4: op = Xsse_CMPEQF; goto do_32Fx4; case Iop_CmpLT32Fx4: op = Xsse_CMPLTF; goto do_32Fx4; case Iop_CmpLE32Fx4: op = Xsse_CMPLEF; goto do_32Fx4; + case Iop_CmpUN32Fx4: op = Xsse_CMPUNF; goto do_32Fx4; case Iop_Add32Fx4: op = Xsse_ADDF; goto do_32Fx4; case Iop_Div32Fx4: op = Xsse_DIVF; goto do_32Fx4; case Iop_Max32Fx4: op = Xsse_MAXF; goto do_32Fx4; @@ -3095,6 +3096,7 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e ) case Iop_CmpEQ64Fx2: op = Xsse_CMPEQF; goto do_64Fx2; case Iop_CmpLT64Fx2: op = Xsse_CMPLTF; goto do_64Fx2; case Iop_CmpLE64Fx2: op = Xsse_CMPLEF; goto do_64Fx2; + case Iop_CmpUN64Fx2: op = Xsse_CMPUNF; goto do_64Fx2; case Iop_Add64Fx2: op = Xsse_ADDF; goto do_64Fx2; case Iop_Div64Fx2: op = Xsse_DIVF; goto do_64Fx2; case Iop_Max64Fx2: op = Xsse_MAXF; goto do_64Fx2; @@ -3115,6 +3117,7 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e ) case Iop_CmpEQ32F0x4: op = Xsse_CMPEQF; goto do_32F0x4; case Iop_CmpLT32F0x4: op = Xsse_CMPLTF; goto do_32F0x4; case Iop_CmpLE32F0x4: op = Xsse_CMPLEF; goto do_32F0x4; + case Iop_CmpUN32F0x4: op = Xsse_CMPUNF; goto do_32F0x4; case Iop_Add32F0x4: op = Xsse_ADDF; goto do_32F0x4; case Iop_Div32F0x4: op = Xsse_DIVF; goto do_32F0x4; case Iop_Max32F0x4: op = Xsse_MAXF; goto do_32F0x4; @@ -3133,6 +3136,7 @@ static HReg iselVecExpr_wrk ( ISelEnv* env, IRExpr* e ) case Iop_CmpEQ64F0x2: op = Xsse_CMPEQF; goto do_64F0x2; case Iop_CmpLT64F0x2: op = Xsse_CMPLTF; goto do_64F0x2; case Iop_CmpLE64F0x2: op = Xsse_CMPLEF; goto do_64F0x2; + case Iop_CmpUN64F0x2: op = Xsse_CMPUNF; goto do_64F0x2; case Iop_Add64F0x2: op = Xsse_ADDF; goto do_64F0x2; case Iop_Div64F0x2: op = Xsse_DIVF; goto do_64F0x2; case Iop_Max64F0x2: op = Xsse_MAXF; goto do_64F0x2;