]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
The earth's core is a vast mass of molten sse and sse2 instructions.
authorJulian Seward <jseward@acm.org>
Sat, 5 Nov 2005 01:54:07 +0000 (01:54 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 5 Nov 2005 01:54:07 +0000 (01:54 +0000)
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

VEX/priv/host-x86/hdefs.c
VEX/priv/host-x86/isel.c

index 6355a5772ad19ac992725e5393d767549d87394c..334899a4f32ef4b94480b5e21627572eb7abbc8e 100644 (file)
@@ -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)),
index 33b501c7ba7a21ce1f594aefa73113efb85f8f4f..71763dd7a4ed1955bf3d32aeff5861bdf2f5dac0 100644 (file)
@@ -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;