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
diff --git a/compiler/utils/x86_64/assembler_x86_64.cc b/compiler/utils/x86_64/assembler_x86_64.cc
index feabf26..ff5a357 100644
--- a/compiler/utils/x86_64/assembler_x86_64.cc
+++ b/compiler/utils/x86_64/assembler_x86_64.cc
@@ -2199,7 +2199,7 @@
   CHECK(imm.is_int32());
   EmitOperandSizeOverride();
   EmitOptionalRex32(address);
-  EmitComplex(7, address, imm);
+  EmitComplex(7, address, imm, /* is_16_op */ true);
 }
 
 
diff --git a/compiler/utils/x86_64/assembler_x86_64_test.cc b/compiler/utils/x86_64/assembler_x86_64_test.cc
index 5e6c833..6b1e53c 100644
--- a/compiler/utils/x86_64/assembler_x86_64_test.cc
+++ b/compiler/utils/x86_64/assembler_x86_64_test.cc
@@ -967,9 +967,8 @@
 }
 
 TEST_F(AssemblerX86_64Test, Cmpw) {
-  DriverStr(RepeatAI(&x86_64::X86_64Assembler::cmpw,
-                     /*imm_bytes*/ 1U,
-                     "cmpw ${imm}, {mem}"), "cmpw");  // TODO: only imm8?
+  DriverStr(
+      RepeatAI(&x86_64::X86_64Assembler::cmpw, /*imm_bytes*/ 2U, "cmpw ${imm}, {mem}"), "cmpw");
 }
 
 TEST_F(AssemblerX86_64Test, MovqAddrImm) {