Chromium Code Reviews| Index: src/compiler/ia32/code-generator-ia32.cc |
| diff --git a/src/compiler/ia32/code-generator-ia32.cc b/src/compiler/ia32/code-generator-ia32.cc |
| index 1a7bed140788d164911bd8a9fc22134bef1a1af4..f144ccf5334acbc5969d48ccabf715ee636ca613 100644 |
| --- a/src/compiler/ia32/code-generator-ia32.cc |
| +++ b/src/compiler/ia32/code-generator-ia32.cc |
| @@ -1888,24 +1888,6 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( |
| } |
| break; |
| } |
| - case kIA32Xchgb: { |
| - size_t index = 0; |
| - Operand operand = i.MemoryOperand(&index); |
| - __ xchg_b(i.InputRegister(index), operand); |
| - break; |
| - } |
| - case kIA32Xchgw: { |
| - size_t index = 0; |
| - Operand operand = i.MemoryOperand(&index); |
| - __ xchg_w(i.InputRegister(index), operand); |
| - break; |
| - } |
| - case kIA32Xchgl: { |
| - size_t index = 0; |
| - Operand operand = i.MemoryOperand(&index); |
| - __ xchg(i.InputRegister(index), operand); |
| - break; |
| - } |
| case kCheckedLoadInt8: |
| ASSEMBLE_CHECKED_LOAD_INTEGER(movsx_b); |
| break; |
| @@ -1952,6 +1934,40 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( |
| case kCheckedStoreWord64: |
| UNREACHABLE(); // currently unsupported checked int64 load/store. |
| break; |
| +#define EXCHANGE_OPERANDS \ |
| + size_t index = 0; \ |
| + Register r = i.InputRegister(index++); \ |
| + Operand operand = i.MemoryOperand(&index); |
|
binji
2017/02/22 02:08:38
looks like if index is not used afterward it is si
aseemgarg
2017/02/22 03:29:02
Done.
|
| + case kAtomicExchangeInt8: { |
| + EXCHANGE_OPERANDS |
| + __ xchg_b(r, operand); |
| + __ movsx_b(r, r); |
| + break; |
| + } |
| + case kAtomicExchangeUint8: { |
| + EXCHANGE_OPERANDS |
| + __ xchg_b(r, operand); |
| + __ movzx_b(r, r); |
| + break; |
| + } |
| + case kAtomicExchangeInt16: { |
| + EXCHANGE_OPERANDS |
| + __ xchg_w(r, operand); |
| + __ movsx_w(r, r); |
| + break; |
| + } |
| + case kAtomicExchangeUint16: { |
| + EXCHANGE_OPERANDS |
| + __ xchg_w(r, operand); |
| + __ movzx_w(r, r); |
| + break; |
| + } |
| + case kAtomicExchangeWord32: { |
| + EXCHANGE_OPERANDS |
| + __ xchg(r, operand); |
| + break; |
| + } |
| +#undef EXCHANGE_OPERANDS |
| case kAtomicLoadInt8: |
| case kAtomicLoadUint8: |
| case kAtomicLoadInt16: |