diff --git a/priv/guest_arm64_toIR.c b/priv/guest_arm64_toIR.c
index 997565c..9e27d90 100644
--- a/priv/guest_arm64_toIR.c
+++ b/priv/guest_arm64_toIR.c
@@ -921,23 +921,26 @@
    return ops[sizeNarrow];
 }
 
-static IROp mkVecQSHLNSATU2U ( UInt size ) {
+static IROp mkVecQSHLNSATUU ( UInt size ) {
    const IROp ops[4]
-      = { Iop_QShlN8x16, Iop_QShlN16x8, Iop_QShlN32x4, Iop_QShlN64x2 };
+      = { Iop_QShlNsatUU8x16, Iop_QShlNsatUU16x8,
+          Iop_QShlNsatUU32x4, Iop_QShlNsatUU64x2 };
    vassert(size < 4);
    return ops[size];
 }
 
-static IROp mkVecQSHLNSATS2S ( UInt size ) {
+static IROp mkVecQSHLNSATSS ( UInt size ) {
    const IROp ops[4]
-      = { Iop_QSalN8x16, Iop_QSalN16x8, Iop_QSalN32x4, Iop_QSalN64x2 };
+      = { Iop_QShlNsatSS8x16, Iop_QShlNsatSS16x8,
+          Iop_QShlNsatSS32x4, Iop_QShlNsatSS64x2 };
    vassert(size < 4);
    return ops[size];
 }
 
-static IROp mkVecQSHLNSATS2U ( UInt size ) {
+static IROp mkVecQSHLNSATSU ( UInt size ) {
    const IROp ops[4]
-      = { Iop_QShlN8Sx16, Iop_QShlN16Sx8, Iop_QShlN32Sx4, Iop_QShlN64Sx2 };
+      = { Iop_QShlNsatSU8x16, Iop_QShlNsatSU16x8,
+          Iop_QShlNsatSU32x4, Iop_QShlNsatSU64x2 };
    vassert(size < 4);
    return ops[size];
 }
@@ -6609,7 +6612,7 @@
 
    /* UQSHL */
    if (vex_streq(nm, "uqshl")) {
-      IROp qop = mkVecQSHLNSATU2U(size);
+      IROp qop = mkVecQSHLNSATUU(size);
       assign(*res, binop(qop, mkexpr(src), mkU8(shift)));
       if (shift == 0) {
          /* No shift means no saturation. */
@@ -6629,7 +6632,7 @@
 
    /* SQSHL */
    if (vex_streq(nm, "sqshl")) {
-      IROp qop = mkVecQSHLNSATS2S(size);
+      IROp qop = mkVecQSHLNSATSS(size);
       assign(*res, binop(qop, mkexpr(src), mkU8(shift)));
       if (shift == 0) {
          /* No shift means no saturation. */
@@ -6657,7 +6660,7 @@
 
    /* SQSHLU */
    if (vex_streq(nm, "sqshlu")) {
-      IROp qop = mkVecQSHLNSATS2U(size);
+      IROp qop = mkVecQSHLNSATSU(size);
       assign(*res, binop(qop, mkexpr(src), mkU8(shift)));
       if (shift == 0) {
          /* If there's no shift, saturation depends on the top bit
diff --git a/priv/guest_arm_toIR.c b/priv/guest_arm_toIR.c
index 64e5d6e..2070254 100644
--- a/priv/guest_arm_toIR.c
+++ b/priv/guest_arm_toIR.c
@@ -6257,19 +6257,19 @@
             if (A & 1) {
                switch (size) {
                   case 0:
-                     op = Q ? Iop_QShlN8x16 : Iop_QShlN8x8;
+                     op = Q ? Iop_QShlNsatUU8x16 : Iop_QShlNsatUU8x8;
                      op_rev = Q ? Iop_ShrN8x16 : Iop_ShrN8x8;
                      break;
                   case 1:
-                     op = Q ? Iop_QShlN16x8 : Iop_QShlN16x4;
+                     op = Q ? Iop_QShlNsatUU16x8 : Iop_QShlNsatUU16x4;
                      op_rev = Q ? Iop_ShrN16x8 : Iop_ShrN16x4;
                      break;
                   case 2:
-                     op = Q ? Iop_QShlN32x4 : Iop_QShlN32x2;
+                     op = Q ? Iop_QShlNsatUU32x4 : Iop_QShlNsatUU32x2;
                      op_rev = Q ? Iop_ShrN32x4 : Iop_ShrN32x2;
                      break;
                   case 3:
-                     op = Q ? Iop_QShlN64x2 : Iop_QShlN64x1;
+                     op = Q ? Iop_QShlNsatUU64x2 : Iop_QShlNsatUU64x1;
                      op_rev = Q ? Iop_ShrN64x2 : Iop_Shr64;
                      break;
                   default:
@@ -6281,19 +6281,19 @@
             } else {
                switch (size) {
                   case 0:
-                     op = Q ? Iop_QShlN8Sx16 : Iop_QShlN8Sx8;
+                     op = Q ? Iop_QShlNsatSU8x16 : Iop_QShlNsatSU8x8;
                      op_rev = Q ? Iop_ShrN8x16 : Iop_ShrN8x8;
                      break;
                   case 1:
-                     op = Q ? Iop_QShlN16Sx8 : Iop_QShlN16Sx4;
+                     op = Q ? Iop_QShlNsatSU16x8 : Iop_QShlNsatSU16x4;
                      op_rev = Q ? Iop_ShrN16x8 : Iop_ShrN16x4;
                      break;
                   case 2:
-                     op = Q ? Iop_QShlN32Sx4 : Iop_QShlN32Sx2;
+                     op = Q ? Iop_QShlNsatSU32x4 : Iop_QShlNsatSU32x2;
                      op_rev = Q ? Iop_ShrN32x4 : Iop_ShrN32x2;
                      break;
                   case 3:
-                     op = Q ? Iop_QShlN64Sx2 : Iop_QShlN64Sx1;
+                     op = Q ? Iop_QShlNsatSU64x2 : Iop_QShlNsatSU64x1;
                      op_rev = Q ? Iop_ShrN64x2 : Iop_Shr64;
                      break;
                   default:
@@ -6308,19 +6308,19 @@
                return False;
             switch (size) {
                case 0:
-                  op = Q ? Iop_QSalN8x16 : Iop_QSalN8x8;
+                  op = Q ? Iop_QShlNsatSS8x16 : Iop_QShlNsatSS8x8;
                   op_rev = Q ? Iop_SarN8x16 : Iop_SarN8x8;
                   break;
                case 1:
-                  op = Q ? Iop_QSalN16x8 : Iop_QSalN16x4;
+                  op = Q ? Iop_QShlNsatSS16x8 : Iop_QShlNsatSS16x4;
                   op_rev = Q ? Iop_SarN16x8 : Iop_SarN16x4;
                   break;
                case 2:
-                  op = Q ? Iop_QSalN32x4 : Iop_QSalN32x2;
+                  op = Q ? Iop_QShlNsatSS32x4 : Iop_QShlNsatSS32x2;
                   op_rev = Q ? Iop_SarN32x4 : Iop_SarN32x2;
                   break;
                case 3:
-                  op = Q ? Iop_QSalN64x2 : Iop_QSalN64x1;
+                  op = Q ? Iop_QShlNsatSS64x2 : Iop_QShlNsatSS64x1;
                   op_rev = Q ? Iop_SarN64x2 : Iop_Sar64;
                   break;
                default:
diff --git a/priv/host_arm64_isel.c b/priv/host_arm64_isel.c
index 71ee7a6..3915ae1 100644
--- a/priv/host_arm64_isel.c
+++ b/priv/host_arm64_isel.c
@@ -3316,10 +3316,10 @@
 //ZZ                                           res, argL, size, False));
 //ZZ             return res;
 //ZZ          }
-//ZZ          case Iop_QSalN8x8:
-//ZZ          case Iop_QSalN16x4:
-//ZZ          case Iop_QSalN32x2:
-//ZZ          case Iop_QSalN64x1: {
+//ZZ          case Iop_QShlNsatSS8x8:
+//ZZ          case Iop_QShlNsatSS16x4:
+//ZZ          case Iop_QShlNsatSS32x2:
+//ZZ          case Iop_QShlNsatSS64x1: {
 //ZZ             HReg res = newVRegD(env);
 //ZZ             HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
 //ZZ             UInt size, imm;
@@ -3330,10 +3330,10 @@
 //ZZ             }
 //ZZ             imm = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
 //ZZ             switch (e->Iex.Binop.op) {
-//ZZ                case Iop_QSalN8x8: size = 8 | imm; break;
-//ZZ                case Iop_QSalN16x4: size = 16 | imm; break;
-//ZZ                case Iop_QSalN32x2: size = 32 | imm; break;
-//ZZ                case Iop_QSalN64x1: size = 64 | imm; break;
+//ZZ                case Iop_QShlNsatSS8x8: size = 8 | imm; break;
+//ZZ                case Iop_QShlNsatSS16x4: size = 16 | imm; break;
+//ZZ                case Iop_QShlNsatSS32x2: size = 32 | imm; break;
+//ZZ                case Iop_QShlNsatSS64x1: size = 64 | imm; break;
 //ZZ                default: vassert(0);
 //ZZ             }
 //ZZ             addInstr(env, ARMInstr_NUnary(ARMneon_VQSHLNSS,
@@ -5580,10 +5580,10 @@
 //ZZ                                           res, argL, size, True));
 //ZZ             return res;
 //ZZ          }
-//ZZ          case Iop_QSalN8x16:
-//ZZ          case Iop_QSalN16x8:
-//ZZ          case Iop_QSalN32x4:
-//ZZ          case Iop_QSalN64x2: {
+//ZZ          case Iop_QShlNsatSS8x16:
+//ZZ          case Iop_QShlNsatSS16x8:
+//ZZ          case Iop_QShlNsatSS32x4:
+//ZZ          case Iop_QShlNsatSS64x2: {
 //ZZ             HReg res = newVRegV(env);
 //ZZ             HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
 //ZZ             UInt size, imm;
@@ -5594,10 +5594,10 @@
 //ZZ             }
 //ZZ             imm = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
 //ZZ             switch (e->Iex.Binop.op) {
-//ZZ                case Iop_QSalN8x16: size = 8 | imm; break;
-//ZZ                case Iop_QSalN16x8: size = 16 | imm; break;
-//ZZ                case Iop_QSalN32x4: size = 32 | imm; break;
-//ZZ                case Iop_QSalN64x2: size = 64 | imm; break;
+//ZZ                case Iop_QShlNsatSS8x16: size = 8 | imm; break;
+//ZZ                case Iop_QShlNsatSS16x8: size = 16 | imm; break;
+//ZZ                case Iop_QShlNsatSS32x4: size = 32 | imm; break;
+//ZZ                case Iop_QShlNsatSS64x2: size = 64 | imm; break;
 //ZZ                default: vassert(0);
 //ZZ             }
 //ZZ             addInstr(env, ARMInstr_NUnary(ARMneon_VQSHLNSS,
@@ -5610,12 +5610,12 @@
          case Iop_SarN16x8: case Iop_SarN8x16:
          case Iop_ShlN64x2: case Iop_ShlN32x4:
          case Iop_ShlN16x8: case Iop_ShlN8x16:
-         case Iop_QShlN64x2: case Iop_QShlN32x4:
-         case Iop_QShlN16x8: case Iop_QShlN8x16:
-         case Iop_QSalN64x2: case Iop_QSalN32x4:
-         case Iop_QSalN16x8: case Iop_QSalN8x16:
-         case Iop_QShlN64Sx2: case Iop_QShlN32Sx4:
-         case Iop_QShlN16Sx8: case Iop_QShlN8Sx16:
+         case Iop_QShlNsatUU64x2: case Iop_QShlNsatUU32x4:
+         case Iop_QShlNsatUU16x8: case Iop_QShlNsatUU8x16:
+         case Iop_QShlNsatSS64x2: case Iop_QShlNsatSS32x4:
+         case Iop_QShlNsatSS16x8: case Iop_QShlNsatSS8x16:
+         case Iop_QShlNsatSU64x2: case Iop_QShlNsatSU32x4:
+         case Iop_QShlNsatSU16x8: case Iop_QShlNsatSU8x16:
          {
             IRExpr* argL = e->Iex.Binop.arg1;
             IRExpr* argR = e->Iex.Binop.arg2;
@@ -5626,58 +5626,58 @@
                ARM64VecShiftOp op = ARM64vecsh_INVALID;
                /* Establish the instruction to use. */
                switch (e->Iex.Binop.op) {
-                  case Iop_ShrN64x2:   op = ARM64vecsh_USHR64x2;   break;
-                  case Iop_ShrN32x4:   op = ARM64vecsh_USHR32x4;   break;
-                  case Iop_ShrN16x8:   op = ARM64vecsh_USHR16x8;   break;
-                  case Iop_ShrN8x16:   op = ARM64vecsh_USHR8x16;   break;
-                  case Iop_SarN64x2:   op = ARM64vecsh_SSHR64x2;   break;
-                  case Iop_SarN32x4:   op = ARM64vecsh_SSHR32x4;   break;
-                  case Iop_SarN16x8:   op = ARM64vecsh_SSHR16x8;   break;
-                  case Iop_SarN8x16:   op = ARM64vecsh_SSHR8x16;   break;
-                  case Iop_ShlN64x2:   op = ARM64vecsh_SHL64x2;    break;
-                  case Iop_ShlN32x4:   op = ARM64vecsh_SHL32x4;    break;
-                  case Iop_ShlN16x8:   op = ARM64vecsh_SHL16x8;    break;
-                  case Iop_ShlN8x16:   op = ARM64vecsh_SHL8x16;    break;
-                  case Iop_QShlN64x2:  op = ARM64vecsh_UQSHL64x2;  break;
-                  case Iop_QShlN32x4:  op = ARM64vecsh_UQSHL32x4;  break;
-                  case Iop_QShlN16x8:  op = ARM64vecsh_UQSHL16x8;  break;
-                  case Iop_QShlN8x16:  op = ARM64vecsh_UQSHL8x16;  break;
-                  case Iop_QSalN64x2:  op = ARM64vecsh_SQSHL64x2;  break;
-                  case Iop_QSalN32x4:  op = ARM64vecsh_SQSHL32x4;  break;
-                  case Iop_QSalN16x8:  op = ARM64vecsh_SQSHL16x8;  break;
-                  case Iop_QSalN8x16:  op = ARM64vecsh_SQSHL8x16;  break;
-                  case Iop_QShlN64Sx2: op = ARM64vecsh_SQSHLU64x2; break;
-                  case Iop_QShlN32Sx4: op = ARM64vecsh_SQSHLU32x4; break;
-                  case Iop_QShlN16Sx8: op = ARM64vecsh_SQSHLU16x8; break;
-                  case Iop_QShlN8Sx16: op = ARM64vecsh_SQSHLU8x16; break;
+                  case Iop_ShrN64x2:       op = ARM64vecsh_USHR64x2;   break;
+                  case Iop_ShrN32x4:       op = ARM64vecsh_USHR32x4;   break;
+                  case Iop_ShrN16x8:       op = ARM64vecsh_USHR16x8;   break;
+                  case Iop_ShrN8x16:       op = ARM64vecsh_USHR8x16;   break;
+                  case Iop_SarN64x2:       op = ARM64vecsh_SSHR64x2;   break;
+                  case Iop_SarN32x4:       op = ARM64vecsh_SSHR32x4;   break;
+                  case Iop_SarN16x8:       op = ARM64vecsh_SSHR16x8;   break;
+                  case Iop_SarN8x16:       op = ARM64vecsh_SSHR8x16;   break;
+                  case Iop_ShlN64x2:       op = ARM64vecsh_SHL64x2;    break;
+                  case Iop_ShlN32x4:       op = ARM64vecsh_SHL32x4;    break;
+                  case Iop_ShlN16x8:       op = ARM64vecsh_SHL16x8;    break;
+                  case Iop_ShlN8x16:       op = ARM64vecsh_SHL8x16;    break;
+                  case Iop_QShlNsatUU64x2: op = ARM64vecsh_UQSHL64x2;  break;
+                  case Iop_QShlNsatUU32x4: op = ARM64vecsh_UQSHL32x4;  break;
+                  case Iop_QShlNsatUU16x8: op = ARM64vecsh_UQSHL16x8;  break;
+                  case Iop_QShlNsatUU8x16: op = ARM64vecsh_UQSHL8x16;  break;
+                  case Iop_QShlNsatSS64x2: op = ARM64vecsh_SQSHL64x2;  break;
+                  case Iop_QShlNsatSS32x4: op = ARM64vecsh_SQSHL32x4;  break;
+                  case Iop_QShlNsatSS16x8: op = ARM64vecsh_SQSHL16x8;  break;
+                  case Iop_QShlNsatSS8x16: op = ARM64vecsh_SQSHL8x16;  break;
+                  case Iop_QShlNsatSU64x2: op = ARM64vecsh_SQSHLU64x2; break;
+                  case Iop_QShlNsatSU32x4: op = ARM64vecsh_SQSHLU32x4; break;
+                  case Iop_QShlNsatSU16x8: op = ARM64vecsh_SQSHLU16x8; break;
+                  case Iop_QShlNsatSU8x16: op = ARM64vecsh_SQSHLU8x16; break;
                   default: vassert(0);
                }
                /* Establish the shift limits, for sanity check purposes only. */
                switch (e->Iex.Binop.op) {
-                  case Iop_ShrN64x2:   limLo = 1; limHi = 64; break;
-                  case Iop_ShrN32x4:   limLo = 1; limHi = 32; break;
-                  case Iop_ShrN16x8:   limLo = 1; limHi = 16; break;
-                  case Iop_ShrN8x16:   limLo = 1; limHi = 8;  break;
-                  case Iop_SarN64x2:   limLo = 1; limHi = 64; break;
-                  case Iop_SarN32x4:   limLo = 1; limHi = 32; break;
-                  case Iop_SarN16x8:   limLo = 1; limHi = 16; break;
-                  case Iop_SarN8x16:   limLo = 1; limHi = 8;  break;
-                  case Iop_ShlN64x2:   limLo = 0; limHi = 63; break;
-                  case Iop_ShlN32x4:   limLo = 0; limHi = 31; break;
-                  case Iop_ShlN16x8:   limLo = 0; limHi = 15; break;
-                  case Iop_ShlN8x16:   limLo = 0; limHi = 7;  break;
-                  case Iop_QShlN64x2:  limLo = 0; limHi = 63; break;
-                  case Iop_QShlN32x4:  limLo = 0; limHi = 31; break;
-                  case Iop_QShlN16x8:  limLo = 0; limHi = 15; break;
-                  case Iop_QShlN8x16:  limLo = 0; limHi = 7;  break;
-                  case Iop_QSalN64x2:  limLo = 0; limHi = 63; break;
-                  case Iop_QSalN32x4:  limLo = 0; limHi = 31; break;
-                  case Iop_QSalN16x8:  limLo = 0; limHi = 15; break;
-                  case Iop_QSalN8x16:  limLo = 0; limHi = 7;  break;
-                  case Iop_QShlN64Sx2: limLo = 0; limHi = 63; break;
-                  case Iop_QShlN32Sx4: limLo = 0; limHi = 31; break;
-                  case Iop_QShlN16Sx8: limLo = 0; limHi = 15; break;
-                  case Iop_QShlN8Sx16: limLo = 0; limHi = 7;  break;
+                  case Iop_ShrN64x2:       limLo = 1; limHi = 64; break;
+                  case Iop_ShrN32x4:       limLo = 1; limHi = 32; break;
+                  case Iop_ShrN16x8:       limLo = 1; limHi = 16; break;
+                  case Iop_ShrN8x16:       limLo = 1; limHi = 8;  break;
+                  case Iop_SarN64x2:       limLo = 1; limHi = 64; break;
+                  case Iop_SarN32x4:       limLo = 1; limHi = 32; break;
+                  case Iop_SarN16x8:       limLo = 1; limHi = 16; break;
+                  case Iop_SarN8x16:       limLo = 1; limHi = 8;  break;
+                  case Iop_ShlN64x2:       limLo = 0; limHi = 63; break;
+                  case Iop_ShlN32x4:       limLo = 0; limHi = 31; break;
+                  case Iop_ShlN16x8:       limLo = 0; limHi = 15; break;
+                  case Iop_ShlN8x16:       limLo = 0; limHi = 7;  break;
+                  case Iop_QShlNsatUU64x2: limLo = 0; limHi = 63; break;
+                  case Iop_QShlNsatUU32x4: limLo = 0; limHi = 31; break;
+                  case Iop_QShlNsatUU16x8: limLo = 0; limHi = 15; break;
+                  case Iop_QShlNsatUU8x16: limLo = 0; limHi = 7;  break;
+                  case Iop_QShlNsatSS64x2: limLo = 0; limHi = 63; break;
+                  case Iop_QShlNsatSS32x4: limLo = 0; limHi = 31; break;
+                  case Iop_QShlNsatSS16x8: limLo = 0; limHi = 15; break;
+                  case Iop_QShlNsatSS8x16: limLo = 0; limHi = 7;  break;
+                  case Iop_QShlNsatSU64x2: limLo = 0; limHi = 63; break;
+                  case Iop_QShlNsatSU32x4: limLo = 0; limHi = 31; break;
+                  case Iop_QShlNsatSU16x8: limLo = 0; limHi = 15; break;
+                  case Iop_QShlNsatSU8x16: limLo = 0; limHi = 7;  break;
                   default: vassert(0);
                }
                /* For left shifts, the allowable amt values are
diff --git a/priv/host_arm_isel.c b/priv/host_arm_isel.c
index 8235282..6b18689 100644
--- a/priv/host_arm_isel.c
+++ b/priv/host_arm_isel.c
@@ -2672,72 +2672,72 @@
                                           res, argL, argR, size, False));
             return res;
          }
-         case Iop_QShlN8x8:
-         case Iop_QShlN16x4:
-         case Iop_QShlN32x2:
-         case Iop_QShlN64x1: {
+         case Iop_QShlNsatUU8x8:
+         case Iop_QShlNsatUU16x4:
+         case Iop_QShlNsatUU32x2:
+         case Iop_QShlNsatUU64x1: {
             HReg res = newVRegD(env);
             HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
             UInt size, imm;
             if (e->Iex.Binop.arg2->tag != Iex_Const ||
                 typeOfIRExpr(env->type_env, e->Iex.Binop.arg2) != Ity_I8) {
-               vpanic("ARM taget supports Iop_QShlNAxB with constant "
+               vpanic("ARM target supports Iop_QShlNsatUUAxB with constant "
                       "second argument only\n");
             }
             imm = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
             switch (e->Iex.Binop.op) {
-               case Iop_QShlN8x8: size = 8 | imm; break;
-               case Iop_QShlN16x4: size = 16 | imm; break;
-               case Iop_QShlN32x2: size = 32 | imm; break;
-               case Iop_QShlN64x1: size = 64 | imm; break;
+               case Iop_QShlNsatUU8x8: size = 8 | imm; break;
+               case Iop_QShlNsatUU16x4: size = 16 | imm; break;
+               case Iop_QShlNsatUU32x2: size = 32 | imm; break;
+               case Iop_QShlNsatUU64x1: size = 64 | imm; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_VQSHLNUU,
                                           res, argL, size, False));
             return res;
          }
-         case Iop_QShlN8Sx8:
-         case Iop_QShlN16Sx4:
-         case Iop_QShlN32Sx2:
-         case Iop_QShlN64Sx1: {
+         case Iop_QShlNsatSU8x8:
+         case Iop_QShlNsatSU16x4:
+         case Iop_QShlNsatSU32x2:
+         case Iop_QShlNsatSU64x1: {
             HReg res = newVRegD(env);
             HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
             UInt size, imm;
             if (e->Iex.Binop.arg2->tag != Iex_Const ||
                 typeOfIRExpr(env->type_env, e->Iex.Binop.arg2) != Ity_I8) {
-               vpanic("ARM taget supports Iop_QShlNAxB with constant "
+               vpanic("ARM target supports Iop_QShlNsatSUAxB with constant "
                       "second argument only\n");
             }
             imm = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
             switch (e->Iex.Binop.op) {
-               case Iop_QShlN8Sx8: size = 8 | imm; break;
-               case Iop_QShlN16Sx4: size = 16 | imm; break;
-               case Iop_QShlN32Sx2: size = 32 | imm; break;
-               case Iop_QShlN64Sx1: size = 64 | imm; break;
+               case Iop_QShlNsatSU8x8: size = 8 | imm; break;
+               case Iop_QShlNsatSU16x4: size = 16 | imm; break;
+               case Iop_QShlNsatSU32x2: size = 32 | imm; break;
+               case Iop_QShlNsatSU64x1: size = 64 | imm; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_VQSHLNUS,
                                           res, argL, size, False));
             return res;
          }
-         case Iop_QSalN8x8:
-         case Iop_QSalN16x4:
-         case Iop_QSalN32x2:
-         case Iop_QSalN64x1: {
+         case Iop_QShlNsatSS8x8:
+         case Iop_QShlNsatSS16x4:
+         case Iop_QShlNsatSS32x2:
+         case Iop_QShlNsatSS64x1: {
             HReg res = newVRegD(env);
             HReg argL = iselNeon64Expr(env, e->Iex.Binop.arg1);
             UInt size, imm;
             if (e->Iex.Binop.arg2->tag != Iex_Const ||
                 typeOfIRExpr(env->type_env, e->Iex.Binop.arg2) != Ity_I8) {
-               vpanic("ARM taget supports Iop_QShlNAxB with constant "
+               vpanic("ARM target supports Iop_QShlNsatSSAxB with constant "
                       "second argument only\n");
             }
             imm = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
             switch (e->Iex.Binop.op) {
-               case Iop_QSalN8x8: size = 8 | imm; break;
-               case Iop_QSalN16x4: size = 16 | imm; break;
-               case Iop_QSalN32x2: size = 32 | imm; break;
-               case Iop_QSalN64x1: size = 64 | imm; break;
+               case Iop_QShlNsatSS8x8: size = 8 | imm; break;
+               case Iop_QShlNsatSS16x4: size = 16 | imm; break;
+               case Iop_QShlNsatSS32x2: size = 32 | imm; break;
+               case Iop_QShlNsatSS64x1: size = 64 | imm; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_VQSHLNSS,
@@ -4842,72 +4842,72 @@
                                           res, argL, argR, size, True));
             return res;
          }
-         case Iop_QShlN8x16:
-         case Iop_QShlN16x8:
-         case Iop_QShlN32x4:
-         case Iop_QShlN64x2: {
+         case Iop_QShlNsatUU8x16:
+         case Iop_QShlNsatUU16x8:
+         case Iop_QShlNsatUU32x4:
+         case Iop_QShlNsatUU64x2: {
             HReg res = newVRegV(env);
             HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
             UInt size, imm;
             if (e->Iex.Binop.arg2->tag != Iex_Const ||
                 typeOfIRExpr(env->type_env, e->Iex.Binop.arg2) != Ity_I8) {
-               vpanic("ARM taget supports Iop_QShlNAxB with constant "
+               vpanic("ARM target supports Iop_QShlNsatUUAxB with constant "
                       "second argument only\n");
             }
             imm = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
             switch (e->Iex.Binop.op) {
-               case Iop_QShlN8x16: size = 8 | imm; break;
-               case Iop_QShlN16x8: size = 16 | imm; break;
-               case Iop_QShlN32x4: size = 32 | imm; break;
-               case Iop_QShlN64x2: size = 64 | imm; break;
+               case Iop_QShlNsatUU8x16: size = 8 | imm; break;
+               case Iop_QShlNsatUU16x8: size = 16 | imm; break;
+               case Iop_QShlNsatUU32x4: size = 32 | imm; break;
+               case Iop_QShlNsatUU64x2: size = 64 | imm; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_VQSHLNUU,
                                           res, argL, size, True));
             return res;
          }
-         case Iop_QShlN8Sx16:
-         case Iop_QShlN16Sx8:
-         case Iop_QShlN32Sx4:
-         case Iop_QShlN64Sx2: {
+         case Iop_QShlNsatSU8x16:
+         case Iop_QShlNsatSU16x8:
+         case Iop_QShlNsatSU32x4:
+         case Iop_QShlNsatSU64x2: {
             HReg res = newVRegV(env);
             HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
             UInt size, imm;
             if (e->Iex.Binop.arg2->tag != Iex_Const ||
                 typeOfIRExpr(env->type_env, e->Iex.Binop.arg2) != Ity_I8) {
-               vpanic("ARM taget supports Iop_QShlNASxB with constant "
+               vpanic("ARM target supports Iop_QShlNsatSUAxB with constant "
                       "second argument only\n");
             }
             imm = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
             switch (e->Iex.Binop.op) {
-               case Iop_QShlN8Sx16: size = 8 | imm; break;
-               case Iop_QShlN16Sx8: size = 16 | imm; break;
-               case Iop_QShlN32Sx4: size = 32 | imm; break;
-               case Iop_QShlN64Sx2: size = 64 | imm; break;
+               case Iop_QShlNsatSU8x16: size = 8 | imm; break;
+               case Iop_QShlNsatSU16x8: size = 16 | imm; break;
+               case Iop_QShlNsatSU32x4: size = 32 | imm; break;
+               case Iop_QShlNsatSU64x2: size = 64 | imm; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_VQSHLNUS,
                                           res, argL, size, True));
             return res;
          }
-         case Iop_QSalN8x16:
-         case Iop_QSalN16x8:
-         case Iop_QSalN32x4:
-         case Iop_QSalN64x2: {
+         case Iop_QShlNsatSS8x16:
+         case Iop_QShlNsatSS16x8:
+         case Iop_QShlNsatSS32x4:
+         case Iop_QShlNsatSS64x2: {
             HReg res = newVRegV(env);
             HReg argL = iselNeonExpr(env, e->Iex.Binop.arg1);
             UInt size, imm;
             if (e->Iex.Binop.arg2->tag != Iex_Const ||
                 typeOfIRExpr(env->type_env, e->Iex.Binop.arg2) != Ity_I8) {
-               vpanic("ARM taget supports Iop_QShlNAxB with constant "
+               vpanic("ARM target supports Iop_QShlNsatSSAxB with constant "
                       "second argument only\n");
             }
             imm = e->Iex.Binop.arg2->Iex.Const.con->Ico.U8;
             switch (e->Iex.Binop.op) {
-               case Iop_QSalN8x16: size = 8 | imm; break;
-               case Iop_QSalN16x8: size = 16 | imm; break;
-               case Iop_QSalN32x4: size = 32 | imm; break;
-               case Iop_QSalN64x2: size = 64 | imm; break;
+               case Iop_QShlNsatSS8x16: size = 8 | imm; break;
+               case Iop_QShlNsatSS16x8: size = 16 | imm; break;
+               case Iop_QShlNsatSS32x4: size = 32 | imm; break;
+               case Iop_QShlNsatSS64x2: size = 64 | imm; break;
                default: vassert(0);
             }
             addInstr(env, ARMInstr_NUnary(ARMneon_VQSHLNSS,
diff --git a/priv/ir_defs.c b/priv/ir_defs.c
index ed23fd9..50f161d 100644
--- a/priv/ir_defs.c
+++ b/priv/ir_defs.c
@@ -559,18 +559,18 @@
       case Iop_QSal16x4: vex_printf("QSal16x4"); return;
       case Iop_QSal32x2: vex_printf("QSal32x2"); return;
       case Iop_QSal64x1: vex_printf("QSal64x1"); return;
-      case Iop_QShlN8x8: vex_printf("QShlN8x8"); return;
-      case Iop_QShlN16x4: vex_printf("QShlN16x4"); return;
-      case Iop_QShlN32x2: vex_printf("QShlN32x2"); return;
-      case Iop_QShlN64x1: vex_printf("QShlN64x1"); return;
-      case Iop_QShlN8Sx8: vex_printf("QShlN8Sx8"); return;
-      case Iop_QShlN16Sx4: vex_printf("QShlN16Sx4"); return;
-      case Iop_QShlN32Sx2: vex_printf("QShlN32Sx2"); return;
-      case Iop_QShlN64Sx1: vex_printf("QShlN64Sx1"); return;
-      case Iop_QSalN8x8: vex_printf("QSalN8x8"); return;
-      case Iop_QSalN16x4: vex_printf("QSalN16x4"); return;
-      case Iop_QSalN32x2: vex_printf("QSalN32x2"); return;
-      case Iop_QSalN64x1: vex_printf("QSalN64x1"); return;
+      case Iop_QShlNsatUU8x8: vex_printf("QShlNsatUU8x8"); return;
+      case Iop_QShlNsatUU16x4: vex_printf("QShlNsatUU16x4"); return;
+      case Iop_QShlNsatUU32x2: vex_printf("QShlNsatUU32x2"); return;
+      case Iop_QShlNsatUU64x1: vex_printf("QShlNsatUU64x1"); return;
+      case Iop_QShlNsatSU8x8: vex_printf("QShlNsatSU8x8"); return;
+      case Iop_QShlNsatSU16x4: vex_printf("QShlNsatSU16x4"); return;
+      case Iop_QShlNsatSU32x2: vex_printf("QShlNsatSU32x2"); return;
+      case Iop_QShlNsatSU64x1: vex_printf("QShlNsatSU64x1"); return;
+      case Iop_QShlNsatSS8x8: vex_printf("QShlNsatSS8x8"); return;
+      case Iop_QShlNsatSS16x4: vex_printf("QShlNsatSS16x4"); return;
+      case Iop_QShlNsatSS32x2: vex_printf("QShlNsatSS32x2"); return;
+      case Iop_QShlNsatSS64x1: vex_printf("QShlNsatSS64x1"); return;
       case Iop_Sar8x8: vex_printf("Sar8x8"); return;
       case Iop_Sar16x4: vex_printf("Sar16x4"); return;
       case Iop_Sar32x2: vex_printf("Sar32x2"); return;
@@ -874,18 +874,18 @@
       case Iop_QShl16x8: vex_printf("QShl16x8"); return;
       case Iop_QShl32x4: vex_printf("QShl32x4"); return;
       case Iop_QShl64x2: vex_printf("QShl64x2"); return;
-      case Iop_QSalN8x16: vex_printf("QSalN8x16"); return;
-      case Iop_QSalN16x8: vex_printf("QSalN16x8"); return;
-      case Iop_QSalN32x4: vex_printf("QSalN32x4"); return;
-      case Iop_QSalN64x2: vex_printf("QSalN64x2"); return;
-      case Iop_QShlN8x16: vex_printf("QShlN8x16"); return;
-      case Iop_QShlN16x8: vex_printf("QShlN16x8"); return;
-      case Iop_QShlN32x4: vex_printf("QShlN32x4"); return;
-      case Iop_QShlN64x2: vex_printf("QShlN64x2"); return;
-      case Iop_QShlN8Sx16: vex_printf("QShlN8Sx16"); return;
-      case Iop_QShlN16Sx8: vex_printf("QShlN16Sx8"); return;
-      case Iop_QShlN32Sx4: vex_printf("QShlN32Sx4"); return;
-      case Iop_QShlN64Sx2: vex_printf("QShlN64Sx2"); return;
+      case Iop_QShlNsatSS8x16: vex_printf("QShlNsatSS8x16"); return;
+      case Iop_QShlNsatSS16x8: vex_printf("QShlNsatSS16x8"); return;
+      case Iop_QShlNsatSS32x4: vex_printf("QShlNsatSS32x4"); return;
+      case Iop_QShlNsatSS64x2: vex_printf("QShlNsatSS64x2"); return;
+      case Iop_QShlNsatUU8x16: vex_printf("QShlNsatUU8x16"); return;
+      case Iop_QShlNsatUU16x8: vex_printf("QShlNsatUU16x8"); return;
+      case Iop_QShlNsatUU32x4: vex_printf("QShlNsatUU32x4"); return;
+      case Iop_QShlNsatUU64x2: vex_printf("QShlNsatUU64x2"); return;
+      case Iop_QShlNsatSU8x16: vex_printf("QShlNsatSU8x16"); return;
+      case Iop_QShlNsatSU16x8: vex_printf("QShlNsatSU16x8"); return;
+      case Iop_QShlNsatSU32x4: vex_printf("QShlNsatSU32x4"); return;
+      case Iop_QShlNsatSU64x2: vex_printf("QShlNsatSU64x2"); return;
       case Iop_Shr8x16: vex_printf("Shr8x16"); return;
       case Iop_Shr16x8: vex_printf("Shr16x8"); return;
       case Iop_Shr32x4: vex_printf("Shr32x4"); return;
@@ -2545,12 +2545,12 @@
       case Iop_ShlN32x2: case Iop_ShlN16x4: case Iop_ShlN8x8:
       case Iop_ShrN32x2: case Iop_ShrN16x4: case Iop_ShrN8x8:
       case Iop_SarN32x2: case Iop_SarN16x4: case Iop_SarN8x8:
-      case Iop_QShlN8x8: case Iop_QShlN16x4:
-      case Iop_QShlN32x2: case Iop_QShlN64x1:
-      case Iop_QShlN8Sx8: case Iop_QShlN16Sx4:
-      case Iop_QShlN32Sx2: case Iop_QShlN64Sx1:
-      case Iop_QSalN8x8: case Iop_QSalN16x4:
-      case Iop_QSalN32x2: case Iop_QSalN64x1:
+      case Iop_QShlNsatUU8x8:  case Iop_QShlNsatUU16x4:
+      case Iop_QShlNsatUU32x2: case Iop_QShlNsatUU64x1:
+      case Iop_QShlNsatSU8x8:  case Iop_QShlNsatSU16x4:
+      case Iop_QShlNsatSU32x2: case Iop_QShlNsatSU64x1:
+      case Iop_QShlNsatSS8x8:  case Iop_QShlNsatSS16x4:
+      case Iop_QShlNsatSS32x2: case Iop_QShlNsatSS64x1:
          BINARY(Ity_I64,Ity_I8, Ity_I64);
 
       case Iop_Shl8: case Iop_Shr8: case Iop_Sar8:
@@ -2983,12 +2983,12 @@
       case Iop_ShrN32x4: case Iop_ShrN64x2:
       case Iop_SarN8x16: case Iop_SarN16x8:
       case Iop_SarN32x4: case Iop_SarN64x2:
-      case Iop_QShlN8x16: case Iop_QShlN16x8:
-      case Iop_QShlN32x4: case Iop_QShlN64x2:
-      case Iop_QShlN8Sx16: case Iop_QShlN16Sx8:
-      case Iop_QShlN32Sx4: case Iop_QShlN64Sx2:
-      case Iop_QSalN8x16: case Iop_QSalN16x8:
-      case Iop_QSalN32x4: case Iop_QSalN64x2:
+      case Iop_QShlNsatUU8x16: case Iop_QShlNsatUU16x8:
+      case Iop_QShlNsatUU32x4: case Iop_QShlNsatUU64x2:
+      case Iop_QShlNsatSU8x16: case Iop_QShlNsatSU16x8:
+      case Iop_QShlNsatSU32x4: case Iop_QShlNsatSU64x2:
+      case Iop_QShlNsatSS8x16: case Iop_QShlNsatSS16x8:
+      case Iop_QShlNsatSS32x4: case Iop_QShlNsatSS64x2:
       case Iop_SHA256:    case Iop_SHA512:
       case Iop_QandQShrNnarrow16Uto8Ux8:
       case Iop_QandQShrNnarrow32Uto16Ux4:
diff --git a/pub/libvex_ir.h b/pub/libvex_ir.h
index b494afa..9431acb 100644
--- a/pub/libvex_ir.h
+++ b/pub/libvex_ir.h
@@ -919,9 +919,12 @@
       Iop_QShl8x8, Iop_QShl16x4, Iop_QShl32x2, Iop_QShl64x1,
       Iop_QSal8x8, Iop_QSal16x4, Iop_QSal32x2, Iop_QSal64x1,
       /* VECTOR x INTEGER SATURATING SHIFT */
-      Iop_QShlN8Sx8, Iop_QShlN16Sx4, Iop_QShlN32Sx2, Iop_QShlN64Sx1,
-      Iop_QShlN8x8, Iop_QShlN16x4, Iop_QShlN32x2, Iop_QShlN64x1,
-      Iop_QSalN8x8, Iop_QSalN16x4, Iop_QSalN32x2, Iop_QSalN64x1,
+      Iop_QShlNsatSU8x8,  Iop_QShlNsatSU16x4,
+      Iop_QShlNsatSU32x2, Iop_QShlNsatSU64x1,
+      Iop_QShlNsatUU8x8,  Iop_QShlNsatUU16x4,
+      Iop_QShlNsatUU32x2, Iop_QShlNsatUU64x1,
+      Iop_QShlNsatSS8x8,  Iop_QShlNsatSS16x4,
+      Iop_QShlNsatSS32x2, Iop_QShlNsatSS64x1,
 
       /* NARROWING (binary) 
          -- narrow 2xI64 into 1xI64, hi half from left arg */
@@ -1534,9 +1537,12 @@
       Iop_QShl8x16, Iop_QShl16x8, Iop_QShl32x4, Iop_QShl64x2,
       Iop_QSal8x16, Iop_QSal16x8, Iop_QSal32x4, Iop_QSal64x2,
       /* VECTOR x INTEGER SATURATING SHIFT */
-      Iop_QShlN8Sx16, Iop_QShlN16Sx8, Iop_QShlN32Sx4, Iop_QShlN64Sx2,
-      Iop_QShlN8x16, Iop_QShlN16x8, Iop_QShlN32x4, Iop_QShlN64x2,
-      Iop_QSalN8x16, Iop_QSalN16x8, Iop_QSalN32x4, Iop_QSalN64x2,
+      Iop_QShlNsatSU8x16, Iop_QShlNsatSU16x8,
+      Iop_QShlNsatSU32x4, Iop_QShlNsatSU64x2,
+      Iop_QShlNsatUU8x16, Iop_QShlNsatUU16x8,
+      Iop_QShlNsatUU32x4, Iop_QShlNsatUU64x2,
+      Iop_QShlNsatSS8x16, Iop_QShlNsatSS16x8,
+      Iop_QShlNsatSS32x4, Iop_QShlNsatSS64x2,
 
       /* VECTOR x VECTOR BIDIRECTIONAL SATURATING (& MAYBE ROUNDING) SHIFT */
       /* The least significant 8 bits of each lane of the second
