Changeset 260680 in webkit for trunk/Source/JavaScriptCore/offlineasm
- Timestamp:
- Apr 24, 2020, 4:35:02 PM (5 years ago)
- Location:
- trunk/Source/JavaScriptCore/offlineasm
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/offlineasm/arm64.rb
r252422 r260680 352 352 end 353 353 354 # Workaround for Cortex-A53 erratum (835769)355 def arm64CortexA53Fix835769(list)356 newList = []357 lastOpcodeUnsafe = false358 359 list.each {360 | node |361 if node.is_a? Instruction362 case node.opcode363 when /^store/, /^load/364 # List all macro instructions that can be lowered to a load, store or prefetch ARM64 assembly instruction365 lastOpcodeUnsafe = true366 when "muli", "mulp", "mulq", "smulli"367 # List all macro instructions that can be lowered to a 64-bit multiply-accumulate ARM64 assembly instruction368 # (defined as one of MADD, MSUB, SMADDL, SMSUBL, UMADDL or UMSUBL).369 if lastOpcodeUnsafe370 newList << Instruction.new(node.codeOrigin, "nopCortexA53Fix835769", [])371 end372 lastOpcodeUnsafe = false373 else374 lastOpcodeUnsafe = false375 end376 end377 newList << node378 }379 newList380 end381 382 354 class Sequence 383 355 def getModifiedListARM64(result = @list) … … 471 443 result = assignRegistersToTemporaries(result, :gpr, ARM64_EXTRA_GPRS) 472 444 result = assignRegistersToTemporaries(result, :fpr, ARM64_EXTRA_FPRS) 473 result = arm64CortexA53Fix835769(result)474 445 return result 475 446 end … … 1116 1087 when "pcrtoaddr" 1117 1088 $asm.puts "adr #{operands[1].arm64Operand(:quad)}, #{operands[0].value}" 1118 when "nopCortexA53Fix835769"1119 $asm.putStr("#if CPU(ARM64_CORTEXA53)")1120 $asm.puts "nop"1121 $asm.putStr("#endif")1122 1089 when "globaladdr" 1123 1090 uid = $asm.newUID -
trunk/Source/JavaScriptCore/offlineasm/instructions.rb
r252422 r260680 355 355 "bfiq", # Bit field insert <source reg> <last bit written> <width immediate> <dest reg> 356 356 "pcrtoaddr", # Address from PC relative offset - adr instruction 357 "nopFixCortexA53Err835769", # nop on Cortex-A53 (nothing otherwise)358 357 "globaladdr", 359 358 "divi",
Note:
See TracChangeset
for help on using the changeset viewer.