Index: src/arm/macro-assembler-arm.cc |
diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc |
index 49e534a346861562fe1a3e942a11bf7029154faa..8d87db283f1a4d3ec9becfa340b9ce8e6b8327af 100644 |
--- a/src/arm/macro-assembler-arm.cc |
+++ b/src/arm/macro-assembler-arm.cc |
@@ -1162,6 +1162,15 @@ void MacroAssembler::ExtractLane(Register dst, QwNeonRegister src, |
vmov(dt, dst, double_source, double_lane); |
} |
+void MacroAssembler::ExtractLane(Register dst, DwVfpRegister src, |
+ NeonDataType dt, int lane) { |
+ int size = NeonSz(dt); // 0, 1, 2 |
+ int byte = lane << size; |
+ int double_byte = byte & (kDoubleSize - 1); |
+ int double_lane = double_byte >> size; |
+ vmov(dt, dst, src, double_lane); |
+} |
+ |
void MacroAssembler::ExtractLane(SwVfpRegister dst, QwNeonRegister src, |
Register scratch, int lane) { |
int s_code = src.code() * 4 + lane; |