Rename and rationalise the vector narrowing and widening primops, so
as to give them a consistent, understandable naming scheme.  Finishes
off the process that was begun in r2159.



git-svn-id: svn://svn.valgrind.org/vex/trunk@2163 8f6e269a-dfd6-0310-a8e1-e2731360e62c
diff --git a/priv/guest_amd64_toIR.c b/priv/guest_amd64_toIR.c
index d0cc3e4..4234537 100644
--- a/priv/guest_amd64_toIR.c
+++ b/priv/guest_amd64_toIR.c
@@ -6504,9 +6504,9 @@
       case 0x65: op = Iop_CmpGT16Sx4; break;
       case 0x66: op = Iop_CmpGT32Sx2; break;
 
-      case 0x6B: op = Iop_QNarrow32Sto16Sx4; eLeft = True; break;
-      case 0x63: op = Iop_QNarrow16Sto8Sx8;  eLeft = True; break;
-      case 0x67: op = Iop_QNarrow16Sto8Ux8;  eLeft = True; break;
+      case 0x6B: op = Iop_QNarrowBin32Sto16Sx4; eLeft = True; break;
+      case 0x63: op = Iop_QNarrowBin16Sto8Sx8;  eLeft = True; break;
+      case 0x67: op = Iop_QNarrowBin16Sto8Ux8;  eLeft = True; break;
 
       case 0x68: op = Iop_InterleaveHI8x8;  eLeft = True; break;
       case 0x69: op = Iop_InterleaveHI16x4; eLeft = True; break;
@@ -11787,7 +11787,7 @@
        && insn[0] == 0x0F && insn[1] == 0x6B) {
       delta = dis_SSEint_E_to_G( vbi, pfx, delta+2, 
                                  "packssdw",
-                                 Iop_QNarrow32Sto16Sx8, True );
+                                 Iop_QNarrowBin32Sto16Sx8, True );
       goto decode_success;
    }
 
@@ -11796,7 +11796,7 @@
        && insn[0] == 0x0F && insn[1] == 0x63) {
       delta = dis_SSEint_E_to_G( vbi, pfx, delta+2, 
                                  "packsswb",
-                                 Iop_QNarrow16Sto8Sx16, True );
+                                 Iop_QNarrowBin16Sto8Sx16, True );
       goto decode_success;
    }
 
@@ -11805,7 +11805,7 @@
        && insn[0] == 0x0F && insn[1] == 0x67) {
       delta = dis_SSEint_E_to_G( vbi, pfx, delta+2, 
                                  "packuswb",
-                                 Iop_QNarrow16Sto8Ux16, True );
+                                 Iop_QNarrowBin16Sto8Ux16, True );
       goto decode_success;
    }
 
@@ -16028,7 +16028,8 @@
       assign(argR, getXMMReg( gregOfRexRM(pfx, modrm) ));
 
       putXMMReg( gregOfRexRM(pfx, modrm), 
-                 binop( Iop_QNarrow32Sto16Ux8, mkexpr(argL), mkexpr(argR)) );
+                 binop( Iop_QNarrowBin32Sto16Ux8,
+                        mkexpr(argL), mkexpr(argR)) );
 
       goto decode_success;
    }
diff --git a/priv/guest_arm_toIR.c b/priv/guest_arm_toIR.c
index cbcda0c..b52ed4a 100644
--- a/priv/guest_arm_toIR.c
+++ b/priv/guest_arm_toIR.c
@@ -4815,15 +4815,15 @@
          size = B;
          switch (size) {
             case 0:
-               cvt = U ? Iop_Longen8Ux8 : Iop_Longen8Sx8;
+               cvt = U ? Iop_Widen8Uto16x8 : Iop_Widen8Sto16x8;
                op = (A & 2) ? Iop_Sub16x8 : Iop_Add16x8;
                break;
             case 1:
-               cvt = U ? Iop_Longen16Ux4 : Iop_Longen16Sx4;
+               cvt = U ? Iop_Widen16Uto32x4 : Iop_Widen16Sto32x4;
                op = (A & 2) ? Iop_Sub32x4 : Iop_Add32x4;
                break;
             case 2:
-               cvt = U ? Iop_Longen32Ux2 : Iop_Longen32Sx2;
+               cvt = U ? Iop_Widen32Uto64x2 : Iop_Widen32Sto64x2;
                op = (A & 2) ? Iop_Sub64x2 : Iop_Add64x2;
                break;
             case 3:
@@ -4860,7 +4860,7 @@
          switch (size) {
             case 0:
                op = Iop_Add16x8;
-               cvt = Iop_Shorten16x8;
+               cvt = Iop_NarrowUn16to8x8;
                sh = Iop_ShrN16x8;
                imm = 1U << 7;
                imm = (imm << 16) | imm;
@@ -4868,14 +4868,14 @@
                break;
             case 1:
                op = Iop_Add32x4;
-               cvt = Iop_Shorten32x4;
+               cvt = Iop_NarrowUn32to16x4;
                sh = Iop_ShrN32x4;
                imm = 1U << 15;
                imm = (imm << 32) | imm;
                break;
             case 2:
                op = Iop_Add64x2;
-               cvt = Iop_Shorten64x2;
+               cvt = Iop_NarrowUn64to32x2;
                sh = Iop_ShrN64x2;
                imm = 1U << 31;
                break;
@@ -4910,22 +4910,22 @@
          switch (size) {
             case 0:
                cmp = U ? Iop_CmpGT8Ux8 : Iop_CmpGT8Sx8;
-               cvt = U ? Iop_Longen8Ux8 : Iop_Longen8Sx8;
-               cvt2 = Iop_Longen8Sx8;
+               cvt = U ? Iop_Widen8Uto16x8 : Iop_Widen8Sto16x8;
+               cvt2 = Iop_Widen8Sto16x8;
                op = Iop_Sub16x8;
                op2 = Iop_Add16x8;
                break;
             case 1:
                cmp = U ? Iop_CmpGT16Ux4 : Iop_CmpGT16Sx4;
-               cvt = U ? Iop_Longen16Ux4 : Iop_Longen16Sx4;
-               cvt2 = Iop_Longen16Sx4;
+               cvt = U ? Iop_Widen16Uto32x4 : Iop_Widen16Sto32x4;
+               cvt2 = Iop_Widen16Sto32x4;
                op = Iop_Sub32x4;
                op2 = Iop_Add32x4;
                break;
             case 2:
                cmp = U ? Iop_CmpGT32Ux2 : Iop_CmpGT32Sx2;
-               cvt = U ? Iop_Longen32Ux2 : Iop_Longen32Sx2;
-               cvt2 = Iop_Longen32Sx2;
+               cvt = U ? Iop_Widen32Uto64x2 : Iop_Widen32Sto64x2;
+               cvt2 = Iop_Widen32Sto64x2;
                op = Iop_Sub64x2;
                op2 = Iop_Add64x2;
                break;
@@ -4968,7 +4968,7 @@
             case 0:
                op = Iop_Sub16x8;
                op2 = Iop_Add16x8;
-               cvt = Iop_Shorten16x8;
+               cvt = Iop_NarrowUn16to8x8;
                sh = Iop_ShrN16x8;
                imm = 1U << 7;
                imm = (imm << 16) | imm;
@@ -4977,7 +4977,7 @@
             case 1:
                op = Iop_Sub32x4;
                op2 = Iop_Add32x4;
-               cvt = Iop_Shorten32x4;
+               cvt = Iop_NarrowUn32to16x4;
                sh = Iop_ShrN32x4;
                imm = 1U << 15;
                imm = (imm << 32) | imm;
@@ -4985,7 +4985,7 @@
             case 2:
                op = Iop_Sub64x2;
                op2 = Iop_Add64x2;
-               cvt = Iop_Shorten64x2;
+               cvt = Iop_NarrowUn64to32x2;
                sh = Iop_ShrN64x2;
                imm = 1U << 31;
                break;
@@ -5020,20 +5020,20 @@
          switch (size) {
             case 0:
                cmp = U ? Iop_CmpGT8Ux8 : Iop_CmpGT8Sx8;
-               cvt = U ? Iop_Longen8Ux8 : Iop_Longen8Sx8;
-               cvt2 = Iop_Longen8Sx8;
+               cvt = U ? Iop_Widen8Uto16x8 : Iop_Widen8Sto16x8;
+               cvt2 = Iop_Widen8Sto16x8;
                op = Iop_Sub16x8;
                break;
             case 1:
                cmp = U ? Iop_CmpGT16Ux4 : Iop_CmpGT16Sx4;
-               cvt = U ? Iop_Longen16Ux4 : Iop_Longen16Sx4;
-               cvt2 = Iop_Longen16Sx4;
+               cvt = U ? Iop_Widen16Uto32x4 : Iop_Widen16Sto32x4;
+               cvt2 = Iop_Widen16Sto32x4;
                op = Iop_Sub32x4;
                break;
             case 2:
                cmp = U ? Iop_CmpGT32Ux2 : Iop_CmpGT32Sx2;
-               cvt = U ? Iop_Longen32Ux2 : Iop_Longen32Sx2;
-               cvt2 = Iop_Longen32Sx2;
+               cvt = U ? Iop_Widen32Uto64x2 : Iop_Widen32Sto64x2;
+               cvt2 = Iop_Widen32Sto64x2;
                op = Iop_Sub64x2;
                break;
             case 3:
@@ -6339,15 +6339,15 @@
                switch (size) {
                   case 1:
                      op = Iop_ShrN16x8;
-                     narOp = Iop_Shorten16x8;
+                     narOp = Iop_NarrowUn16to8x8;
                      break;
                   case 2:
                      op = Iop_ShrN32x4;
-                     narOp = Iop_Shorten32x4;
+                     narOp = Iop_NarrowUn32to16x4;
                      break;
                   case 3:
                      op = Iop_ShrN64x2;
-                     narOp = Iop_Shorten64x2;
+                     narOp = Iop_NarrowUn64to32x2;
                      break;
                   default:
                      vassert(0);
@@ -6380,17 +6380,17 @@
                   case 1:
                      addOp = Iop_Add16x8;
                      shOp = Iop_ShrN16x8;
-                     narOp = Iop_Shorten16x8;
+                     narOp = Iop_NarrowUn16to8x8;
                      break;
                   case 2:
                      addOp = Iop_Add32x4;
                      shOp = Iop_ShrN32x4;
-                     narOp = Iop_Shorten32x4;
+                     narOp = Iop_NarrowUn32to16x4;
                      break;
                   case 3:
                      addOp = Iop_Add64x2;
                      shOp = Iop_ShrN64x2;
-                     narOp = Iop_Shorten64x2;
+                     narOp = Iop_NarrowUn64to32x2;
                      break;
                   default:
                      vassert(0);
@@ -6429,18 +6429,18 @@
             switch (size) {
                case 1:
                   op = U ? Iop_ShrN16x8 : Iop_SarN16x8;
-                  cvt = U ? Iop_QShortenU16Ux8 : Iop_QShortenS16Sx8;
-                  cvt2 = U ? Iop_Longen8Ux8 : Iop_Longen8Sx8;
+                  cvt = U ? Iop_QNarrowUn16Uto8Ux8 : Iop_QNarrowUn16Sto8Sx8;
+                  cvt2 = U ? Iop_Widen8Uto16x8 : Iop_Widen8Sto16x8;
                   break;
                case 2:
                   op = U ? Iop_ShrN32x4 : Iop_SarN32x4;
-                  cvt = U ? Iop_QShortenU32Ux4 : Iop_QShortenS32Sx4;
-                  cvt2 = U ? Iop_Longen16Ux4 : Iop_Longen16Sx4;
+                  cvt = U ? Iop_QNarrowUn32Uto16Ux4 : Iop_QNarrowUn32Sto16Sx4;
+                  cvt2 = U ? Iop_Widen16Uto32x4 : Iop_Widen16Sto32x4;
                   break;
                case 3:
                   op = U ? Iop_ShrN64x2 : Iop_SarN64x2;
-                  cvt = U ? Iop_QShortenU64Ux2 : Iop_QShortenS64Sx2;
-                  cvt2 = U ? Iop_Longen32Ux2 : Iop_Longen32Sx2;
+                  cvt = U ? Iop_QNarrowUn64Uto32Ux2 : Iop_QNarrowUn64Sto32Sx2;
+                  cvt2 = U ? Iop_Widen32Uto64x2 : Iop_Widen32Sto64x2;
                   break;
                default:
                   vassert(0);
@@ -6452,18 +6452,18 @@
             switch (size) {
                case 1:
                   op = Iop_SarN16x8;
-                  cvt = Iop_QShortenU16Sx8;
-                  cvt2 = Iop_Longen8Ux8;
+                  cvt = Iop_QNarrowUn16Sto8Ux8;
+                  cvt2 = Iop_Widen8Uto16x8;
                   break;
                case 2:
                   op = Iop_SarN32x4;
-                  cvt = Iop_QShortenU32Sx4;
-                  cvt2 = Iop_Longen16Ux4;
+                  cvt = Iop_QNarrowUn32Sto16Ux4;
+                  cvt2 = Iop_Widen16Uto32x4;
                   break;
                case 3:
                   op = Iop_SarN64x2;
-                  cvt = Iop_QShortenU64Sx2;
-                  cvt2 = Iop_Longen32Ux2;
+                  cvt = Iop_QNarrowUn64Sto32Ux2;
+                  cvt2 = Iop_Widen32Uto64x2;
                   break;
                default:
                   vassert(0);
@@ -6523,15 +6523,15 @@
          switch (size) {
             case 0:
                op = Iop_ShlN16x8;
-               cvt = U ? Iop_Longen8Ux8 : Iop_Longen8Sx8;
+               cvt = U ? Iop_Widen8Uto16x8 : Iop_Widen8Sto16x8;
                break;
             case 1:
                op = Iop_ShlN32x4;
-               cvt = U ? Iop_Longen16Ux4 : Iop_Longen16Sx4;
+               cvt = U ? Iop_Widen16Uto32x4 : Iop_Widen16Sto32x4;
                break;
             case 2:
                op = Iop_ShlN64x2;
-               cvt = U ? Iop_Longen32Ux2 : Iop_Longen32Sx2;
+               cvt = U ? Iop_Widen32Uto64x2 : Iop_Widen32Sto64x2;
                break;
             case 3:
                return False;
@@ -7340,9 +7340,9 @@
             IROp op;
             mreg >>= 1;
             switch (size) {
-               case 0: op = Iop_Shorten16x8; break;
-               case 1: op = Iop_Shorten32x4; break;
-               case 2: op = Iop_Shorten64x2; break;
+               case 0: op = Iop_NarrowUn16to8x8;  break;
+               case 1: op = Iop_NarrowUn32to16x4; break;
+               case 2: op = Iop_NarrowUn64to32x2; break;
                case 3: return False;
                default: vassert(0);
             }
@@ -7359,9 +7359,9 @@
                return False;
             mreg >>= 1;
             switch (size) {
-               case 0: op2 = Iop_Shorten16x8; break;
-               case 1: op2 = Iop_Shorten32x4; break;
-               case 2: op2 = Iop_Shorten64x2; break;
+               case 0: op2 = Iop_NarrowUn16to8x8;  break;
+               case 1: op2 = Iop_NarrowUn32to16x4; break;
+               case 2: op2 = Iop_NarrowUn64to32x2; break;
                case 3: return False;
                default: vassert(0);
             }
@@ -7370,9 +7370,9 @@
                   vassert(0);
                case 1:
                   switch (size) {
-                     case 0: op = Iop_QShortenU16Sx8; break;
-                     case 1: op = Iop_QShortenU32Sx4; break;
-                     case 2: op = Iop_QShortenU64Sx2; break;
+                     case 0: op = Iop_QNarrowUn16Sto8Ux8;  break;
+                     case 1: op = Iop_QNarrowUn32Sto16Ux4; break;
+                     case 2: op = Iop_QNarrowUn64Sto32Ux2; break;
                      case 3: return False;
                      default: vassert(0);
                   }
@@ -7380,9 +7380,9 @@
                   break;
                case 2:
                   switch (size) {
-                     case 0: op = Iop_QShortenS16Sx8; break;
-                     case 1: op = Iop_QShortenS32Sx4; break;
-                     case 2: op = Iop_QShortenS64Sx2; break;
+                     case 0: op = Iop_QNarrowUn16Sto8Sx8;  break;
+                     case 1: op = Iop_QNarrowUn32Sto16Sx4; break;
+                     case 2: op = Iop_QNarrowUn64Sto32Sx2; break;
                      case 3: return False;
                      default: vassert(0);
                   }
@@ -7390,9 +7390,9 @@
                   break;
                case 3:
                   switch (size) {
-                     case 0: op = Iop_QShortenU16Ux8; break;
-                     case 1: op = Iop_QShortenU32Ux4; break;
-                     case 2: op = Iop_QShortenU64Ux2; break;
+                     case 0: op = Iop_QNarrowUn16Uto8Ux8;  break;
+                     case 1: op = Iop_QNarrowUn32Uto16Ux4; break;
+                     case 2: op = Iop_QNarrowUn64Uto32Ux2; break;
                      case 3: return False;
                      default: vassert(0);
                   }
@@ -7422,9 +7422,9 @@
             shift_imm = 8 << size;
             res = newTemp(Ity_V128);
             switch (size) {
-               case 0: op = Iop_ShlN16x8; cvt = Iop_Longen8Ux8; break;
-               case 1: op = Iop_ShlN32x4; cvt = Iop_Longen16Ux4; break;
-               case 2: op = Iop_ShlN64x2; cvt = Iop_Longen32Ux2; break;
+               case 0: op = Iop_ShlN16x8; cvt = Iop_Widen8Uto16x8;  break;
+               case 1: op = Iop_ShlN32x4; cvt = Iop_Widen16Uto32x4; break;
+               case 2: op = Iop_ShlN64x2; cvt = Iop_Widen32Uto64x2; break;
                case 3: return False;
                default: vassert(0);
             }
diff --git a/priv/guest_ppc_toIR.c b/priv/guest_ppc_toIR.c
index 6cf7c9d..ce7cf5d 100644
--- a/priv/guest_ppc_toIR.c
+++ b/priv/guest_ppc_toIR.c
@@ -9418,7 +9418,7 @@
                                mkU8(15))) );
 
       putVReg( vD_addr,
-               binop(Iop_QNarrow32Sto16Sx8, mkexpr(zHi), mkexpr(zLo)) );
+               binop(Iop_QNarrowBin32Sto16Sx8, mkexpr(zHi), mkexpr(zLo)) );
       break;
    }
    case 0x21: { // vmhraddshs (Mult High Round, Add Signed HW Saturate, AV p186)
@@ -9453,7 +9453,7 @@
                                mkU8(15))) );
 
       putVReg( vD_addr,
-               binop(Iop_QNarrow32Sto16Sx8, mkexpr(zHi), mkexpr(zLo)) );
+               binop(Iop_QNarrowBin32Sto16Sx8, mkexpr(zHi), mkexpr(zLo)) );
       break;
    }
    case 0x22: { // vmladduhm (Mult Low, Add Unsigned HW Modulo, AV p194)
@@ -9471,7 +9471,8 @@
       assign(zHi, binop(Iop_Add32x4,
                      binop(Iop_MullEven16Ux8, mkexpr(aHi), mkexpr(bHi)),
                      mkexpr(cHi)));
-      putVReg(vD_addr, binop(Iop_Narrow32x4, mkexpr(zHi), mkexpr(zLo)));
+      putVReg( vD_addr,
+               binop(Iop_NarrowBin32to16x8, mkexpr(zHi), mkexpr(zLo)) );
       break;
    }
 
@@ -9955,25 +9956,27 @@
    /* Packing */
    case 0x00E: // vpkuhum (Pack Unsigned HW Unsigned Modulo, AV p224)
       DIP("vpkuhum v%d,v%d,v%d\n", vD_addr, vA_addr, vB_addr);
-      putVReg( vD_addr, binop(Iop_Narrow16x8, mkexpr(vA), mkexpr(vB)) );
+      putVReg( vD_addr,
+               binop(Iop_NarrowBin16to8x16, mkexpr(vA), mkexpr(vB)) );
       return True;
 
    case 0x04E: // vpkuwum (Pack Unsigned W Unsigned Modulo, AV p226)
       DIP("vpkuwum v%d,v%d,v%d\n", vD_addr, vA_addr, vB_addr);
-      putVReg( vD_addr, binop(Iop_Narrow32x4, mkexpr(vA), mkexpr(vB)) );
+      putVReg( vD_addr,
+               binop(Iop_NarrowBin32to16x8, mkexpr(vA), mkexpr(vB)) );
       return True;
 
    case 0x08E: // vpkuhus (Pack Unsigned HW Unsigned Saturate, AV p225)
       DIP("vpkuhus v%d,v%d,v%d\n", vD_addr, vA_addr, vB_addr);
       putVReg( vD_addr,
-               binop(Iop_QNarrow16Uto8Ux16, mkexpr(vA), mkexpr(vB)) );
+               binop(Iop_QNarrowBin16Uto8Ux16, mkexpr(vA), mkexpr(vB)) );
       // TODO: set VSCR[SAT]
       return True;
 
    case 0x0CE: // vpkuwus (Pack Unsigned W Unsigned Saturate, AV p227)
       DIP("vpkuwus v%d,v%d,v%d\n", vD_addr, vA_addr, vB_addr);
       putVReg( vD_addr,
-               binop(Iop_QNarrow32Uto16Ux8, mkexpr(vA), mkexpr(vB)) );
+               binop(Iop_QNarrowBin32Uto16Ux8, mkexpr(vA), mkexpr(vB)) );
       // TODO: set VSCR[SAT]
       return True;
 
@@ -9992,7 +9995,7 @@
                             unop(Iop_NotV128,
                                  binop(Iop_SarN16x8,
                                        mkexpr(vB), mkU8(15)))) );
-      putVReg( vD_addr, binop(Iop_QNarrow16Uto8Ux16,
+      putVReg( vD_addr, binop(Iop_QNarrowBin16Uto8Ux16,
                               mkexpr(vA_tmp), mkexpr(vB_tmp)) );
       // TODO: set VSCR[SAT]
       return True;
@@ -10012,7 +10015,7 @@
                             unop(Iop_NotV128,
                                  binop(Iop_SarN32x4,
                                        mkexpr(vB), mkU8(31)))) );
-      putVReg( vD_addr, binop(Iop_QNarrow32Uto16Ux8,
+      putVReg( vD_addr, binop(Iop_QNarrowBin32Uto16Ux8,
                               mkexpr(vA_tmp), mkexpr(vB_tmp)) );
       // TODO: set VSCR[SAT]
       return True;
@@ -10020,14 +10023,14 @@
    case 0x18E: // vpkshss (Pack Signed HW Signed Saturate, AV p220)
       DIP("vpkshss v%d,v%d,v%d\n", vD_addr, vA_addr, vB_addr);
       putVReg( vD_addr,
-               binop(Iop_QNarrow16Sto8Sx16, mkexpr(vA), mkexpr(vB)) );
+               binop(Iop_QNarrowBin16Sto8Sx16, mkexpr(vA), mkexpr(vB)) );
       // TODO: set VSCR[SAT]
       return True;
 
    case 0x1CE: // vpkswss (Pack Signed W Signed Saturate, AV p222)
       DIP("vpkswss v%d,v%d,v%d\n", vD_addr, vA_addr, vB_addr);
       putVReg( vD_addr,
-               binop(Iop_QNarrow32Sto16Sx8, mkexpr(vA), mkexpr(vB)) );
+               binop(Iop_QNarrowBin32Sto16Sx8, mkexpr(vA), mkexpr(vB)) );
       // TODO: set VSCR[SAT]
       return True;
 
@@ -10067,7 +10070,7 @@
       assign( b_tmp, binop(Iop_OrV128, mkexpr(b1),
                            binop(Iop_OrV128, mkexpr(b2), mkexpr(b3))) );
 
-      putVReg( vD_addr, binop(Iop_Narrow32x4,
+      putVReg( vD_addr, binop(Iop_NarrowBin32to16x8,
                               mkexpr(a_tmp), mkexpr(b_tmp)) );
       return True;
    }
diff --git a/priv/guest_x86_toIR.c b/priv/guest_x86_toIR.c
index c8398a8..3f5bf91 100644
--- a/priv/guest_x86_toIR.c
+++ b/priv/guest_x86_toIR.c
@@ -5475,9 +5475,9 @@
       case 0x65: op = Iop_CmpGT16Sx4; break;
       case 0x66: op = Iop_CmpGT32Sx2; break;
 
-      case 0x6B: op = Iop_QNarrow32Sto16Sx4; eLeft = True; break;
-      case 0x63: op = Iop_QNarrow16Sto8Sx8;  eLeft = True; break;
-      case 0x67: op = Iop_QNarrow16Sto8Ux8;  eLeft = True; break;
+      case 0x6B: op = Iop_QNarrowBin32Sto16Sx4; eLeft = True; break;
+      case 0x63: op = Iop_QNarrowBin16Sto8Sx8;  eLeft = True; break;
+      case 0x67: op = Iop_QNarrowBin16Sto8Ux8;  eLeft = True; break;
 
       case 0x68: op = Iop_InterleaveHI8x8;  eLeft = True; break;
       case 0x69: op = Iop_InterleaveHI16x4; eLeft = True; break;
@@ -10533,7 +10533,7 @@
    if (sz == 2 && insn[0] == 0x0F && insn[1] == 0x6B) {
       delta = dis_SSEint_E_to_G( sorb, delta+2, 
                                  "packssdw",
-                                 Iop_QNarrow32Sto16Sx8, True );
+                                 Iop_QNarrowBin32Sto16Sx8, True );
       goto decode_success;
    }
 
@@ -10541,7 +10541,7 @@
    if (sz == 2 && insn[0] == 0x0F && insn[1] == 0x63) {
       delta = dis_SSEint_E_to_G( sorb, delta+2, 
                                  "packsswb",
-                                 Iop_QNarrow16Sto8Sx16, True );
+                                 Iop_QNarrowBin16Sto8Sx16, True );
       goto decode_success;
    }
 
@@ -10549,7 +10549,7 @@
    if (sz == 2 && insn[0] == 0x0F && insn[1] == 0x67) {
       delta = dis_SSEint_E_to_G( sorb, delta+2, 
                                  "packuswb",
-                                 Iop_QNarrow16Sto8Ux16, True );
+                                 Iop_QNarrowBin16Sto8Ux16, True );
       goto decode_success;
    }
 
diff --git a/priv/host_amd64_isel.c b/priv/host_amd64_isel.c
index b428ca0..c887ca3 100644
--- a/priv/host_amd64_isel.c
+++ b/priv/host_amd64_isel.c
@@ -1094,12 +1094,12 @@
          case Iop_QAdd16Ux4:
             fn = (HWord)h_generic_calc_QAdd16Ux4; break;
 
-         case Iop_QNarrow32Sto16Sx4:
-            fn = (HWord)h_generic_calc_QNarrow32Sto16Sx4; break;
-         case Iop_QNarrow16Sto8Sx8:
-            fn = (HWord)h_generic_calc_QNarrow16Sto8Sx8; break;
-         case Iop_QNarrow16Sto8Ux8:
-            fn = (HWord)h_generic_calc_QNarrow16Sto8Ux8; break;
+         case Iop_QNarrowBin32Sto16Sx4:
+            fn = (HWord)h_generic_calc_QNarrowBin32Sto16Sx4; break;
+         case Iop_QNarrowBin16Sto8Sx8:
+            fn = (HWord)h_generic_calc_QNarrowBin16Sto8Sx8; break;
+         case Iop_QNarrowBin16Sto8Ux8:
+            fn = (HWord)h_generic_calc_QNarrowBin16Sto8Ux8; break;
 
          case Iop_QSub8Sx8:
             fn = (HWord)h_generic_calc_QSub8Sx8; break;
@@ -3544,11 +3544,11 @@
          return dst;
       }
 
-      case Iop_QNarrow32Sto16Sx8: 
+      case Iop_QNarrowBin32Sto16Sx8: 
          op = Asse_PACKSSD; arg1isEReg = True; goto do_SseReRg;
-      case Iop_QNarrow16Sto8Sx16: 
+      case Iop_QNarrowBin16Sto8Sx16: 
          op = Asse_PACKSSW; arg1isEReg = True; goto do_SseReRg;
-      case Iop_QNarrow16Sto8Ux16: 
+      case Iop_QNarrowBin16Sto8Ux16: 
          op = Asse_PACKUSW; arg1isEReg = True; goto do_SseReRg;
 
       case Iop_InterleaveHI8x16: 
@@ -3660,8 +3660,8 @@
                            goto do_SseAssistedBinary;
       case Iop_CmpGT64Sx2: fn = (HWord)h_generic_calc_CmpGT64Sx2;
                            goto do_SseAssistedBinary;
-      case Iop_QNarrow32Sto16Ux8:
-                           fn = (HWord)h_generic_calc_QNarrow32Sto16Ux8;
+      case Iop_QNarrowBin32Sto16Ux8:
+                           fn = (HWord)h_generic_calc_QNarrowBin32Sto16Ux8;
                            goto do_SseAssistedBinary;
       do_SseAssistedBinary: {
          /* RRRufff!  RRRufff code is what we're generating here.  Oh
diff --git a/priv/host_arm_isel.c b/priv/host_arm_isel.c
index a2987ee..d4d9c86 100644
--- a/priv/host_arm_isel.c
+++ b/priv/host_arm_isel.c
@@ -3351,64 +3351,64 @@
             addInstr(env, ARMInstr_NUnary(ARMneon_NOT, res, tmp, 4, False));
             return res;
          }
-         case Iop_Shorten16x8:
-         case Iop_Shorten32x4:
-         case Iop_Shorten64x2: {
+         case Iop_NarrowUn16to8x8:
+         case Iop_NarrowUn32to16x4:
+         case Iop_NarrowUn64to32x2: {
             HReg res = newVRegD(env);
             HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
             UInt size = 0;
             switch(e->Iex.Binop.op) {
-               case Iop_Shorten16x8: size = 0; break;
-               case Iop_Shorten32x4: size = 1; break;
-               case Iop_Shorten64x2: size = 2; break;
+               case Iop_NarrowUn16to8x8:  size = 0; break;
+               case Iop_NarrowUn32to16x4: size = 1; break;
+               case Iop_NarrowUn64to32x2: size = 2; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_COPYN,
                                           res, arg, size, False));
             return res;
          }
-         case Iop_QShortenS16Sx8:
-         case Iop_QShortenS32Sx4:
-         case Iop_QShortenS64Sx2: {
+         case Iop_QNarrowUn16Sto8Sx8:
+         case Iop_QNarrowUn32Sto16Sx4:
+         case Iop_QNarrowUn64Sto32Sx2: {
             HReg res = newVRegD(env);
             HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
             UInt size = 0;
             switch(e->Iex.Binop.op) {
-               case Iop_QShortenS16Sx8: size = 0; break;
-               case Iop_QShortenS32Sx4: size = 1; break;
-               case Iop_QShortenS64Sx2: size = 2; break;
+               case Iop_QNarrowUn16Sto8Sx8:  size = 0; break;
+               case Iop_QNarrowUn32Sto16Sx4: size = 1; break;
+               case Iop_QNarrowUn64Sto32Sx2: size = 2; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_COPYQNSS,
                                           res, arg, size, False));
             return res;
          }
-         case Iop_QShortenU16Sx8:
-         case Iop_QShortenU32Sx4:
-         case Iop_QShortenU64Sx2: {
+         case Iop_QNarrowUn16Sto8Ux8:
+         case Iop_QNarrowUn32Sto16Ux4:
+         case Iop_QNarrowUn64Sto32Ux2: {
             HReg res = newVRegD(env);
             HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
             UInt size = 0;
             switch(e->Iex.Binop.op) {
-               case Iop_QShortenU16Sx8: size = 0; break;
-               case Iop_QShortenU32Sx4: size = 1; break;
-               case Iop_QShortenU64Sx2: size = 2; break;
+               case Iop_QNarrowUn16Sto8Ux8:  size = 0; break;
+               case Iop_QNarrowUn32Sto16Ux4: size = 1; break;
+               case Iop_QNarrowUn64Sto32Ux2: size = 2; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_COPYQNUS,
                                           res, arg, size, False));
             return res;
          }
-         case Iop_QShortenU16Ux8:
-         case Iop_QShortenU32Ux4:
-         case Iop_QShortenU64Ux2: {
+         case Iop_QNarrowUn16Uto8Ux8:
+         case Iop_QNarrowUn32Uto16Ux4:
+         case Iop_QNarrowUn64Uto32Ux2: {
             HReg res = newVRegD(env);
             HReg arg = iselNeonExpr(env, e->Iex.Unop.arg);
             UInt size = 0;
             switch(e->Iex.Binop.op) {
-               case Iop_QShortenU16Ux8: size = 0; break;
-               case Iop_QShortenU32Ux4: size = 1; break;
-               case Iop_QShortenU64Ux2: size = 2; break;
+               case Iop_QNarrowUn16Uto8Ux8:  size = 0; break;
+               case Iop_QNarrowUn32Uto16Ux4: size = 1; break;
+               case Iop_QNarrowUn64Uto32Ux2: size = 2; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_COPYQNUU,
@@ -3974,32 +3974,32 @@
             addInstr(env, ARMInstr_NUnary(ARMneon_NOT, res, tmp, 4, True));
             return res;
          }
-         case Iop_Longen8Ux8:
-         case Iop_Longen16Ux4:
-         case Iop_Longen32Ux2: {
+         case Iop_Widen8Uto16x8:
+         case Iop_Widen16Uto32x4:
+         case Iop_Widen32Uto64x2: {
             HReg res = newVRegV(env);
             HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
             UInt size;
             switch (e->Iex.Unop.op) {
-               case Iop_Longen8Ux8: size = 0; break;
-               case Iop_Longen16Ux4: size = 1; break;
-               case Iop_Longen32Ux2: size = 2; break;
+               case Iop_Widen8Uto16x8:  size = 0; break;
+               case Iop_Widen16Uto32x4: size = 1; break;
+               case Iop_Widen32Uto64x2: size = 2; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_COPYLU,
                                           res, arg, size, True));
             return res;
          }
-         case Iop_Longen8Sx8:
-         case Iop_Longen16Sx4:
-         case Iop_Longen32Sx2: {
+         case Iop_Widen8Sto16x8:
+         case Iop_Widen16Sto32x4:
+         case Iop_Widen32Sto64x2: {
             HReg res = newVRegV(env);
             HReg arg = iselNeon64Expr(env, e->Iex.Unop.arg);
             UInt size;
             switch (e->Iex.Unop.op) {
-               case Iop_Longen8Sx8: size = 0; break;
-               case Iop_Longen16Sx4: size = 1; break;
-               case Iop_Longen32Sx2: size = 2; break;
+               case Iop_Widen8Sto16x8:  size = 0; break;
+               case Iop_Widen16Sto32x4: size = 1; break;
+               case Iop_Widen32Sto64x2: size = 2; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_COPYLS,
diff --git a/priv/host_generic_simd128.c b/priv/host_generic_simd128.c
index 2a839f7..4fd1df5 100644
--- a/priv/host_generic_simd128.c
+++ b/priv/host_generic_simd128.c
@@ -271,8 +271,8 @@
    res->w8[15] = sar8(argL->w8[15], nn);
 }
 
-void h_generic_calc_QNarrow32Sto16Ux8 ( /*OUT*/V128* res,
-                                        V128* argL, V128* argR )
+void h_generic_calc_QNarrowBin32Sto16Ux8 ( /*OUT*/V128* res,
+                                           V128* argL, V128* argR )
 {
    res->w16[0] = qnarrow32Sto16U(argR->w32[0]);
    res->w16[1] = qnarrow32Sto16U(argR->w32[1]);
diff --git a/priv/host_generic_simd128.h b/priv/host_generic_simd128.h
index f690bda..ed8a7db 100644
--- a/priv/host_generic_simd128.h
+++ b/priv/host_generic_simd128.h
@@ -61,7 +61,7 @@
 extern void h_generic_calc_SarN64x2   ( /*OUT*/V128*, V128*, UInt );
 extern void h_generic_calc_SarN8x16   ( /*OUT*/V128*, V128*, UInt );
 
-extern void h_generic_calc_QNarrow32Sto16Ux8
+extern void h_generic_calc_QNarrowBin32Sto16Ux8
                                       ( /*OUT*/V128*, V128*, V128* );
 
 
diff --git a/priv/host_generic_simd64.c b/priv/host_generic_simd64.c
index 58ebc7b..61bdbd3 100644
--- a/priv/host_generic_simd64.c
+++ b/priv/host_generic_simd64.c
@@ -759,7 +759,7 @@
 
 /* ------------ Saturating narrowing ------------ */
 
-ULong h_generic_calc_QNarrow32Sto16Sx4 ( ULong aa, ULong bb )
+ULong h_generic_calc_QNarrowBin32Sto16Sx4 ( ULong aa, ULong bb )
 {
    UInt d = sel32x2_1(aa);
    UInt c = sel32x2_0(aa);
@@ -773,7 +773,7 @@
           );
 }
 
-ULong h_generic_calc_QNarrow16Sto8Sx8 ( ULong aa, ULong bb )
+ULong h_generic_calc_QNarrowBin16Sto8Sx8 ( ULong aa, ULong bb )
 {
    UShort h = sel16x4_3(aa);
    UShort g = sel16x4_2(aa);
@@ -795,7 +795,7 @@
           );
 }
 
-ULong h_generic_calc_QNarrow16Sto8Ux8 ( ULong aa, ULong bb )
+ULong h_generic_calc_QNarrowBin16Sto8Ux8 ( ULong aa, ULong bb )
 {
    UShort h = sel16x4_3(aa);
    UShort g = sel16x4_2(aa);
diff --git a/priv/host_generic_simd64.h b/priv/host_generic_simd64.h
index 05ac560..1807ed7 100644
--- a/priv/host_generic_simd64.h
+++ b/priv/host_generic_simd64.h
@@ -87,9 +87,9 @@
 extern ULong h_generic_calc_CmpNEZ16x4 ( ULong );
 extern ULong h_generic_calc_CmpNEZ8x8  ( ULong );
 
-extern ULong h_generic_calc_QNarrow32Sto16Sx4 ( ULong, ULong );
-extern ULong h_generic_calc_QNarrow16Sto8Sx8  ( ULong, ULong );
-extern ULong h_generic_calc_QNarrow16Sto8Ux8  ( ULong, ULong );
+extern ULong h_generic_calc_QNarrowBin32Sto16Sx4 ( ULong, ULong );
+extern ULong h_generic_calc_QNarrowBin16Sto8Sx8  ( ULong, ULong );
+extern ULong h_generic_calc_QNarrowBin16Sto8Ux8  ( ULong, ULong );
 
 extern ULong h_generic_calc_InterleaveHI8x8 ( ULong, ULong );
 extern ULong h_generic_calc_InterleaveLO8x8 ( ULong, ULong );
diff --git a/priv/host_ppc_isel.c b/priv/host_ppc_isel.c
index f3885eb..3d349e2 100644
--- a/priv/host_ppc_isel.c
+++ b/priv/host_ppc_isel.c
@@ -3678,9 +3678,9 @@
       case Iop_Shr16x8:    op = Pav_SHR;    goto do_AvBin16x8;
       case Iop_Sar16x8:    op = Pav_SAR;    goto do_AvBin16x8;
       case Iop_Rol16x8:    op = Pav_ROTL;   goto do_AvBin16x8;
-      case Iop_Narrow16x8:        op = Pav_PACKUU;  goto do_AvBin16x8;
-      case Iop_QNarrow16Uto8Ux16: op = Pav_QPACKUU; goto do_AvBin16x8;
-      case Iop_QNarrow16Sto8Sx16: op = Pav_QPACKSS; goto do_AvBin16x8;
+      case Iop_NarrowBin16to8x16:    op = Pav_PACKUU;  goto do_AvBin16x8;
+      case Iop_QNarrowBin16Uto8Ux16: op = Pav_QPACKUU; goto do_AvBin16x8;
+      case Iop_QNarrowBin16Sto8Sx16: op = Pav_QPACKSS; goto do_AvBin16x8;
       case Iop_InterleaveHI16x8:  op = Pav_MRGHI;  goto do_AvBin16x8;
       case Iop_InterleaveLO16x8:  op = Pav_MRGLO;  goto do_AvBin16x8;
       case Iop_Add16x8:    op = Pav_ADDU;   goto do_AvBin16x8;
@@ -3712,9 +3712,9 @@
       case Iop_Shr32x4:    op = Pav_SHR;    goto do_AvBin32x4;
       case Iop_Sar32x4:    op = Pav_SAR;    goto do_AvBin32x4;
       case Iop_Rol32x4:    op = Pav_ROTL;   goto do_AvBin32x4;
-      case Iop_Narrow32x4:        op = Pav_PACKUU;  goto do_AvBin32x4;
-      case Iop_QNarrow32Uto16Ux8: op = Pav_QPACKUU; goto do_AvBin32x4;
-      case Iop_QNarrow32Sto16Sx8: op = Pav_QPACKSS; goto do_AvBin32x4;
+      case Iop_NarrowBin32to16x8:    op = Pav_PACKUU;  goto do_AvBin32x4;
+      case Iop_QNarrowBin32Uto16Ux8: op = Pav_QPACKUU; goto do_AvBin32x4;
+      case Iop_QNarrowBin32Sto16Sx8: op = Pav_QPACKSS; goto do_AvBin32x4;
       case Iop_InterleaveHI32x4:  op = Pav_MRGHI;  goto do_AvBin32x4;
       case Iop_InterleaveLO32x4:  op = Pav_MRGLO;  goto do_AvBin32x4;
       case Iop_Add32x4:    op = Pav_ADDU;   goto do_AvBin32x4;
diff --git a/priv/host_x86_isel.c b/priv/host_x86_isel.c
index 74552da..7ec6305 100644
--- a/priv/host_x86_isel.c
+++ b/priv/host_x86_isel.c
@@ -2386,12 +2386,12 @@
          case Iop_QAdd16Ux4:
             fn = (HWord)h_generic_calc_QAdd16Ux4; goto binnish;
 
-         case Iop_QNarrow32Sto16Sx4:
-            fn = (HWord)h_generic_calc_QNarrow32Sto16Sx4; goto binnish;
-         case Iop_QNarrow16Sto8Sx8:
-            fn = (HWord)h_generic_calc_QNarrow16Sto8Sx8; goto binnish;
-         case Iop_QNarrow16Sto8Ux8:
-            fn = (HWord)h_generic_calc_QNarrow16Sto8Ux8; goto binnish;
+         case Iop_QNarrowBin32Sto16Sx4:
+            fn = (HWord)h_generic_calc_QNarrowBin32Sto16Sx4; goto binnish;
+         case Iop_QNarrowBin16Sto8Sx8:
+            fn = (HWord)h_generic_calc_QNarrowBin16Sto8Sx8; goto binnish;
+         case Iop_QNarrowBin16Sto8Ux8:
+            fn = (HWord)h_generic_calc_QNarrowBin16Sto8Ux8; goto binnish;
 
          case Iop_QSub8Sx8:
             fn = (HWord)h_generic_calc_QSub8Sx8; goto binnish;
@@ -3500,11 +3500,11 @@
          return dst;
       }
 
-      case Iop_QNarrow32Sto16Sx8: 
+      case Iop_QNarrowBin32Sto16Sx8: 
          op = Xsse_PACKSSD; arg1isEReg = True; goto do_SseReRg;
-      case Iop_QNarrow16Sto8Sx16: 
+      case Iop_QNarrowBin16Sto8Sx16: 
          op = Xsse_PACKSSW; arg1isEReg = True; goto do_SseReRg;
-      case Iop_QNarrow16Sto8Ux16: 
+      case Iop_QNarrowBin16Sto8Ux16: 
          op = Xsse_PACKUSW; arg1isEReg = True; goto do_SseReRg;
 
       case Iop_InterleaveHI8x16: 
diff --git a/priv/ir_defs.c b/priv/ir_defs.c
index 0418520..f5ac5fc 100644
--- a/priv/ir_defs.c
+++ b/priv/ir_defs.c
@@ -506,9 +506,9 @@
       case Iop_SarN8x8: vex_printf("SarN8x8"); return;
       case Iop_SarN16x4: vex_printf("SarN16x4"); return;
       case Iop_SarN32x2: vex_printf("SarN32x2"); return;
-      case Iop_QNarrow16Sto8Ux8: vex_printf("QNarrow16Sto8Ux8"); return;
-      case Iop_QNarrow16Sto8Sx8: vex_printf("QNarrow16Sto8Sx8"); return;
-      case Iop_QNarrow32Sto16Sx4: vex_printf("QNarrow32Sto16Sx4"); return;
+      case Iop_QNarrowBin16Sto8Ux8: vex_printf("QNarrowBin16Sto8Ux8"); return;
+      case Iop_QNarrowBin16Sto8Sx8: vex_printf("QNarrowBin16Sto8Sx8"); return;
+      case Iop_QNarrowBin32Sto16Sx4: vex_printf("QNarrowBin32Sto16Sx4"); return;
       case Iop_InterleaveHI8x8: vex_printf("InterleaveHI8x8"); return;
       case Iop_InterleaveHI16x4: vex_printf("InterleaveHI16x4"); return;
       case Iop_InterleaveHI32x2: vex_printf("InterleaveHI32x2"); return;
@@ -844,32 +844,32 @@
       case Iop_Rol16x8: vex_printf("Rol16x8"); return;
       case Iop_Rol32x4: vex_printf("Rol32x4"); return;
 
-      case Iop_Narrow16x8:   vex_printf("Narrow16x8"); return;
-      case Iop_Narrow32x4:   vex_printf("Narrow32x4"); return;
-      case Iop_QNarrow16Uto8Ux16: vex_printf("QNarrow16Uto8Ux16"); return;
-      case Iop_QNarrow32Sto16Ux8: vex_printf("QNarrow32Sto16Ux8"); return;
-      case Iop_QNarrow16Sto8Ux16: vex_printf("QNarrow16Sto8Ux16"); return;
-      case Iop_QNarrow32Uto16Ux8: vex_printf("QNarrow32Uto16Ux8"); return;
-      case Iop_QNarrow16Sto8Sx16: vex_printf("QNarrow16Sto8Sx16"); return;
-      case Iop_QNarrow32Sto16Sx8: vex_printf("QNarrow32Sto16Sx8"); return;
-      case Iop_Shorten16x8: vex_printf("Shorten16x8"); return;
-      case Iop_Shorten32x4: vex_printf("Shorten32x4"); return;
-      case Iop_Shorten64x2: vex_printf("Shorten64x2"); return;
-      case Iop_QShortenU16Ux8: vex_printf("QShortenU16Ux8"); return;
-      case Iop_QShortenU32Ux4: vex_printf("QShortenU32Ux4"); return;
-      case Iop_QShortenU64Ux2: vex_printf("QShortenU64Ux2"); return;
-      case Iop_QShortenS16Sx8: vex_printf("QShortenS16Sx8"); return;
-      case Iop_QShortenS32Sx4: vex_printf("QShortenS32Sx4"); return;
-      case Iop_QShortenS64Sx2: vex_printf("QShortenS64Sx2"); return;
-      case Iop_QShortenU16Sx8: vex_printf("QShortenU16Sx8"); return;
-      case Iop_QShortenU32Sx4: vex_printf("QShortenU32Sx4"); return;
-      case Iop_QShortenU64Sx2: vex_printf("QShortenU64Sx2"); return;
-      case Iop_Longen8Ux8: vex_printf("Longen8Ux8"); return;
-      case Iop_Longen16Ux4: vex_printf("Longen16Ux4"); return;
-      case Iop_Longen32Ux2: vex_printf("Longen32Ux2"); return;
-      case Iop_Longen8Sx8: vex_printf("Longen8Sx8"); return;
-      case Iop_Longen16Sx4: vex_printf("Longen16Sx4"); return;
-      case Iop_Longen32Sx2: vex_printf("Longen32Sx2"); return;
+      case Iop_NarrowBin16to8x16:    vex_printf("NarrowBin16to8x16"); return;
+      case Iop_NarrowBin32to16x8:    vex_printf("NarrowBin32to16x8"); return;
+      case Iop_QNarrowBin16Uto8Ux16: vex_printf("QNarrowBin16Uto8Ux16"); return;
+      case Iop_QNarrowBin32Sto16Ux8: vex_printf("QNarrowBin32Sto16Ux8"); return;
+      case Iop_QNarrowBin16Sto8Ux16: vex_printf("QNarrowBin16Sto8Ux16"); return;
+      case Iop_QNarrowBin32Uto16Ux8: vex_printf("QNarrowBin32Uto16Ux8"); return;
+      case Iop_QNarrowBin16Sto8Sx16: vex_printf("QNarrowBin16Sto8Sx16"); return;
+      case Iop_QNarrowBin32Sto16Sx8: vex_printf("QNarrowBin32Sto16Sx8"); return;
+      case Iop_NarrowUn16to8x8:     vex_printf("NarrowUn16to8x8");  return;
+      case Iop_NarrowUn32to16x4:    vex_printf("NarrowUn32to16x4"); return;
+      case Iop_NarrowUn64to32x2:    vex_printf("NarrowUn64to32x2"); return;
+      case Iop_QNarrowUn16Uto8Ux8:  vex_printf("QNarrowUn16Uto8Ux8");  return;
+      case Iop_QNarrowUn32Uto16Ux4: vex_printf("QNarrowUn32Uto16Ux4"); return;
+      case Iop_QNarrowUn64Uto32Ux2: vex_printf("QNarrowUn64Uto32Ux2"); return;
+      case Iop_QNarrowUn16Sto8Sx8:  vex_printf("QNarrowUn16Sto8Sx8");  return;
+      case Iop_QNarrowUn32Sto16Sx4: vex_printf("QNarrowUn32Sto16Sx4"); return;
+      case Iop_QNarrowUn64Sto32Sx2: vex_printf("QNarrowUn64Sto32Sx2"); return;
+      case Iop_QNarrowUn16Sto8Ux8:  vex_printf("QNarrowUn16Sto8Ux8");  return;
+      case Iop_QNarrowUn32Sto16Ux4: vex_printf("QNarrowUn32Sto16Ux4"); return;
+      case Iop_QNarrowUn64Sto32Ux2: vex_printf("QNarrowUn64Sto32Ux2"); return;
+      case Iop_Widen8Uto16x8:  vex_printf("Widen8Uto16x8");  return;
+      case Iop_Widen16Uto32x4: vex_printf("Widen16Uto32x4"); return;
+      case Iop_Widen32Uto64x2: vex_printf("Widen32Uto64x2"); return;
+      case Iop_Widen8Sto16x8:  vex_printf("Widen8Sto16x8");  return;
+      case Iop_Widen16Sto32x4: vex_printf("Widen16Sto32x4"); return;
+      case Iop_Widen32Sto64x2: vex_printf("Widen32Sto64x2"); return;
 
       case Iop_InterleaveHI8x16: vex_printf("InterleaveHI8x16"); return;
       case Iop_InterleaveHI16x8: vex_printf("InterleaveHI16x8"); return;
@@ -2054,8 +2054,8 @@
       case Iop_QAdd32Ux2: case Iop_QAdd64Ux1:
       case Iop_PwAdd8x8: case Iop_PwAdd16x4: case Iop_PwAdd32x2:
       case Iop_PwAdd32Fx2:
-      case Iop_QNarrow32Sto16Sx4:
-      case Iop_QNarrow16Sto8Sx8: case Iop_QNarrow16Sto8Ux8:
+      case Iop_QNarrowBin32Sto16Sx4:
+      case Iop_QNarrowBin16Sto8Sx8: case Iop_QNarrowBin16Sto8Ux8:
       case Iop_Sub8x8: case Iop_Sub16x4: case Iop_Sub32x2:
       case Iop_QSub8Sx8: case Iop_QSub16Sx4:
       case Iop_QSub32Sx2: case Iop_QSub64Sx1:
@@ -2332,17 +2332,31 @@
       case Iop_Rsqrte32x4:
          UNARY(Ity_V128, Ity_V128);
 
-      case Iop_64HLtoV128: BINARY(Ity_I64,Ity_I64, Ity_V128);
+      case Iop_64HLtoV128:
+         BINARY(Ity_I64,Ity_I64, Ity_V128);
+
       case Iop_V128to64: case Iop_V128HIto64:
-      case Iop_Shorten16x8: case Iop_Shorten32x4: case Iop_Shorten64x2:
-      case Iop_QShortenU16Ux8: case Iop_QShortenU32Ux4: case Iop_QShortenU64Ux2:
-      case Iop_QShortenS16Sx8: case Iop_QShortenS32Sx4: case Iop_QShortenS64Sx2:
-      case Iop_QShortenU16Sx8: case Iop_QShortenU32Sx4: case Iop_QShortenU64Sx2:
+      case Iop_NarrowUn16to8x8:
+      case Iop_NarrowUn32to16x4:
+      case Iop_NarrowUn64to32x2:
+      case Iop_QNarrowUn16Uto8Ux8:
+      case Iop_QNarrowUn32Uto16Ux4:
+      case Iop_QNarrowUn64Uto32Ux2:
+      case Iop_QNarrowUn16Sto8Sx8:
+      case Iop_QNarrowUn32Sto16Sx4:
+      case Iop_QNarrowUn64Sto32Sx2:
+      case Iop_QNarrowUn16Sto8Ux8:
+      case Iop_QNarrowUn32Sto16Ux4:
+      case Iop_QNarrowUn64Sto32Ux2:
       case Iop_F32toF16x4:
          UNARY(Ity_V128, Ity_I64);
 
-      case Iop_Longen8Ux8: case Iop_Longen16Ux4: case Iop_Longen32Ux2:
-      case Iop_Longen8Sx8: case Iop_Longen16Sx4: case Iop_Longen32Sx2:
+      case Iop_Widen8Uto16x8:
+      case Iop_Widen16Uto32x4:
+      case Iop_Widen32Uto64x2:
+      case Iop_Widen8Sto16x8:
+      case Iop_Widen16Sto32x4:
+      case Iop_Widen32Sto64x2:
       case Iop_F16toF32x4:
          UNARY(Ity_I64, Ity_V128);
 
@@ -2414,16 +2428,18 @@
       case Iop_CmpGT64Sx2:
       case Iop_CmpGT8Ux16: case Iop_CmpGT16Ux8: case Iop_CmpGT32Ux4:
       case Iop_Shl8x16: case Iop_Shl16x8: case Iop_Shl32x4: case Iop_Shl64x2:
-      case Iop_QShl8x16: case Iop_QShl16x8: case Iop_QShl32x4: case Iop_QShl64x2:
-      case Iop_QSal8x16: case Iop_QSal16x8: case Iop_QSal32x4: case Iop_QSal64x2:
+      case Iop_QShl8x16: case Iop_QShl16x8:
+      case Iop_QShl32x4: case Iop_QShl64x2:
+      case Iop_QSal8x16: case Iop_QSal16x8:
+      case Iop_QSal32x4: case Iop_QSal64x2:
       case Iop_Shr8x16: case Iop_Shr16x8: case Iop_Shr32x4: case Iop_Shr64x2:
       case Iop_Sar8x16: case Iop_Sar16x8: case Iop_Sar32x4: case Iop_Sar64x2:
       case Iop_Sal8x16: case Iop_Sal16x8: case Iop_Sal32x4: case Iop_Sal64x2:
       case Iop_Rol8x16: case Iop_Rol16x8: case Iop_Rol32x4:
-      case Iop_QNarrow16Sto8Ux16: case Iop_QNarrow32Sto16Ux8:
-      case Iop_QNarrow16Sto8Sx16: case Iop_QNarrow32Sto16Sx8:
-      case Iop_QNarrow16Uto8Ux16: case Iop_QNarrow32Uto16Ux8:
-      case Iop_Narrow16x8:   case Iop_Narrow32x4:
+      case Iop_QNarrowBin16Sto8Ux16: case Iop_QNarrowBin32Sto16Ux8:
+      case Iop_QNarrowBin16Sto8Sx16: case Iop_QNarrowBin32Sto16Sx8:
+      case Iop_QNarrowBin16Uto8Ux16: case Iop_QNarrowBin32Uto16Ux8:
+      case Iop_NarrowBin16to8x16:   case Iop_NarrowBin32to16x8:
       case Iop_InterleaveHI8x16: case Iop_InterleaveHI16x8:
       case Iop_InterleaveHI32x4: case Iop_InterleaveHI64x2:
       case Iop_InterleaveLO8x16: case Iop_InterleaveLO16x8:
diff --git a/pub/libvex_ir.h b/pub/libvex_ir.h
index f0c4f30..16a13ae 100644
--- a/pub/libvex_ir.h
+++ b/pub/libvex_ir.h
@@ -895,7 +895,8 @@
       Iop_QShlN8x8, Iop_QShlN16x4, Iop_QShlN32x2, Iop_QShlN64x1,
       Iop_QSalN8x8, Iop_QSalN16x4, Iop_QSalN32x2, Iop_QSalN64x1,
 
-      /* NARROWING -- narrow 2xI64 into 1xI64, hi half from left arg */
+      /* NARROWING (binary) 
+         -- narrow 2xI64 into 1xI64, hi half from left arg */
       /* For saturated narrowing, I believe there are 4 variants of
          the basic arithmetic operation, depending on the signedness
          of argument and result.  Here are examples that exemplify
@@ -915,8 +916,8 @@
                                       if (x >s 255) x = 255;
                                       return x[7:0];
       */
-      Iop_QNarrow16Sto8Ux8,
-      Iop_QNarrow16Sto8Sx8, Iop_QNarrow32Sto16Sx4,
+      Iop_QNarrowBin16Sto8Ux8,
+      Iop_QNarrowBin16Sto8Sx8, Iop_QNarrowBin32Sto16Sx4,
 
       /* INTERLEAVING */
       /* Interleave lanes from low or high halves of
@@ -1035,6 +1036,7 @@
       Iop_Fixed32UToF32x4_RN, Iop_Fixed32SToF32x4_RN, /* fixed-point -> fp */
 
       /* --- Single to/from half conversion --- */
+      /* FIXME: what kind of rounding in F32x4 -> F16x4 case? */
       Iop_F32toF16x4, Iop_F16toF32x4,         /* F32x4 <-> F16x4      */
 
       /* --- 32x4 lowest-lane-only scalar FP --- */
@@ -1193,31 +1195,32 @@
       Iop_QShlN8x16, Iop_QShlN16x8, Iop_QShlN32x4, Iop_QShlN64x2,
       Iop_QSalN8x16, Iop_QSalN16x8, Iop_QSalN32x4, Iop_QSalN64x2,
 
-      /* NARROWING -- narrow 2xV128 into 1xV128, hi half from left arg */
+      /* NARROWING (binary) 
+         -- narrow 2xV128 into 1xV128, hi half from left arg */
       /* See comments above w.r.t. U vs S issues in saturated narrowing. */
-      Iop_QNarrow16Sto8Ux16, Iop_QNarrow32Sto16Ux8,
-      Iop_QNarrow16Sto8Sx16, Iop_QNarrow32Sto16Sx8,
-      Iop_QNarrow16Uto8Ux16, Iop_QNarrow32Uto16Ux8,
-      Iop_Narrow16x8, Iop_Narrow32x4,
-      /* Shortening V128->I64, lo half from each element */
-      Iop_Shorten16x8, Iop_Shorten32x4, Iop_Shorten64x2,
-      /* Saturating shortening from signed source to signed/unsigned destination */
-      Iop_QShortenS16Sx8, Iop_QShortenS32Sx4, Iop_QShortenS64Sx2,
-      Iop_QShortenU16Sx8, Iop_QShortenU32Sx4, Iop_QShortenU64Sx2,
-      /* Saturating shortening from unsigned source to unsigned destination */
-      Iop_QShortenU16Ux8, Iop_QShortenU32Ux4, Iop_QShortenU64Ux2,
+      Iop_QNarrowBin16Sto8Ux16, Iop_QNarrowBin32Sto16Ux8,
+      Iop_QNarrowBin16Sto8Sx16, Iop_QNarrowBin32Sto16Sx8,
+      Iop_QNarrowBin16Uto8Ux16, Iop_QNarrowBin32Uto16Ux8,
+      Iop_NarrowBin16to8x16, Iop_NarrowBin32to16x8,
 
-      /* WIDENING */
-      /* Longening --- sign or zero extends each element of the argument
-         vector to the twice original size. The resulting vector consists of
+      /* NARROWING (unary) -- narrow V128 into I64 */
+      Iop_NarrowUn16to8x8, Iop_NarrowUn32to16x4, Iop_NarrowUn64to32x2,
+      /* Saturating narrowing from signed source to signed/unsigned destination */
+      Iop_QNarrowUn16Sto8Sx8, Iop_QNarrowUn32Sto16Sx4, Iop_QNarrowUn64Sto32Sx2,
+      Iop_QNarrowUn16Sto8Ux8, Iop_QNarrowUn32Sto16Ux4, Iop_QNarrowUn64Sto32Ux2,
+      /* Saturating narrowing from unsigned source to unsigned destination */
+      Iop_QNarrowUn16Uto8Ux8, Iop_QNarrowUn32Uto16Ux4, Iop_QNarrowUn64Uto32Ux2,
+
+      /* WIDENING -- sign or zero extend each element of the argument
+         vector to the twice original size.  The resulting vector consists of
          the same number of elements but each element and the vector itself
-         are two times wider.
+         are twice as wide.
          All operations are I64->V128.
          Example
-            Iop_Longen32Sx2( [a, b] ) = [c, d]
+            Iop_Widen32Sto64x2( [a, b] ) = [c, d]
                where c = Iop_32Sto64(a) and d = Iop_32Sto64(b) */
-      Iop_Longen8Ux8, Iop_Longen16Ux4, Iop_Longen32Ux2,
-      Iop_Longen8Sx8, Iop_Longen16Sx4, Iop_Longen32Sx2,
+      Iop_Widen8Uto16x8, Iop_Widen16Uto32x4, Iop_Widen32Uto64x2,
+      Iop_Widen8Sto16x8, Iop_Widen16Sto32x4, Iop_Widen32Sto64x2,
 
       /* INTERLEAVING */
       /* Interleave lanes from low or high halves of
diff --git a/test_main.c b/test_main.c
index 231c75f..9d16220 100644
--- a/test_main.c
+++ b/test_main.c
@@ -76,7 +76,7 @@
 
 /* Forwards */
 #if 1 /* UNUSED */
-static IRSB* ac_instrument ( IRSB*, VexGuestLayout*, IRType );
+//static IRSB* ac_instrument ( IRSB*, VexGuestLayout*, IRType );
 static
 IRSB* mc_instrument ( void* closureV,
                       IRSB* bb_in, VexGuestLayout* layout, 
@@ -133,7 +133,8 @@
 
    while (!feof(f)) {
 
-      fgets(linebuf, N_LINEBUF,f);
+      __attribute__((unused))
+      char* unused1 = fgets(linebuf, N_LINEBUF,f);
       if (linebuf[0] == 0) continue;
       if (linebuf[0] != '.') continue;
 
@@ -146,7 +147,8 @@
                                  & orig_addr, & orig_nbytes ));
       assert(orig_nbytes >= 1);
       assert(!feof(f));
-      fgets(linebuf, N_LINEBUF,f);
+      __attribute__((unused))
+      char* unused2 = fgets(linebuf, N_LINEBUF,f);
       assert(linebuf[0] == '.');
 
       /* second line is:   . byte byte byte etc */
@@ -1291,6 +1293,7 @@
 /*------------------------------------------------------------*/
 
 static
+__attribute__((unused))
 IRAtom* expensiveAdd32 ( MCEnv* mce, IRAtom* qaa, IRAtom* qbb, 
                                      IRAtom* aa,  IRAtom* bb )
 {
@@ -1531,9 +1534,9 @@
    IRAtom *at1, *at2, *at3;
    IRAtom* (*pcast)( MCEnv*, IRAtom* );
    switch (narrow_op) {
-      case Iop_QNarrow32Sto16Sx8: pcast = mkPCast32x4; break;
-      case Iop_QNarrow16Sto8Sx16: pcast = mkPCast16x8; break;
-      case Iop_QNarrow16Sto8Ux16: pcast = mkPCast16x8; break;
+      case Iop_QNarrowBin32Sto16Sx8: pcast = mkPCast32x4; break;
+      case Iop_QNarrowBin16Sto8Sx16: pcast = mkPCast16x8; break;
+      case Iop_QNarrowBin16Sto8Ux16: pcast = mkPCast16x8; break;
       default: VG_(tool_panic)("vectorNarrowV128");
    }
    tl_assert(isShadowAtom(mce,vatom1));
@@ -1671,9 +1674,9 @@
       case Iop_QAdd64Sx2:
          return binary64Ix2(mce, vatom1, vatom2);
 
-      case Iop_QNarrow32Sto16Sx8:
-      case Iop_QNarrow16Sto8Sx16:
-      case Iop_QNarrow16Sto8Ux16:
+      case Iop_QNarrowBin32Sto16Sx8:
+      case Iop_QNarrowBin16Sto8Sx16:
+      case Iop_QNarrowBin16Sto8Ux16:
          return vectorNarrowV128(mce, op, vatom1, vatom2);
 
       case Iop_Sub64Fx2:
@@ -2519,6 +2522,7 @@
            || n == 1010100);
 }
 
+__attribute__((unused))
 static Bool checkForBogusLiterals ( /*FLAT*/ IRStmt* st )
 {
    Int     i;