diff --git a/third_party/subzero/src/IceInstX86Base.h b/third_party/subzero/src/IceInstX86Base.h
index 6c140d7..4c62854 100644
--- a/third_party/subzero/src/IceInstX86Base.h
+++ b/third_party/subzero/src/IceInstX86Base.h
@@ -1249,10 +1249,6 @@
   class InstX86Movd : public InstX86BaseUnaryopXmm<InstX86Base::Movd> {
   public:
     static InstX86Movd *create(Cfg *Func, Variable *Dest, Operand *Src) {
-      // TODO(amaiorano): This fixes assert(Dest->hasReg()) in emitIAS when
-      // there are no more registers left to allocate. Revisit this and fix it
-      // the right way. See b/145529686.
-      Dest->setMustHaveReg();
       return new (Func->allocate<InstX86Movd>()) InstX86Movd(Func, Dest, Src);
     }
 
diff --git a/third_party/subzero/src/IceInstX86BaseImpl.h b/third_party/subzero/src/IceInstX86BaseImpl.h
index fb9bba0..cf976ac 100644
--- a/third_party/subzero/src/IceInstX86BaseImpl.h
+++ b/third_party/subzero/src/IceInstX86BaseImpl.h
@@ -2314,6 +2314,12 @@
       Assembler *Asm = Func->getAssembler<Assembler>();
       Asm->movss(SrcTy, StackAddr, Traits::getEncodedXmm(SrcVar->getRegNum()));
       return;
+    } else if (isVectorType(SrcTy)) {
+      // Src must be a register
+      const auto *SrcVar = llvm::cast<Variable>(Src);
+      assert(SrcVar->hasReg());
+      Assembler *Asm = Func->getAssembler<Assembler>();
+      Asm->movups(StackAddr, Traits::getEncodedXmm(SrcVar->getRegNum()));
     } else {
       // Src can be a register or immediate.
       assert(isScalarIntegerType(SrcTy));
diff --git a/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h b/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h
index ebb49a5..5c312e1 100644
--- a/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h
+++ b/third_party/subzero/src/IceTargetLoweringX86BaseImpl.h
@@ -3292,7 +3292,10 @@
         // use v16i8 vectors.
         assert(getFlags().getApplicationBinaryInterface() != ABI_PNaCl &&
                "PNaCl only supports real 128-bit vectors");
-        _movd(Dest, legalize(Src0, Legal_Reg | Legal_Mem));
+        Operand *Src0RM = legalize(Src0, Legal_Reg | Legal_Mem);
+        Variable *T = makeReg(DestTy);
+        _movd(T, Src0RM);
+        _mov(Dest, T);
       } else {
         _movp(Dest, legalizeToReg(Src0));
       }
