Chromium Code Reviews| Index: src/compiler/s390/code-generator-s390.cc |
| diff --git a/src/compiler/s390/code-generator-s390.cc b/src/compiler/s390/code-generator-s390.cc |
| index 3ebe0827482bd7bc6055c2bb7cde94cbe8dbb68a..bffdc93916f7d68991842d92678693fcb1d11012 100644 |
| --- a/src/compiler/s390/code-generator-s390.cc |
| +++ b/src/compiler/s390/code-generator-s390.cc |
| @@ -67,8 +67,8 @@ class S390OperandConverter final : public InstructionOperandConverter { |
| MemOperand MemoryOperand(AddressingMode* mode, size_t* first_index) { |
| const size_t index = *first_index; |
| - *mode = AddressingModeField::decode(instr_->opcode()); |
| - switch (*mode) { |
| + if (mode) *mode = AddressingModeField::decode(instr_->opcode()); |
| + switch (AddressingModeField::decode(instr_->opcode())) { |
| case kMode_None: |
| break; |
| case kMode_MRI: |
| @@ -82,7 +82,8 @@ class S390OperandConverter final : public InstructionOperandConverter { |
| return MemOperand(r0); |
| } |
| - MemOperand MemoryOperand(AddressingMode* mode, size_t first_index = 0) { |
| + MemOperand MemoryOperand(AddressingMode* mode = NULL, |
| + size_t first_index = 0) { |
| return MemoryOperand(mode, &first_index); |
| } |
| @@ -1660,6 +1661,22 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
| case kCheckedStoreFloat64: |
| ASSEMBLE_CHECKED_STORE_DOUBLE(); |
| break; |
| + case kAtomicLoadInt8: |
| + __ LoadB(i.OutputRegister(), i.MemoryOperand()); |
| + break; |
| + case kAtomicLoadUint8: |
| + __ LoadlB(i.OutputRegister(), i.MemoryOperand()); |
| + break; |
| + case kAtomicLoadInt16: |
| + __ LoadHalfWordP(i.OutputRegister(), i.MemoryOperand()); |
| + break; |
| + case kAtomicLoadUint16: |
| + // ASSEMBLE_ATOMIC_LOAD_INTEGER(lhz, lhzx); |
|
JoranSiu
2016/04/19 21:02:49
Can we remove this unnecessary comment?
|
| + __ llgh(i.OutputRegister(), i.MemoryOperand()); |
|
JoranSiu
2016/04/19 21:02:49
Should this be calling LoadLogicialHalfwordP (i.e.
|
| + break; |
| + case kAtomicLoadWord32: |
| + __ lgf(i.OutputRegister(), i.MemoryOperand()); |
|
JoranSiu
2016/04/19 21:02:49
Should this be Load(): L on 31-bit, LGF on 64-bit
|
| + break; |
| default: |
| UNREACHABLE(); |
| break; |