| Index: src/a64/lithium-codegen-a64.cc
|
| diff --git a/src/a64/lithium-codegen-a64.cc b/src/a64/lithium-codegen-a64.cc
|
| index fea4db7ffd9ae7418c297ce9680979e8e391aed8..c0bd142dd1bae4e74981d195b0f236851a1dbfda 100644
|
| --- a/src/a64/lithium-codegen-a64.cc
|
| +++ b/src/a64/lithium-codegen-a64.cc
|
| @@ -2231,6 +2231,30 @@ void LCodeGen::DoClampTToUint8(LClampTToUint8* instr) {
|
| }
|
|
|
|
|
| +void LCodeGen::DoDoubleBits(LDoubleBits* instr) {
|
| + DoubleRegister value_reg = ToDoubleRegister(instr->value());
|
| + Register result_reg = ToRegister(instr->result());
|
| + if (instr->hydrogen()->bits() == HDoubleBits::HIGH) {
|
| + __ Fmov(result_reg, value_reg);
|
| + __ Mov(result_reg, Operand(result_reg, LSR, 32));
|
| + } else {
|
| + __ Fmov(result_reg.W(), value_reg.S());
|
| + }
|
| +}
|
| +
|
| +
|
| +void LCodeGen::DoConstructDouble(LConstructDouble* instr) {
|
| + Register hi_reg = ToRegister(instr->hi());
|
| + Register lo_reg = ToRegister(instr->lo());
|
| + Register temp = ToRegister(instr->temp());
|
| + DoubleRegister result_reg = ToDoubleRegister(instr->result());
|
| +
|
| + __ And(temp, lo_reg, Operand(0xffffffff));
|
| + __ Orr(temp, temp, Operand(hi_reg, LSL, 32));
|
| + __ Fmov(result_reg, temp);
|
| +}
|
| +
|
| +
|
| void LCodeGen::DoClassOfTestAndBranch(LClassOfTestAndBranch* instr) {
|
| Handle<String> class_name = instr->hydrogen()->class_name();
|
| Label* true_label = instr->TrueLabel(chunk_);
|
|
|