Index: src/arm/assembler-arm.h |
diff --git a/src/arm/assembler-arm.h b/src/arm/assembler-arm.h |
index 9adf3095573acbd7195492d2f7a5669884469df9..25e7d7488d255390e7db9f741f8ff89223734716 100644 |
--- a/src/arm/assembler-arm.h |
+++ b/src/arm/assembler-arm.h |
@@ -180,11 +180,14 @@ struct SwVfpRegister { |
SwVfpRegister r = {code}; |
return r; |
} |
- void split_code(int* vm, int* m) const { |
- DCHECK(is_valid()); |
+ static void split_code(int reg_code, int* vm, int* m) { |
+ DCHECK(from_code(reg_code).is_valid()); |
*m = reg_code & 0x1; |
*vm = reg_code >> 1; |
} |
+ void split_code(int* vm, int* m) const { |
+ split_code(reg_code, vm, m); |
+ } |
int reg_code; |
}; |
@@ -226,11 +229,14 @@ struct DwVfpRegister { |
DwVfpRegister r = {code}; |
return r; |
} |
- void split_code(int* vm, int* m) const { |
- DCHECK(is_valid()); |
+ static void split_code(int reg_code, int* vm, int* m) { |
+ DCHECK(from_code(reg_code).is_valid()); |
*m = (reg_code & 0x10) >> 4; |
*vm = reg_code & 0x0F; |
} |
+ void split_code(int* vm, int* m) const { |
+ split_code(reg_code, vm, m); |
+ } |
int reg_code; |
}; |
@@ -296,12 +302,15 @@ struct QwNeonRegister { |
DCHECK(is_valid()); |
return reg_code; |
} |
- void split_code(int* vm, int* m) const { |
- DCHECK(is_valid()); |
+ static void split_code(int reg_code, int* vm, int* m) { |
+ DCHECK(from_code(reg_code).is_valid()); |
int encoded_code = reg_code << 1; |
*m = (encoded_code & 0x10) >> 4; |
*vm = encoded_code & 0x0F; |
} |
+ void split_code(int* vm, int* m) const { |
+ split_code(reg_code, vm, m); |
+ } |
DwVfpRegister low() const { |
DwVfpRegister reg; |
reg.reg_code = reg_code * 2; |
@@ -1315,27 +1324,27 @@ class Assembler : public AssemblerBase { |
void vmov(NeonDataType dt, DwVfpRegister dst, int index, Register src); |
void vmov(NeonDataType dt, Register dst, DwVfpRegister src, int index); |
- void vmov(const QwNeonRegister dst, const QwNeonRegister src); |
- void vmvn(const QwNeonRegister dst, const QwNeonRegister src); |
+ void vmov(QwNeonRegister dst, QwNeonRegister src); |
+ void vdup(NeonSize size, QwNeonRegister dst, Register src); |
+ void vdup(QwNeonRegister dst, SwVfpRegister src); |
+ |
+ void vcvt_f32_s32(QwNeonRegister dst, QwNeonRegister src); |
+ void vcvt_f32_u32(QwNeonRegister dst, QwNeonRegister src); |
+ void vcvt_s32_f32(QwNeonRegister dst, QwNeonRegister src); |
+ void vcvt_u32_f32(QwNeonRegister dst, QwNeonRegister src); |
+ |
+ void vmvn(QwNeonRegister dst, QwNeonRegister src); |
void vswp(DwVfpRegister dst, DwVfpRegister src); |
void vswp(QwNeonRegister dst, QwNeonRegister src); |
- // vdup conditional execution isn't supported. |
- void vdup(NeonSize size, const QwNeonRegister dst, const Register src); |
- void vdup(const QwNeonRegister dst, const SwVfpRegister src); |
- |
- void vcvt_f32_s32(const QwNeonRegister dst, const QwNeonRegister src); |
- void vcvt_f32_u32(const QwNeonRegister dst, const QwNeonRegister src); |
- void vcvt_s32_f32(const QwNeonRegister dst, const QwNeonRegister src); |
- void vcvt_u32_f32(const QwNeonRegister dst, const QwNeonRegister src); |
- |
- void vabs(const QwNeonRegister dst, const QwNeonRegister src); |
- void vabs(NeonSize size, const QwNeonRegister dst, const QwNeonRegister src); |
- void vneg(const QwNeonRegister dst, const QwNeonRegister src); |
- void vneg(NeonSize size, const QwNeonRegister dst, const QwNeonRegister src); |
- void veor(DwVfpRegister dst, DwVfpRegister src1, DwVfpRegister src2); |
+ void vabs(QwNeonRegister dst, QwNeonRegister src); |
+ void vabs(NeonSize size, QwNeonRegister dst, QwNeonRegister src); |
+ void vneg(QwNeonRegister dst, QwNeonRegister src); |
+ void vneg(NeonSize size, QwNeonRegister dst, QwNeonRegister src); |
+ |
void vand(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
- void vbsl(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
+ void veor(DwVfpRegister dst, DwVfpRegister src1, DwVfpRegister src2); |
void veor(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
+ void vbsl(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
void vorr(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
void vadd(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
void vadd(NeonSize size, QwNeonRegister dst, QwNeonRegister src1, |
@@ -1374,24 +1383,23 @@ class Assembler : public AssemblerBase { |
void vceq(NeonSize size, QwNeonRegister dst, QwNeonRegister src1, |
QwNeonRegister src2); |
void vcge(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
- void vcge(NeonDataType dt, QwNeonRegister dst, |
- QwNeonRegister src1, QwNeonRegister src2); |
+ void vcge(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src1, |
+ QwNeonRegister src2); |
void vcgt(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2); |
- void vcgt(NeonDataType dt, QwNeonRegister dst, |
- QwNeonRegister src1, QwNeonRegister src2); |
- void vext(const QwNeonRegister dst, const QwNeonRegister src1, |
- const QwNeonRegister src2, int bytes); |
- void vzip(NeonSize size, const QwNeonRegister dst, const QwNeonRegister src); |
- void vrev16(NeonSize size, const QwNeonRegister dst, |
- const QwNeonRegister src); |
- void vrev32(NeonSize size, const QwNeonRegister dst, |
- const QwNeonRegister src); |
- void vrev64(NeonSize size, const QwNeonRegister dst, |
- const QwNeonRegister src); |
- void vtbl(const DwVfpRegister dst, const NeonListOperand& list, |
- const DwVfpRegister index); |
- void vtbx(const DwVfpRegister dst, const NeonListOperand& list, |
- const DwVfpRegister index); |
+ void vcgt(NeonDataType dt, QwNeonRegister dst, QwNeonRegister src1, |
+ QwNeonRegister src2); |
+ void vext(QwNeonRegister dst, QwNeonRegister src1, QwNeonRegister src2, |
+ int bytes); |
+ void vzip(NeonSize size, QwNeonRegister src1, QwNeonRegister src2); |
+ void vuzp(NeonSize size, QwNeonRegister src1, QwNeonRegister src2); |
+ void vrev16(NeonSize size, QwNeonRegister dst, QwNeonRegister src); |
+ void vrev32(NeonSize size, QwNeonRegister dst, QwNeonRegister src); |
+ void vrev64(NeonSize size, QwNeonRegister dst, QwNeonRegister src); |
+ void vtrn(NeonSize size, QwNeonRegister src1, QwNeonRegister src2); |
+ void vtbl(DwVfpRegister dst, const NeonListOperand& list, |
+ DwVfpRegister index); |
+ void vtbx(DwVfpRegister dst, const NeonListOperand& list, |
+ DwVfpRegister index); |
// Pseudo instructions |