Changeset 290907 in webkit for trunk/Source/JavaScriptCore/assembler
- Timestamp:
- Mar 7, 2022, 1:55:08 PM (3 years ago)
- Location:
- trunk/Source/JavaScriptCore/assembler
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/assembler/ARMv7Assembler.h
r287516 r290907 584 584 OP_VMOV_CtoD = 0xEC00, 585 585 OP_VMOV_DtoC = 0xEC10, 586 OP_VSTMIA = 0xEC80, 587 OP_VLDMIA = 0xEC90, 586 588 OP_FSTS = 0xED00, 587 589 OP_VSTR = 0xED00, … … 689 691 OP_VCVTSD_T1b = 0x0A40, 690 692 OP_VCVTDS_T1b = 0x0A40, 693 OP_VSTMIAb = 0x0B00, 694 OP_VLDMIAb = 0x0B00, 691 695 OP_NOP_T2b = 0x8000, 692 696 OP_DMB_SY_T1b = 0x8F5F, … … 1926 1930 } 1927 1931 #endif 1932 1933 void vldmia(RegisterID rn, FPDoubleRegisterID rs, uint32_t count) 1934 { 1935 ASSERT(count < 16); 1936 m_formatter.vfpMemOp(OP_VLDMIA, OP_VLDMIAb, true, rn, rs, count << 3); 1937 } 1938 1939 void vstmia(RegisterID rn, FPDoubleRegisterID rs, uint32_t count) 1940 { 1941 ASSERT(count < 16); 1942 m_formatter.vfpMemOp(OP_VSTMIA, OP_VSTMIAb, true, rn, rs, count << 3); 1943 } 1928 1944 1929 1945 void vand(FPDoubleRegisterID rd, FPDoubleRegisterID rn, FPDoubleRegisterID rm) -
trunk/Source/JavaScriptCore/assembler/CPU.h
r289740 r290907 37 37 { 38 38 #if HAVE(ARM_IDIV_INSTRUCTIONS) 39 return true; 40 #else 41 return false; 42 #endif 43 } 44 45 constexpr bool isARM() 46 { 47 #if CPU(ARM) 39 48 return true; 40 49 #else -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h
r290828 r290907 935 935 } 936 936 937 void loadPair64(RegisterID src, TrustedImm32 offset, FPRegisterID dest1, FPRegisterID dest2) 938 { 939 ASSERT(dest1 != dest2); 940 if ((dest2 == (dest1 + 1)) && !offset.m_value) { 941 // Only emit a VLDMIA if the registers happen to be consecutive and 942 // in the proper order and the offset happens to be zero. Otherwise, 943 // the extra instructions to adjust things mean there are no space 944 // savings and the VLDM itself might be a performance loss. 945 m_assembler.vldmia(src, dest1, 2); 946 } else { 947 loadDouble(Address(src, offset.m_value), dest1); 948 loadDouble(Address(src, offset.m_value + 8), dest2); 949 } 950 } 951 952 void storePair64(FPRegisterID src1, FPRegisterID src2, RegisterID dest, TrustedImm32 offset) 953 { 954 if ((src2 == (src1 + 1)) && !offset.m_value) { 955 // Only emit a VSTMIA under a narrow set of conditions. See 956 // loadPair64 for the rationale. 957 m_assembler.vstmia(dest, src1, 2); 958 } else { 959 storeDouble(src1, Address(dest, offset.m_value)); 960 storeDouble(src2, Address(dest, offset.m_value + 8)); 961 } 962 } 963 937 964 void store32(RegisterID src, Address address) 938 965 {
Note:
See TracChangeset
for help on using the changeset viewer.