Changeset 252728 in webkit for trunk/Source/JavaScriptCore/assembler
- Timestamp:
- Nov 20, 2019, 10:02:50 PM (6 years ago)
- Location:
- trunk/Source/JavaScriptCore/assembler
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
r252699 r252728 1255 1255 void load16(const void* address, RegisterID dest) 1256 1256 { 1257 moveToCachedReg(TrustedImmPtr(address), cachedMemoryTempRegister()); 1258 m_assembler.ldrh(dest, memoryTempRegister, 0); 1257 load<16>(address, dest); 1259 1258 } 1260 1259 … … 1569 1568 void store16(RegisterID src, const void* address) 1570 1569 { 1571 moveToCachedReg(TrustedImmPtr(address), cachedMemoryTempRegister()); 1572 m_assembler.strh(src, memoryTempRegister, 0); 1570 store<16>(src, address); 1573 1571 } 1574 1572 … … 4221 4219 if (isInt<32>(addressDelta)) { 4222 4220 if (Assembler::canEncodeSImmOffset(addressDelta)) { 4223 m_assembler.ldur<datasize>(dest,memoryTempRegister, addressDelta);4221 loadUnscaledImmediate<datasize>(dest, memoryTempRegister, addressDelta); 4224 4222 return; 4225 4223 } 4226 4224 4227 4225 if (Assembler::canEncodePImmOffset<datasize>(addressDelta)) { 4228 m_assembler.ldr<datasize>(dest,memoryTempRegister, addressDelta);4226 loadUnsignedImmediate<datasize>(dest, memoryTempRegister, addressDelta); 4229 4227 return; 4230 4228 } … … 4234 4232 m_assembler.movk<64>(memoryTempRegister, addressAsInt & maskHalfWord0, 0); 4235 4233 cachedMemoryTempRegister().setValue(reinterpret_cast<intptr_t>(address)); 4236 m_assembler.ldr<datasize>(dest, memoryTempRegister, ARM64Registers::zr); 4234 if constexpr (datasize == 16) 4235 m_assembler.ldrh(dest, memoryTempRegister, ARM64Registers::zr); 4236 else 4237 m_assembler.ldr<datasize>(dest, memoryTempRegister, ARM64Registers::zr); 4237 4238 return; 4238 4239 } … … 4244 4245 else 4245 4246 cachedMemoryTempRegister().setValue(reinterpret_cast<intptr_t>(address)); 4246 m_assembler.ldr<datasize>(dest, memoryTempRegister, ARM64Registers::zr); 4247 if constexpr (datasize == 16) 4248 m_assembler.ldrh(dest, memoryTempRegister, ARM64Registers::zr); 4249 else 4250 m_assembler.ldr<datasize>(dest, memoryTempRegister, ARM64Registers::zr); 4247 4251 } 4248 4252 … … 4258 4262 if (isInt<32>(addressDelta)) { 4259 4263 if (Assembler::canEncodeSImmOffset(addressDelta)) { 4260 m_assembler.stur<datasize>(src, memoryTempRegister, addressDelta);4264 storeUnscaledImmediate<datasize>(src, memoryTempRegister, addressDelta); 4261 4265 return; 4262 4266 } 4263 4267 4264 4268 if (Assembler::canEncodePImmOffset<datasize>(addressDelta)) { 4265 m_assembler.str<datasize>(src, memoryTempRegister, addressDelta);4269 storeUnsignedImmediate<datasize>(src, memoryTempRegister, addressDelta); 4266 4270 return; 4267 4271 } … … 4271 4275 m_assembler.movk<64>(memoryTempRegister, addressAsInt & maskHalfWord0, 0); 4272 4276 cachedMemoryTempRegister().setValue(reinterpret_cast<intptr_t>(address)); 4273 m_assembler.str<datasize>(src, memoryTempRegister, ARM64Registers::zr); 4277 if constexpr (datasize == 16) 4278 m_assembler.strh(src, memoryTempRegister, ARM64Registers::zr); 4279 else 4280 m_assembler.str<datasize>(src, memoryTempRegister, ARM64Registers::zr); 4274 4281 return; 4275 4282 } … … 4278 4285 move(TrustedImmPtr(address), memoryTempRegister); 4279 4286 cachedMemoryTempRegister().setValue(reinterpret_cast<intptr_t>(address)); 4280 m_assembler.str<datasize>(src, memoryTempRegister, ARM64Registers::zr); 4287 if constexpr (datasize == 16) 4288 m_assembler.strh(src, memoryTempRegister, ARM64Registers::zr); 4289 else 4290 m_assembler.str<datasize>(src, memoryTempRegister, ARM64Registers::zr); 4281 4291 } 4282 4292 -
trunk/Source/JavaScriptCore/assembler/testmasm.cpp
r252422 r252728 1128 1128 invoke<void>(or16); 1129 1129 CHECK_EQ(memoryLocation, 0x12341234 | 42); 1130 1131 memoryLocation = 0x12341234; 1132 auto or16InvalidLogicalImmInARM64 = compile([&] (CCallHelpers& jit) { 1133 emitFunctionPrologue(jit); 1134 jit.or16(CCallHelpers::TrustedImm32(0), CCallHelpers::AbsoluteAddress(&memoryLocation)); 1135 emitFunctionEpilogue(jit); 1136 jit.ret(); 1137 }); 1138 invoke<void>(or16InvalidLogicalImmInARM64); 1139 CHECK_EQ(memoryLocation, 0x12341234); 1130 1140 } 1131 1141
Note:
See TracChangeset
for help on using the changeset viewer.