Changeset 240241 in webkit for trunk/Source/JavaScriptCore/offlineasm
- Timestamp:
- Jan 21, 2019, 12:50:59 PM (6 years ago)
- Location:
- trunk/Source/JavaScriptCore/offlineasm
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/offlineasm/arm64.rb
r237627 r240241 461 461 462 462 if operands[0].immediate? 463 if operands[0].value == 0 and flag!~ /s$/464 unless operands[1] == operands[2]463 if operands[0].value == 0 and opcode !~ /s$/ 464 if operands[1] != operands[2] 465 465 $asm.puts "mov #{arm64FlippedOperands(operands[1..2], kind)}" 466 466 end … … 495 495 496 496 $asm.puts "madd #{arm64TACOperands(operands, kind)}, #{arm64GPRName('xzr', kind)}" 497 end 498 499 def emitARM64Sub(opcode, operands, kind) 500 if operands.size == 3 501 raise unless operands[0].register? 502 raise unless operands[2].register? 503 504 if operands[1].immediate? 505 if operands[1].value == 0 and opcode !~ /s$/ 506 if operands[0] != operands[2] 507 $asm.puts "mov #{arm64FlippedOperands([operands[0], operands[2]], kind)}" 508 end 509 return 510 end 511 end 512 end 513 514 if operands.size == 2 515 if operands[0].immediate? and operands[0].value == 0 and opcode !~ /s$/ 516 return 517 end 518 end 519 520 emitARM64TAC(opcode, operands, kind) 497 521 end 498 522 … … 656 680 emitARM64Mul('mul', operands, :quad) 657 681 when "subi" 658 emitARM64 TAC("sub", operands, :word)682 emitARM64Sub("sub", operands, :word) 659 683 when "subp" 660 emitARM64 TAC("sub", operands, :ptr)684 emitARM64Sub("sub", operands, :ptr) 661 685 when "subq" 662 emitARM64 TAC("sub", operands, :quad)686 emitARM64Sub("sub", operands, :quad) 663 687 when "subis" 664 emitARM64 TAC("subs", operands, :word)688 emitARM64Sub("subs", operands, :word) 665 689 when "negi" 666 690 $asm.puts "sub #{operands[0].arm64Operand(:word)}, wzr, #{operands[0].arm64Operand(:word)}" -
trunk/Source/JavaScriptCore/offlineasm/x86.rb
r237627 r240241 762 762 raise unless operands[2].is_a? RegisterID 763 763 if operands[0].value == 0 764 unless operands[1] == operands[2]764 if operands[1] != operands[2] 765 765 $asm.puts "mov#{x86Suffix(kind)} #{orderOperands(operands[1].x86Operand(kind), operands[2].x86Operand(kind))}" 766 766 end … … 788 788 789 789 def handleX86Sub(kind) 790 if operands.size == 3 and operands[1] == operands[2] 791 $asm.puts "neg#{x86Suffix(kind)} #{operands[2].x86Operand(kind)}" 792 $asm.puts "add#{x86Suffix(kind)} #{orderOperands(operands[0].x86Operand(kind), operands[2].x86Operand(kind))}" 793 else 794 handleX86Op("sub#{x86Suffix(kind)}", kind) 795 end 790 if operands.size == 3 791 if Immediate.new(nil, 0) == operands[1] 792 raise unless operands[0].is_a? RegisterID 793 raise unless operands[2].is_a? RegisterID 794 if operands[0] != operands[2] 795 $asm.puts "mov#{x86Suffix(kind)} #{orderOperands(operands[0].x86Operand(kind), operands[2].x86Operand(kind))}" 796 end 797 return 798 end 799 if operands[1] == operands[2] 800 $asm.puts "neg#{x86Suffix(kind)} #{operands[2].x86Operand(kind)}" 801 if Immediate.new(nil, 0) != operands[0] 802 $asm.puts "add#{x86Suffix(kind)} #{orderOperands(operands[0].x86Operand(kind), operands[2].x86Operand(kind))}" 803 end 804 return 805 end 806 end 807 808 if operands.size == 2 809 if Immediate.new(nil, 0) == operands[0] 810 return 811 end 812 end 813 814 handleX86Op("sub#{x86Suffix(kind)}", kind) 796 815 end 797 816
Note:
See TracChangeset
for help on using the changeset viewer.