Index: src/compiler/mips64/code-generator-mips64.cc |
diff --git a/src/compiler/mips64/code-generator-mips64.cc b/src/compiler/mips64/code-generator-mips64.cc |
index 190001228c091c620fd501dc63800ff9745efeb3..ec290c2b4e3e06617ca982a45b94ba05df846a3d 100644 |
--- a/src/compiler/mips64/code-generator-mips64.cc |
+++ b/src/compiler/mips64/code-generator-mips64.cc |
@@ -685,6 +685,22 @@ void CodeGenerator::AssembleArchInstruction(Instruction* instr) { |
__ Trunc_uw_d(i.InputDoubleRegister(0), i.OutputRegister(), scratch); |
break; |
} |
+ case kMips64FmoveLowUwD: |
+ __ FmoveLow(i.OutputRegister(), i.InputDoubleRegister(0)); |
+ // remove sign. |
+ __ li(at, Operand(32)); |
+ __ dsllv(i.OutputRegister(), i.OutputRegister(), at); |
+ __ dsrlv(i.OutputRegister(), i.OutputRegister(), at); |
paul.l...
2015/03/05 17:40:48
You can avoid the load and use of 'at' register he
balazs.kilvady
2015/03/05 18:07:08
Thanks, I modify it. Anyway test are passed withou
paul.l...
2015/03/05 18:43:49
Let's leave the shifts to strip sign extension for
|
+ break; |
+ case kMips64FmoveLowDUw: |
+ __ FmoveLow(i.OutputDoubleRegister(), i.InputRegister(1)); |
+ break; |
+ case kMips64FmoveHighUwD: |
+ __ FmoveHigh(i.OutputRegister(), i.InputDoubleRegister(0)); |
+ break; |
+ case kMips64FmoveHighDUw: |
+ __ FmoveHigh(i.OutputDoubleRegister(), i.InputRegister(1)); |
+ break; |
// ... more basic instructions ... |
case kMips64Lbu: |