x86/x86-64: Fix cmpw() for 9-16 bit immediates.

Test: assembler_x86_test assembler_x86_64_test
Bug: 71853552
Change-Id: I0d05a5f461557122fffa89a1ba054886dd70ef12
diff --git a/compiler/utils/x86/assembler_x86.cc b/compiler/utils/x86/assembler_x86.cc
index 8640e2d..ea160c8 100644
--- a/compiler/utils/x86/assembler_x86.cc
+++ b/compiler/utils/x86/assembler_x86.cc
@@ -1914,7 +1914,7 @@
 void X86Assembler::cmpw(const Address& address, const Immediate& imm) {
   AssemblerBuffer::EnsureCapacity ensured(&buffer_);
   EmitUint8(0x66);
-  EmitComplex(7, address, imm);
+  EmitComplex(7, address, imm, /* is_16_op */ true);
 }
 
 
diff --git a/compiler/utils/x86/assembler_x86_test.cc b/compiler/utils/x86/assembler_x86_test.cc
index 937dd80..2fd1b27 100644
--- a/compiler/utils/x86/assembler_x86_test.cc
+++ b/compiler/utils/x86/assembler_x86_test.cc
@@ -921,9 +921,7 @@
 }
 
 TEST_F(AssemblerX86Test, Cmpw) {
-  DriverStr(RepeatAI(&x86::X86Assembler::cmpw,
-                     /*imm_bytes*/ 1U,
-                     "cmpw ${imm}, {mem}"), "cmpw");  // TODO: only imm8?
+  DriverStr(RepeatAI(&x86::X86Assembler::cmpw, /*imm_bytes*/ 2U, "cmpw ${imm}, {mem}"), "cmpw");
 }
 
 }  // namespace art