Eliminate support for the PNaCl ABI

PNaCl uses the ILP32 data model, even on x86-64 (cf. the x32 ABI).
Reactor instead always uses LP64 on 64-bit.

The main technical difference is the ILP32 on x86-64 used the address-
size override prefix (0x67) for every instruction that accesses
memory, which makes it look at only the lower 32-bit part of base and
index registers. Note this only works in a sandbox-like environment,
where memory is allocated in the lower 4 GiB range, such as PNaCl.

Bug: b/179832693
Change-Id: I068ddd12b1827e3babc49a06ddf26b932d2082c5
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/55468
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/Reactor/SubzeroReactor.cpp b/src/Reactor/SubzeroReactor.cpp
index 8799eb8..9127871 100644
--- a/src/Reactor/SubzeroReactor.cpp
+++ b/src/Reactor/SubzeroReactor.cpp
@@ -896,7 +896,6 @@
 #endif
 	Flags.setOutFileType(Ice::FT_Elf);
 	Flags.setOptLevel(toIce(getDefaultConfig().getOptimization().getLevel()));
-	Flags.setApplicationBinaryInterface(Ice::ABI_Platform);
 	Flags.setVerbose(subzeroDumpEnabled ? Ice::IceV_Most : Ice::IceV_None);
 	Flags.setDisableHybridAssembly(true);
 
diff --git a/third_party/subzero/src/IceAssemblerX86Base.h b/third_party/subzero/src/IceAssemblerX86Base.h
index 86a93fc..c6dda23 100644
--- a/third_party/subzero/src/IceAssemblerX86Base.h
+++ b/third_party/subzero/src/IceAssemblerX86Base.h
@@ -44,12 +44,7 @@
   AssemblerX86Base &operator=(const AssemblerX86Base &) = delete;
 
 protected:
-  explicit AssemblerX86Base(
-      bool EmitAddrSizeOverridePrefix = TraitsType::Is64Bit)
-      : Assembler(Traits::AsmKind),
-        EmitAddrSizeOverridePrefix(EmitAddrSizeOverridePrefix) {
-    assert(Traits::Is64Bit || !EmitAddrSizeOverridePrefix);
-  }
+  explicit AssemblerX86Base() : Assembler(Traits::AsmKind) {}
 
 public:
   using Traits = TraitsType;
@@ -741,11 +736,6 @@
 private:
   ENABLE_MAKE_UNIQUE;
 
-  // EmidAddrSizeOverridePrefix directs the emission of the 0x67 prefix to
-  // force 32-bit registers when accessing memory. This is only used in native
-  // 64-bit.
-  const bool EmitAddrSizeOverridePrefix;
-
   static constexpr Type RexTypeIrrelevant = IceType_i32;
   static constexpr Type RexTypeForceRexW = IceType_i64;
   static constexpr GPRRegister RexRegIrrelevant =
@@ -780,14 +770,6 @@
 
   Label *getOrCreateLabel(SizeT Number, LabelVector &Labels);
 
-  void emitAddrSizeOverridePrefix() {
-    if (!Traits::Is64Bit || !EmitAddrSizeOverridePrefix) {
-      return;
-    }
-    static constexpr uint8_t AddrSizeOverridePrefix = 0x67;
-    emitUint8(AddrSizeOverridePrefix);
-  }
-
   // The arith_int() methods factor out the commonality between the encodings
   // of add(), Or(), adc(), sbb(), And(), sub(), Xor(), and cmp(). The Tag
   // parameter is statically asserted to be less than 8.
@@ -858,10 +840,10 @@
     const uint8_t X = (Addr != nullptr)
                           ? (typename T::Operand::RexBits)Addr->rexX()
                           : T::Operand::RexNone;
-    const uint8_t B =
-        (Addr != nullptr)
-            ? (typename T::Operand::RexBits)Addr->rexB()
-            : (Rm & 0x08) ? T::Operand::RexB : T::Operand::RexNone;
+    const uint8_t B = (Addr != nullptr)
+                          ? (typename T::Operand::RexBits)Addr->rexB()
+                      : (Rm & 0x08) ? T::Operand::RexB
+                                    : T::Operand::RexNone;
     const uint8_t Prefix = W | R | X | B;
     if (Prefix != T::Operand::RexNone) {
       emitUint8(Prefix);
diff --git a/third_party/subzero/src/IceAssemblerX86BaseImpl.h b/third_party/subzero/src/IceAssemblerX86BaseImpl.h
index 1646496..aa3da61 100644
--- a/third_party/subzero/src/IceAssemblerX86BaseImpl.h
+++ b/third_party/subzero/src/IceAssemblerX86BaseImpl.h
@@ -116,7 +116,6 @@
 template <typename TraitsType>
 void AssemblerX86Base<TraitsType>::call(const Address &address) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, address, RexRegIrrelevant);
   emitUint8(0xFF);
   emitOperand(2, address);
@@ -186,7 +185,6 @@
 template <typename TraitsType>
 void AssemblerX86Base<TraitsType>::popl(const Address &address) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, address, RexRegIrrelevant);
   emitUint8(0x8F);
   emitOperand(0, address);
@@ -219,7 +217,6 @@
 void AssemblerX86Base<TraitsType>::setcc(BrCond condition,
                                          const Address &address) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, address, RexRegIrrelevant);
   emitUint8(0x0F);
   emitUint8(0x90 + condition);
@@ -266,7 +263,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, src, dst);
   if (isByteSizedType(Ty)) {
     emitUint8(0x8A);
@@ -282,7 +278,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, dst, src);
   if (isByteSizedType(Ty)) {
     emitUint8(0x88);
@@ -298,7 +293,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, dst, RexRegIrrelevant);
   if (isByteSizedType(Ty)) {
     emitUint8(0xC6);
@@ -362,7 +356,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   bool ByteSized = isByteSizedType(SrcTy);
   assert(ByteSized || SrcTy == IceType_i16);
-  emitAddrSizeOverridePrefix();
   emitRex(SrcTy, src, RexTypeIrrelevant, dst);
   emitUint8(0x0F);
   emitUint8(ByteSized ? 0xB6 : 0xB7);
@@ -390,7 +383,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   bool ByteSized = isByteSizedType(SrcTy);
-  emitAddrSizeOverridePrefix();
   emitRex(SrcTy, src, RexTypeForceRexW, dst);
   if (ByteSized || SrcTy == IceType_i16) {
     emitUint8(0x0F);
@@ -410,7 +402,6 @@
          (Traits::Is64Bit && Ty == IceType_i64));
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, src, dst);
   emitUint8(0x8D);
   emitOperand(gprEncoding(dst), src);
@@ -438,7 +429,6 @@
     emitOperandSizeOverride();
   else
     assert(Ty == IceType_i32 || (Traits::Is64Bit && Ty == IceType_i64));
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, src, dst);
   emitUint8(0x0F);
   emitUint8(0x40 + cond);
@@ -456,7 +446,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x10);
@@ -468,7 +457,6 @@
                                          XmmRegister src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, dst, src);
   emitUint8(0x0F);
   emitUint8(0x11);
@@ -502,7 +490,6 @@
                                         const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(SrcTy, src, dst);
   emitUint8(0x0F);
   emitUint8(0x6E);
@@ -525,7 +512,6 @@
                                         XmmRegister src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(DestTy, dst, src);
   emitUint8(0x0F);
   emitUint8(0x7E);
@@ -546,7 +532,6 @@
 void AssemblerX86Base<TraitsType>::movq(const Address &dst, XmmRegister src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, dst, src);
   emitUint8(0x0F);
   emitUint8(0xD6);
@@ -557,7 +542,6 @@
 void AssemblerX86Base<TraitsType>::movq(XmmRegister dst, const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0xF3);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x7E);
@@ -580,7 +564,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x58);
@@ -603,7 +586,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5C);
@@ -626,7 +608,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x59);
@@ -649,7 +630,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5E);
@@ -661,7 +641,6 @@
 void AssemblerX86Base<TraitsType>::fld(Type Ty,
                                        const typename T::Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitUint8(isFloat32Asserting32Or64(Ty) ? 0xD9 : 0xDD);
   emitOperand(0, src);
 }
@@ -671,7 +650,6 @@
 void AssemblerX86Base<TraitsType>::fstp(Type Ty,
                                         const typename T::Address &dst) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitUint8(isFloat32Asserting32Or64(Ty) ? 0xD9 : 0xDD);
   emitOperand(3, dst);
 }
@@ -705,7 +683,6 @@
 template <typename TraitsType>
 void AssemblerX86Base<TraitsType>::movups(XmmRegister dst, const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x10);
@@ -715,7 +692,6 @@
 template <typename TraitsType>
 void AssemblerX86Base<TraitsType>::movups(const Address &dst, XmmRegister src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, dst, src);
   emitUint8(0x0F);
   emitUint8(0x11);
@@ -744,7 +720,6 @@
                                         const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (isByteSizedArithType(Ty)) {
@@ -779,7 +754,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (isByteSizedArithType(Ty)) {
@@ -814,7 +788,6 @@
                                           const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (isByteSizedArithType(Ty)) {
@@ -843,7 +816,6 @@
                                         const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0xDB);
@@ -866,7 +838,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0xDF);
@@ -895,7 +866,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (Ty == IceType_i16) {
@@ -926,7 +896,6 @@
                                           const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   assert(Ty == IceType_v8i16);
@@ -953,7 +922,6 @@
                                            const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   assert(Ty == IceType_v8i16);
@@ -980,7 +948,6 @@
                                            const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   assert(Ty == IceType_v8i16);
@@ -1005,7 +972,6 @@
                                            const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0xF4);
@@ -1028,7 +994,6 @@
                                        const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0xEB);
@@ -1057,7 +1022,6 @@
                                         const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (isByteSizedArithType(Ty)) {
@@ -1092,7 +1056,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (isByteSizedArithType(Ty)) {
@@ -1126,7 +1089,6 @@
                                           const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (isByteSizedArithType(Ty)) {
@@ -1155,7 +1117,6 @@
                                         const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0xEF);
@@ -1183,7 +1144,6 @@
                                         const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (Ty == IceType_i16) {
@@ -1234,7 +1194,6 @@
                                         const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (Ty == IceType_i16) {
@@ -1287,7 +1246,6 @@
                                         const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (Ty == IceType_i16) {
@@ -1338,7 +1296,6 @@
 void AssemblerX86Base<TraitsType>::addps(Type /* Ty */, XmmRegister dst,
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x58);
@@ -1359,7 +1316,6 @@
 void AssemblerX86Base<TraitsType>::subps(Type /* Ty */, XmmRegister dst,
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5C);
@@ -1380,7 +1336,6 @@
 void AssemblerX86Base<TraitsType>::divps(Type /* Ty */, XmmRegister dst,
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5E);
@@ -1401,7 +1356,6 @@
 void AssemblerX86Base<TraitsType>::mulps(Type /* Ty */, XmmRegister dst,
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x59);
@@ -1426,7 +1380,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (!isFloat32Asserting32Or64(Ty))
     emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5D);
@@ -1449,7 +1402,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5D);
@@ -1474,7 +1426,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (!isFloat32Asserting32Or64(Ty))
     emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5F);
@@ -1497,7 +1448,6 @@
                                          const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5F);
@@ -1522,7 +1472,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (!isFloat32Asserting32Or64(Ty))
     emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x55);
@@ -1547,7 +1496,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (!isFloat32Asserting32Or64(Ty))
     emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x54);
@@ -1572,7 +1520,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (!isFloat32Asserting32Or64(Ty))
     emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x56);
@@ -1596,7 +1543,6 @@
                                             const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x38);
@@ -1621,7 +1567,6 @@
                                             const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x38);
@@ -1650,7 +1595,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_f64)
     emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0xC2);
@@ -1770,7 +1714,6 @@
                                           const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x38);
@@ -1798,7 +1741,6 @@
                                           const Immediate &imm) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x70);
@@ -1832,7 +1774,6 @@
                                            const Address &Src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, Src, Dst);
   emitUint8(0x0F);
   if (Ty == IceType_v4i32 || Ty == IceType_v4f32) {
@@ -1871,7 +1812,6 @@
                                            const Address &Src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, Src, Dst);
   emitUint8(0x0F);
   if (Ty == IceType_v4i32 || Ty == IceType_v4f32) {
@@ -1908,7 +1848,6 @@
                                           const Address &Src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, Src, Dst);
   emitUint8(0x0F);
   if (Ty == IceType_v4i32 || Ty == IceType_v4f32) {
@@ -1944,7 +1883,6 @@
                                           const Address &Src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, Src, Dst);
   emitUint8(0x0F);
   if (Ty == IceType_v4i32 || Ty == IceType_v4f32) {
@@ -1976,7 +1914,6 @@
                                           const Address &src,
                                           const Immediate &imm) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0xC6);
@@ -2010,7 +1947,6 @@
 void AssemblerX86Base<TraitsType>::cvtdq2ps(Type /* Ignore */, XmmRegister dst,
                                             const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5B);
@@ -2033,7 +1969,6 @@
                                              const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0xF3);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5B);
@@ -2056,7 +1991,6 @@
                                             const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5B);
@@ -2079,7 +2013,6 @@
                                             Type SrcTy, const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(DestTy) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(SrcTy, src, dst);
   emitUint8(0x0F);
   emitUint8(0x2A);
@@ -2103,7 +2036,6 @@
                                                   const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(SrcTy) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x5A);
@@ -2126,7 +2058,6 @@
                                              Type SrcTy, const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(SrcTy) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(DestTy, src, dst);
   emitUint8(0x0F);
   emitUint8(0x2C);
@@ -2149,7 +2080,6 @@
                                             Type SrcTy, const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(isFloat32Asserting32Or64(SrcTy) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(DestTy, src, dst);
   emitUint8(0x0F);
   emitUint8(0x2D);
@@ -2174,7 +2104,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_f64)
     emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, b, a);
   emitUint8(0x0F);
   emitUint8(0x2E);
@@ -2210,7 +2139,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (isScalarFloatingType(Ty))
     emitUint8(isFloat32Asserting32Or64(Ty) ? 0xF3 : 0xF2);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x51);
@@ -2235,7 +2163,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (!isFloat32Asserting32Or64(Ty))
     emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x57);
@@ -2280,7 +2207,6 @@
   assert(isVectorFloatingType(Ty));
   (void)Ty;
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x3A);
@@ -2316,7 +2242,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   assert(imm.is_uint8());
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (Ty == IceType_i16) {
@@ -2389,7 +2314,6 @@
                                           const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (isByteSizedArithType(Ty)) {
@@ -2424,7 +2348,6 @@
                                           const Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   if (isByteSizedArithType(Ty)) {
@@ -2470,7 +2393,6 @@
                                          const Immediate &mode) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   emitUint8(0x66);
-  emitAddrSizeOverridePrefix();
   emitRex(RexTypeIrrelevant, src, dst);
   emitUint8(0x0F);
   emitUint8(0x3A);
@@ -2496,7 +2418,6 @@
 template <typename T, typename>
 void AssemblerX86Base<TraitsType>::fnstcw(const typename T::Address &dst) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitUint8(0xD9);
   emitOperand(7, dst);
 }
@@ -2505,7 +2426,6 @@
 template <typename T, typename>
 void AssemblerX86Base<TraitsType>::fldcw(const typename T::Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitUint8(0xD9);
   emitOperand(5, src);
 }
@@ -2514,7 +2434,6 @@
 template <typename T, typename>
 void AssemblerX86Base<TraitsType>::fistpl(const typename T::Address &dst) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitUint8(0xDF);
   emitOperand(7, dst);
 }
@@ -2523,7 +2442,6 @@
 template <typename T, typename>
 void AssemblerX86Base<TraitsType>::fistps(const typename T::Address &dst) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitUint8(0xDB);
   emitOperand(3, dst);
 }
@@ -2532,7 +2450,6 @@
 template <typename T, typename>
 void AssemblerX86Base<TraitsType>::fildl(const typename T::Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitUint8(0xDF);
   emitOperand(5, src);
 }
@@ -2541,7 +2458,6 @@
 template <typename T, typename>
 void AssemblerX86Base<TraitsType>::filds(const typename T::Address &src) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitUint8(0xDB);
   emitOperand(0, src);
 }
@@ -2594,7 +2510,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, address, reg);
   if (isByteSizedType(Ty))
     emitUint8(Tag * 8 + 2);
@@ -2611,7 +2526,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, address, reg);
   if (isByteSizedType(Ty))
     emitUint8(Tag * 8 + 0);
@@ -2628,7 +2542,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, address, RexRegIrrelevant);
   if (isByteSizedType(Ty)) {
     emitComplexI8(Tag, address, imm);
@@ -2687,7 +2600,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, addr, reg);
   if (isByteSizedType(Ty))
     emitUint8(0x84);
@@ -2739,7 +2651,6 @@
   // short.
   if (immediate.is_uint8()) {
     // Use zero-extended 8-bit immediate.
-    emitAddrSizeOverridePrefix();
     emitRex(Ty, addr, RexRegIrrelevant);
     emitUint8(0xF6);
     static constexpr RelocOffsetT OffsetFromNextInstruction = 1;
@@ -2748,7 +2659,6 @@
   } else {
     if (Ty == IceType_i16)
       emitOperandSizeOverride();
-    emitAddrSizeOverridePrefix();
     emitRex(Ty, addr, RexRegIrrelevant);
     emitUint8(0xF7);
     const uint8_t OffsetFromNextInstruction = Ty == IceType_i16 ? 2 : 4;
@@ -3011,7 +2921,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, addr, RexRegIrrelevant);
   if (isByteSizedArithType(Ty))
     emitUint8(0xF6);
@@ -3038,7 +2947,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, addr, RexRegIrrelevant);
   if (isByteSizedArithType(Ty))
     emitUint8(0xF6);
@@ -3069,7 +2977,6 @@
          (Traits::Is64Bit && Ty == IceType_i64));
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, address, reg);
   emitUint8(0x0F);
   emitUint8(0xAF);
@@ -3113,7 +3020,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, address, RexRegIrrelevant);
   if (isByteSizedArithType(Ty))
     emitUint8(0xF6);
@@ -3149,7 +3055,6 @@
   assert(Ty == IceType_i16 || Ty == IceType_i32);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, address, dst);
   if (imm.is_int8()) {
     emitUint8(0x6B);
@@ -3182,7 +3087,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, address, RexRegIrrelevant);
   if (isByteSizedArithType(Ty))
     emitUint8(0xF6);
@@ -3201,7 +3105,6 @@
 template <typename TraitsType>
 void AssemblerX86Base<TraitsType>::incl(const Address &address) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(IceType_i32, address, RexRegIrrelevant);
   emitUint8(0xFF);
   emitOperand(0, address);
@@ -3217,7 +3120,6 @@
 template <typename TraitsType>
 void AssemblerX86Base<TraitsType>::decl(const Address &address) {
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
-  emitAddrSizeOverridePrefix();
   emitRex(IceType_i32, address, RexRegIrrelevant);
   emitUint8(0xFF);
   emitOperand(1, address);
@@ -3330,7 +3232,6 @@
   assert(Ty == IceType_i16 || Ty == IceType_i32);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, operand, src);
   emitUint8(0x0F);
   emitUint8(0xA5);
@@ -3372,7 +3273,6 @@
   assert(Ty == IceType_i16 || Ty == IceType_i32);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, dst, src);
   emitUint8(0x0F);
   emitUint8(0xAD);
@@ -3397,7 +3297,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, addr, RexRegIrrelevant);
   if (isByteSizedArithType(Ty))
     emitUint8(0xF6);
@@ -3445,7 +3344,6 @@
          (Traits::Is64Bit && Ty == IceType_i64));
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, src, dst);
   emitUint8(0x0F);
   emitUint8(0xBC);
@@ -3474,7 +3372,6 @@
          (Traits::Is64Bit && Ty == IceType_i64));
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, src, dst);
   emitUint8(0x0F);
   emitUint8(0xBD);
@@ -3703,7 +3600,6 @@
     emitOperandSizeOverride();
   if (Locked)
     emitUint8(0xF0);
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, address, reg);
   emitUint8(0x0F);
   if (isByteSizedArithType(Ty))
@@ -3719,7 +3615,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Locked)
     emitUint8(0xF0);
-  emitAddrSizeOverridePrefix();
   emitRex(IceType_i32, address, RexRegIrrelevant);
   emitUint8(0x0F);
   emitUint8(0xC7);
@@ -3734,7 +3629,6 @@
     emitOperandSizeOverride();
   if (Locked)
     emitUint8(0xF0);
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, addr, reg);
   emitUint8(0x0F);
   if (isByteSizedArithType(Ty))
@@ -3773,7 +3667,6 @@
   AssemblerBuffer::EnsureCapacity ensured(&Buffer);
   if (Ty == IceType_i16)
     emitOperandSizeOverride();
-  emitAddrSizeOverridePrefix();
   emitRex(Ty, addr, reg);
   if (isByteSizedArithType(Ty))
     emitUint8(0x86);
diff --git a/third_party/subzero/src/IceClFlags.def b/third_party/subzero/src/IceClFlags.def
index 690669e..02469de 100644
--- a/third_party/subzero/src/IceClFlags.def
+++ b/third_party/subzero/src/IceClFlags.def
@@ -226,15 +226,7 @@
         clEnumValN(Ice::FT_Elf, "obj", "Native ELF object ('.o') file"),       \
         clEnumValN(Ice::FT_Asm, "asm", "Assembly ('.s') file"),                \
         clEnumValN(Ice::FT_Iasm, "iasm",                                       \
-                   "Low-level integrated assembly ('.s') file")                \
-        CLENUMVALEND))                                                         \
-                                                                               \
-  X(ApplicationBinaryInterface, Ice::ABI, dev_opt_flag, "abi",                 \
-    cl::desc("ABI type"), cl::init(Ice::ABI_PNaCl),                            \
-    cl::values(                                                                \
-        clEnumValN(Ice::ABI_PNaCl, "pnacl", "x32 for unsandboxed 64-bit x86"), \
-        clEnumValN(Ice::ABI_Platform, "platform", "Native executable ABI")     \
-        CLENUMVALEND))                                                         \
+                   "Low-level integrated assembly ('.s') file") CLENUMVALEND)) \
                                                                                \
   X(ParseParallel, bool, dev_opt_flag, "parse-parallel",                       \
     cl::desc("Parse function blocks in parallel"), cl::init(true))             \
diff --git a/third_party/subzero/src/IceDefs.h b/third_party/subzero/src/IceDefs.h
index 01a8f35..c4cf0ee 100644
--- a/third_party/subzero/src/IceDefs.h
+++ b/third_party/subzero/src/IceDefs.h
@@ -302,7 +302,6 @@
   __attribute__((aligned(MaxCacheLineSize + 0))) int : 0
 #endif // !defined(_MSC_VER)
 
-/// PNaCl is ILP32, so theoretically we should only need 32-bit offsets.
 using RelocOffsetT = int32_t;
 enum { RelocAddrSize = 4 };
 
@@ -371,11 +370,6 @@
   FT_Iasm /// "Integrated assembler" .byte-style .s file
 };
 
-enum ABI {
-  ABI_PNaCl,   /// x32 for unsandboxed 64-bit x86
-  ABI_Platform /// Native executable ABI
-};
-
 using Ostream = llvm::raw_ostream;
 using Fdstream = llvm::raw_fd_ostream;
 
diff --git a/third_party/subzero/src/IceELFObjectWriter.cpp b/third_party/subzero/src/IceELFObjectWriter.cpp
index 9f41af6..1643397 100644
--- a/third_party/subzero/src/IceELFObjectWriter.cpp
+++ b/third_party/subzero/src/IceELFObjectWriter.cpp
@@ -48,12 +48,6 @@
     return false;
   }
 
-  if (Flags.getApplicationBinaryInterface() == ABI_PNaCl &&
-      !Flags.getUseSandboxing()) {
-    // Unsandboxed PNaCl code is always ELF32 (pexes are ILP32.)
-    return false;
-  }
-
   return ELFTargetInfo[Arch].IsELF64;
 }
 
diff --git a/third_party/subzero/src/IceInstX8664.cpp b/third_party/subzero/src/IceInstX8664.cpp
index da9e9f6..1a330e1 100644
--- a/third_party/subzero/src/IceInstX8664.cpp
+++ b/third_party/subzero/src/IceInstX8664.cpp
@@ -150,25 +150,7 @@
 
   Str << "(";
   if (Base != nullptr) {
-    const Variable *B = Base;
-    if (!NeedSandboxing) {
-      // TODO(jpp): stop abusing the operand's type to identify LEAs.
-      const Type MemType = getType();
-      if (Base->getType() != IceType_i32 && MemType != IceType_void &&
-          !isVectorType(MemType)) {
-        // X86-64 is ILP32, but %rsp and %rbp are accessed as 64-bit registers.
-        // For filetype=asm, they need to be emitted as their 32-bit siblings.
-        assert(Base->getType() == IceType_i64);
-        assert(getEncodedGPR(Base->getRegNum()) == RegX8664::Encoded_Reg_rsp ||
-               getEncodedGPR(Base->getRegNum()) == RegX8664::Encoded_Reg_rbp ||
-               getType() == IceType_void);
-        B = B->asType(
-            Func, IceType_i32,
-            X8664::Traits::getGprForType(IceType_i32, Base->getRegNum()));
-      }
-    }
-
-    B->emit(Func);
+    Base->emit(Func);
   }
 
   if (Index != nullptr) {
diff --git a/third_party/subzero/src/IceTargetLoweringARM32.cpp b/third_party/subzero/src/IceTargetLoweringARM32.cpp
index 750374e..c479feb 100644
--- a/third_party/subzero/src/IceTargetLoweringARM32.cpp
+++ b/third_party/subzero/src/IceTargetLoweringARM32.cpp
@@ -5296,8 +5296,6 @@
     llvm::report_fatal_error("setjmp should have been prelowered.");
   }
   case Intrinsics::Sqrt: {
-    assert(isScalarFloatingType(Dest->getType()) ||
-           getFlags().getApplicationBinaryInterface() != ::Ice::ABI_PNaCl);
     Variable *Src = legalizeToReg(Instr->getArg(0));
     Variable *T = makeReg(DestTy);
     _vsqrt(T, Src);
diff --git a/third_party/subzero/src/IceTargetLoweringMIPS32.cpp b/third_party/subzero/src/IceTargetLoweringMIPS32.cpp
index 0f22385..0ceb41e 100644
--- a/third_party/subzero/src/IceTargetLoweringMIPS32.cpp
+++ b/third_party/subzero/src/IceTargetLoweringMIPS32.cpp
@@ -5155,8 +5155,7 @@
       }
       _mov(Dest, T);
     } else {
-      assert(getFlags().getApplicationBinaryInterface() != ::Ice::ABI_PNaCl);
-      UnimplementedLoweringError(this, Instr); // Not required for PNaCl
+      UnimplementedLoweringError(this, Instr);
     }
     return;
   }
@@ -5176,11 +5175,11 @@
     return;
   }
   case Intrinsics::LoadSubVector: {
-    UnimplementedLoweringError(this, Instr); // Not required for PNaCl
+    UnimplementedLoweringError(this, Instr);
     return;
   }
   case Intrinsics::StoreSubVector: {
-    UnimplementedLoweringError(this, Instr); // Not required for PNaCl
+    UnimplementedLoweringError(this, Instr);
     return;
   }
   default: // UnknownIntrinsic
diff --git a/third_party/subzero/src/IceTargetLoweringX8664.cpp b/third_party/subzero/src/IceTargetLoweringX8664.cpp
index e7407b1..13884ea 100644
--- a/third_party/subzero/src/IceTargetLoweringX8664.cpp
+++ b/third_party/subzero/src/IceTargetLoweringX8664.cpp
@@ -708,14 +708,7 @@
 
     Context.insert(ReturnAddress);
   } else {
-    if (CallTargetR != nullptr && CallTarget->getType() == IceType_i32) {
-      // x86-64 in PNaCl is ILP32. Therefore, CallTarget is i32, but the
-      // emitted call needs an i64 register (for textual asm.)
-      Variable *T = makeReg(IceType_i64);
-      _movzx(T, CallTargetR);
-      CallTarget = T;
-
-    } else if (CallTarget->getType() == IceType_i64) {
+    if (CallTarget->getType() == IceType_i64) {
       // x86-64 does not support 64-bit direct calls, so write the value to a
       // register and make an indirect call for Constant call targets.
       RegNumT TargetReg = {};
diff --git a/third_party/subzero/src/IceTargetLoweringX8664.h b/third_party/subzero/src/IceTargetLoweringX8664.h
index 96afb42..a56c1a4 100644
--- a/third_party/subzero/src/IceTargetLoweringX8664.h
+++ b/third_party/subzero/src/IceTargetLoweringX8664.h
@@ -42,10 +42,7 @@
   }
 
   std::unique_ptr<::Ice::Assembler> createAssembler() const override {
-    const bool EmitAddrSizeOverridePrefix =
-        !NeedSandboxing &&
-        getFlags().getApplicationBinaryInterface() == ABI_PNaCl;
-    return makeUnique<X8664::AssemblerX8664>(EmitAddrSizeOverridePrefix);
+    return makeUnique<X8664::AssemblerX8664>();
   }
 
 protected:
diff --git a/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h b/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h
index 37ab794..f6885bc 100644
--- a/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h
+++ b/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h
@@ -444,11 +444,7 @@
 
 template <typename TraitsType>
 ::Ice::Type TargetX86Base<TraitsType>::getPointerType() {
-  if (!Traits::Is64Bit ||
-      ::Ice::getFlags().getApplicationBinaryInterface() == ::Ice::ABI_PNaCl) {
-    return ::Ice::IceType_i32;
-  }
-  return ::Ice::IceType_i64;
+  return Traits::Is64Bit ? IceType_i64 : IceType_i32;
 }
 
 template <typename TraitsType> void TargetX86Base<TraitsType>::translateO2() {
@@ -3297,8 +3293,6 @@
         // Bitcast requires equal type sizes, which isn't strictly the case
         // between scalars and vectors, but to emulate v4i8 vectors one has to
         // use v16i8 vectors.
-        assert(getFlags().getApplicationBinaryInterface() != ABI_PNaCl &&
-               "PNaCl only supports real 128-bit vectors");
         Operand *Src0RM = legalize(Src0, Legal_Reg | Legal_Mem);
         Variable *T = makeReg(DestTy);
         _movd(T, Src0RM);
@@ -4442,8 +4436,6 @@
     return;
   }
   case Intrinsics::Sqrt: {
-    assert(isScalarFloatingType(Instr->getDest()->getType()) ||
-           getFlags().getApplicationBinaryInterface() != ::Ice::ABI_PNaCl);
     Operand *Src = legalize(Instr->getArg(0));
     Variable *Dest = Instr->getDest();
     Variable *T = makeReg(Dest->getType());
@@ -8256,9 +8248,8 @@
       << typeWidthInBytes(getPointerType()) << "\n"
       << JumpTable->getName() << ":";
 
-  // On X86 ILP32 pointers are 32-bit hence the use of .long
   for (SizeT I = 0; I < JumpTable->getNumTargets(); ++I)
-    Str << "\n\t.long\t" << JumpTable->getTarget(I)->getAsmName();
+    Str << "\n\t.val\t" << JumpTable->getTarget(I)->getAsmName();
   Str << "\n";
 }
 
@@ -8353,9 +8344,8 @@
           << typeWidthInBytes(getPointerType()) << "\n"
           << JT.getName().toString() << ":";
 
-      // On X8664 ILP32 pointers are 32-bit hence the use of .long
       for (intptr_t TargetOffset : JT.getTargetOffsets())
-        Str << "\n\t.long\t" << JT.getFunctionName() << "+" << TargetOffset;
+        Str << "\n\t.val\t" << JT.getFunctionName() << "+" << TargetOffset;
       Str << "\n";
     }
   } break;