| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 // | 4 // |
| 5 // This is forked from Dart revision df52deea9f25690eb8b66c5995da92b70f7ac1fe | 5 // This is forked from Dart revision df52deea9f25690eb8b66c5995da92b70f7ac1fe |
| 6 // Please update the (git) revision if we merge changes from Dart. | 6 // Please update the (git) revision if we merge changes from Dart. |
| 7 // https://code.google.com/p/dart/wiki/GettingTheSource | 7 // https://code.google.com/p/dart/wiki/GettingTheSource |
| 8 | 8 |
| 9 #include "vm/globals.h" // NOLINT | 9 #include "vm/globals.h" // NOLINT |
| 10 #if defined(TARGET_ARCH_ARM) | 10 #if defined(TARGET_ARCH_ARM) |
| (...skipping 910 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 921 | 921 |
| 922 void Assembler::vmovs(SRegister sd, SRegister sm, Condition cond) { | 922 void Assembler::vmovs(SRegister sd, SRegister sm, Condition cond) { |
| 923 EmitVFPsss(cond, B23 | B21 | B20 | B6, sd, S0, sm); | 923 EmitVFPsss(cond, B23 | B21 | B20 | B6, sd, S0, sm); |
| 924 } | 924 } |
| 925 | 925 |
| 926 | 926 |
| 927 void Assembler::vmovd(DRegister dd, DRegister dm, Condition cond) { | 927 void Assembler::vmovd(DRegister dd, DRegister dm, Condition cond) { |
| 928 EmitVFPddd(cond, B23 | B21 | B20 | B6, dd, D0, dm); | 928 EmitVFPddd(cond, B23 | B21 | B20 | B6, dd, D0, dm); |
| 929 } | 929 } |
| 930 | 930 |
| 931 | 931 #if 0 |
| 932 // Moved to Arm32::AssemblerARM32::vmovs() |
| 932 bool Assembler::vmovs(SRegister sd, float s_imm, Condition cond) { | 933 bool Assembler::vmovs(SRegister sd, float s_imm, Condition cond) { |
| 933 if (TargetCPUFeatures::arm_version() != ARMv7) { | 934 if (TargetCPUFeatures::arm_version() != ARMv7) { |
| 934 return false; | 935 return false; |
| 935 } | 936 } |
| 936 uint32_t imm32 = bit_cast<uint32_t, float>(s_imm); | 937 uint32_t imm32 = bit_cast<uint32_t, float>(s_imm); |
| 937 if (((imm32 & ((1 << 19) - 1)) == 0) && | 938 if (((imm32 & ((1 << 19) - 1)) == 0) && |
| 938 ((((imm32 >> 25) & ((1 << 6) - 1)) == (1 << 5)) || | 939 ((((imm32 >> 25) & ((1 << 6) - 1)) == (1 << 5)) || |
| 939 (((imm32 >> 25) & ((1 << 6) - 1)) == ((1 << 5) -1)))) { | 940 (((imm32 >> 25) & ((1 << 6) - 1)) == ((1 << 5) -1)))) { |
| 940 uint8_t imm8 = ((imm32 >> 31) << 7) | (((imm32 >> 29) & 1) << 6) | | 941 uint8_t imm8 = ((imm32 >> 31) << 7) | (((imm32 >> 29) & 1) << 6) | |
| 941 ((imm32 >> 19) & ((1 << 6) -1)); | 942 ((imm32 >> 19) & ((1 << 6) -1)); |
| 942 EmitVFPsss(cond, B23 | B21 | B20 | ((imm8 >> 4)*B16) | (imm8 & 0xf), | 943 EmitVFPsss(cond, B23 | B21 | B20 | ((imm8 >> 4)*B16) | (imm8 & 0xf), |
| 943 sd, S0, S0); | 944 sd, S0, S0); |
| 944 return true; | 945 return true; |
| 945 } | 946 } |
| 946 return false; | 947 return false; |
| 947 } | 948 } |
| 948 | 949 |
| 949 | 950 // Moved to Arm32::AssemblerARM32::vmovd() |
| 950 bool Assembler::vmovd(DRegister dd, double d_imm, Condition cond) { | 951 bool Assembler::vmovd(DRegister dd, double d_imm, Condition cond) { |
| 951 if (TargetCPUFeatures::arm_version() != ARMv7) { | 952 if (TargetCPUFeatures::arm_version() != ARMv7) { |
| 952 return false; | 953 return false; |
| 953 } | 954 } |
| 954 uint64_t imm64 = bit_cast<uint64_t, double>(d_imm); | 955 uint64_t imm64 = bit_cast<uint64_t, double>(d_imm); |
| 955 if (((imm64 & ((1LL << 48) - 1)) == 0) && | 956 if (((imm64 & ((1LL << 48) - 1)) == 0) && |
| 956 ((((imm64 >> 54) & ((1 << 9) - 1)) == (1 << 8)) || | 957 ((((imm64 >> 54) & ((1 << 9) - 1)) == (1 << 8)) || |
| 957 (((imm64 >> 54) & ((1 << 9) - 1)) == ((1 << 8) -1)))) { | 958 (((imm64 >> 54) & ((1 << 9) - 1)) == ((1 << 8) -1)))) { |
| 958 uint8_t imm8 = ((imm64 >> 63) << 7) | (((imm64 >> 61) & 1) << 6) | | 959 uint8_t imm8 = ((imm64 >> 63) << 7) | (((imm64 >> 61) & 1) << 6) | |
| 959 ((imm64 >> 48) & ((1 << 6) -1)); | 960 ((imm64 >> 48) & ((1 << 6) -1)); |
| 960 EmitVFPddd(cond, B23 | B21 | B20 | ((imm8 >> 4)*B16) | B8 | (imm8 & 0xf), | 961 EmitVFPddd(cond, B23 | B21 | B20 | ((imm8 >> 4)*B16) | B8 | (imm8 & 0xf), |
| 961 dd, D0, D0); | 962 dd, D0, D0); |
| 962 return true; | 963 return true; |
| 963 } | 964 } |
| 964 return false; | 965 return false; |
| 965 } | 966 } |
| 966 | 967 |
| 967 #if 0 | |
| 968 // Moved to Arm32::AssemblerARM32::vadds() | 968 // Moved to Arm32::AssemblerARM32::vadds() |
| 969 void Assembler::vadds(SRegister sd, SRegister sn, SRegister sm, | 969 void Assembler::vadds(SRegister sd, SRegister sn, SRegister sm, |
| 970 Condition cond) { | 970 Condition cond) { |
| 971 EmitVFPsss(cond, B21 | B20, sd, sn, sm); | 971 EmitVFPsss(cond, B21 | B20, sd, sn, sm); |
| 972 } | 972 } |
| 973 | 973 |
| 974 // Moved to Arm32::AssemblerARM32::vaddd() | 974 // Moved to Arm32::AssemblerARM32::vaddd() |
| 975 void Assembler::vaddd(DRegister dd, DRegister dn, DRegister dm, | 975 void Assembler::vaddd(DRegister dd, DRegister dn, DRegister dm, |
| 976 Condition cond) { | 976 Condition cond) { |
| 977 EmitVFPddd(cond, B21 | B20, dd, dn, dm); | 977 EmitVFPddd(cond, B21 | B20, dd, dn, dm); |
| (...skipping 2710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3688 | 3688 |
| 3689 | 3689 |
| 3690 const char* Assembler::FpuRegisterName(FpuRegister reg) { | 3690 const char* Assembler::FpuRegisterName(FpuRegister reg) { |
| 3691 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters)); | 3691 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters)); |
| 3692 return fpu_reg_names[reg]; | 3692 return fpu_reg_names[reg]; |
| 3693 } | 3693 } |
| 3694 | 3694 |
| 3695 } // namespace dart | 3695 } // namespace dart |
| 3696 | 3696 |
| 3697 #endif // defined TARGET_ARCH_ARM | 3697 #endif // defined TARGET_ARCH_ARM |
| OLD | NEW |