Ensure that the sub-vector load destination is a register.

BUG=swiftshader:15

Change-Id: I7e10342fa1ef9bce22bc8c445240fc34a68e8f47
Reviewed-on: https://chromium-review.googlesource.com/414992
Reviewed-by: Jim Stichnoth <stichnot@chromium.org>
diff --git a/src/IceTargetLoweringX86BaseImpl.h b/src/IceTargetLoweringX86BaseImpl.h
index 0ba7bce..796aa13 100644
--- a/src/IceTargetLoweringX86BaseImpl.h
+++ b/src/IceTargetLoweringX86BaseImpl.h
@@ -4397,17 +4397,19 @@
       return;
     }
 
+    auto *T = makeReg(Ty);
     switch (SubVectorSize->getValue()) {
     case 4:
-      _movd(Dest, Src);
+      _movd(T, Src);
       break;
     case 8:
-      _movq(Dest, Src);
+      _movq(T, Src);
       break;
     default:
       Func->setError("Unexpected size for LoadSubVector");
       return;
     }
+    _movp(Dest, T);
     return;
   }
   case Intrinsics::StoreSubVector: {