Index: src/compiler/x87/code-generator-x87.cc |
diff --git a/src/compiler/x87/code-generator-x87.cc b/src/compiler/x87/code-generator-x87.cc |
index 1d22ae9b6be41b86d5e5fe65b76aac727490fdb3..82e575e4843ae9807dbadc6802bd9f65d0091cdf 100644 |
--- a/src/compiler/x87/code-generator-x87.cc |
+++ b/src/compiler/x87/code-generator-x87.cc |
@@ -1698,6 +1698,24 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( |
} |
break; |
} |
+ case kX87Xchgb: { |
+ size_t index = 0; |
+ Operand operand = i.MemoryOperand(&index); |
+ __ xchg_b(i.InputRegister(index), operand); |
+ break; |
+ } |
+ case kX87Xchgw: { |
+ size_t index = 0; |
+ Operand operand = i.MemoryOperand(&index); |
+ __ xchg_w(i.InputRegister(index), operand); |
+ break; |
+ } |
+ case kX87Xchgl: { |
+ size_t index = 0; |
+ Operand operand = i.MemoryOperand(&index); |
+ __ xchg(i.InputRegister(index), operand); |
+ break; |
+ } |
case kX87PushFloat32: |
__ lea(esp, Operand(esp, -kFloatSize)); |
if (instr->InputAt(0)->IsDoubleStackSlot()) { |
@@ -1771,6 +1789,9 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( |
case kAtomicLoadInt16: |
case kAtomicLoadUint16: |
case kAtomicLoadWord32: |
+ case kAtomicStoreWord8: |
+ case kAtomicStoreWord16: |
+ case kAtomicStoreWord32: |
UNREACHABLE(); // Won't be generated by instruction selector. |
break; |
} |