Added few more SIMD extensions for x86/x86_64 (SSE).

Rationale:
Prototype ART vectorizer needs way to set invariant vectors.

Test: assembler_x86[_64]_test
Bug: 34083438
Change-Id: I5ab2ad77b8f9b64b46cc8635ad926e54787508a2
diff --git a/compiler/utils/x86/assembler_x86_test.cc b/compiler/utils/x86/assembler_x86_test.cc
index 4d60a12..1768d8b 100644
--- a/compiler/utils/x86/assembler_x86_test.cc
+++ b/compiler/utils/x86/assembler_x86_test.cc
@@ -468,51 +468,43 @@
 }
 
 TEST_F(AssemblerX86Test, AddPS) {
-  GetAssembler()->addps(x86::XmmRegister(x86::XMM0), x86::XmmRegister(x86::XMM1));
-  const char* expected = "addps %xmm1, %xmm0\n";
-  DriverStr(expected, "addps");
+  DriverStr(RepeatFF(&x86::X86Assembler::addps, "addps %{reg2}, %{reg1}"), "addps");
 }
 
 TEST_F(AssemblerX86Test, AddPD) {
-  GetAssembler()->addpd(x86::XmmRegister(x86::XMM0), x86::XmmRegister(x86::XMM1));
-  const char* expected = "addpd %xmm1, %xmm0\n";
-  DriverStr(expected, "addpd");
+  DriverStr(RepeatFF(&x86::X86Assembler::addpd, "addpd %{reg2}, %{reg1}"), "addpd");
 }
 
 TEST_F(AssemblerX86Test, SubPS) {
-  GetAssembler()->subps(x86::XmmRegister(x86::XMM0), x86::XmmRegister(x86::XMM1));
-  const char* expected = "subps %xmm1, %xmm0\n";
-  DriverStr(expected, "subps");
+  DriverStr(RepeatFF(&x86::X86Assembler::subps, "subps %{reg2}, %{reg1}"), "subps");
 }
 
 TEST_F(AssemblerX86Test, SubPD) {
-  GetAssembler()->subpd(x86::XmmRegister(x86::XMM0), x86::XmmRegister(x86::XMM1));
-  const char* expected = "subpd %xmm1, %xmm0\n";
-  DriverStr(expected, "subpd");
+  DriverStr(RepeatFF(&x86::X86Assembler::subpd, "subpd %{reg2}, %{reg1}"), "subpd");
 }
 
 TEST_F(AssemblerX86Test, MulPS) {
-  GetAssembler()->mulps(x86::XmmRegister(x86::XMM0), x86::XmmRegister(x86::XMM1));
-  const char* expected = "mulps %xmm1, %xmm0\n";
-  DriverStr(expected, "mulps");
+  DriverStr(RepeatFF(&x86::X86Assembler::mulps, "mulps %{reg2}, %{reg1}"), "mulps");
 }
 
 TEST_F(AssemblerX86Test, MulPD) {
-  GetAssembler()->mulpd(x86::XmmRegister(x86::XMM0), x86::XmmRegister(x86::XMM1));
-  const char* expected = "mulpd %xmm1, %xmm0\n";
-  DriverStr(expected, "mulpd");
+  DriverStr(RepeatFF(&x86::X86Assembler::mulpd, "mulpd %{reg2}, %{reg1}"), "mulpd");
 }
 
 TEST_F(AssemblerX86Test, DivPS) {
-  GetAssembler()->divps(x86::XmmRegister(x86::XMM0), x86::XmmRegister(x86::XMM1));
-  const char* expected = "divps %xmm1, %xmm0\n";
-  DriverStr(expected, "divps");
+  DriverStr(RepeatFF(&x86::X86Assembler::divps, "divps %{reg2}, %{reg1}"), "divps");
 }
 
 TEST_F(AssemblerX86Test, DivPD) {
-  GetAssembler()->divpd(x86::XmmRegister(x86::XMM0), x86::XmmRegister(x86::XMM1));
-  const char* expected = "divpd %xmm1, %xmm0\n";
-  DriverStr(expected, "divpd");
+  DriverStr(RepeatFF(&x86::X86Assembler::divpd, "divpd %{reg2}, %{reg1}"), "divpd");
+}
+
+TEST_F(AssemblerX86Test, ShufPS) {
+  DriverStr(RepeatFFI(&x86::X86Assembler::shufps, 1, "shufps ${imm}, %{reg2}, %{reg1}"), "shufps");
+}
+
+TEST_F(AssemblerX86Test, ShufPD) {
+  DriverStr(RepeatFFI(&x86::X86Assembler::shufpd, 1, "shufpd ${imm}, %{reg2}, %{reg1}"), "shufpd");
 }
 
 /////////////////