Changeset 279343 in webkit for trunk/Source/JavaScriptCore/offlineasm
- Timestamp:
- Jun 28, 2021, 10:55:12 AM (4 years ago)
- Location:
- trunk/Source/JavaScriptCore/offlineasm
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/offlineasm/arm.rb
r267371 r279343 373 373 $asm.puts "tst #{value.armOperand}, #{mask.armOperand}" 374 374 end 375 end 376 377 def emitArmDoubleCompare(operands, code) 378 $asm.puts "mov #{operands[2].armOperand}, \#0" 379 $asm.puts "vcmpe.f64 #{armOperands(operands[0..1])}" 380 $asm.puts "vmrs APSR_nzcv, FPSCR" 381 $asm.puts "it #{code}" 382 $asm.puts "mov#{code} #{operands[2].armOperand}, \#1" 375 383 end 376 384 … … 642 650 when "cilteq", "cplteq", "cblteq" 643 651 emitArmCompare(operands, "le") 652 when "cdgt" 653 emitArmDoubleCompare(operands, "gt") 654 when "cdgteq" 655 emitArmDoubleCompare(operands, "ge") 656 when "cdlt" 657 emitArmDoubleCompare(operands, "mi") 658 when "cdlteq" 659 emitArmDoubleCompare(operands, "ls") 644 660 when "tis", "tbs", "tps" 645 661 emitArmTestSet(operands, "mi") -
trunk/Source/JavaScriptCore/offlineasm/cloop.rb
r270265 r279343 959 959 when "cpgt" 960 960 cloopEmitCompareAndSet(operands, :intptr, ">") 961 when "cdgt" 962 cloopEmitCompareAndSet(operands, :double, ">") 961 963 962 964 when "cbgteq" … … 968 970 when "cpgteq" 969 971 cloopEmitCompareAndSet(operands, :intptr, ">=") 972 when "cdgteq" 973 cloopEmitCompareAndSet(operands, :double, ">=") 970 974 971 975 when "cblt" … … 977 981 when "cplt" 978 982 cloopEmitCompareAndSet(operands, :intptr, "<") 983 when "cdlt" 984 cloopEmitCompareAndSet(operands, :double, "<") 979 985 980 986 when "cblteq" … … 986 992 when "cplteq" 987 993 cloopEmitCompareAndSet(operands, :intptr, "<=") 994 when "cdlteq" 995 cloopEmitCompareAndSet(operands, :double, "<=") 988 996 989 997 when "tbs" -
trunk/Source/JavaScriptCore/offlineasm/mips.rb
r269349 r279343 805 805 raise unless operands.size == 2 806 806 $asm.puts "#{opcode} #{operands[1].mipsOperand}, #{operands[1].mipsOperand}, #{operands[0].mipsOperand}" 807 end 808 end 809 810 def emitMIPSDoubleCompare(branchOpcode, neg, operands) 811 mipsMoveImmediate(1, operands[2]) 812 $asm.puts "c.#{branchOpcode}.d $fcc0, #{mipsOperands(operands[0..1])}" 813 if (!neg) 814 $asm.puts "movf #{operands[2].mipsOperand}, $zero, $fcc0" 815 else 816 $asm.puts "movt #{operands[2].mipsOperand}, $zero, $fcc0" 807 817 end 808 818 end … … 1012 1022 $asm.puts "slt #{operands[2].mipsOperand}, #{operands[1].mipsOperand}, #{operands[0].mipsOperand}" 1013 1023 $asm.puts "xori #{operands[2].mipsOperand}, 1" 1024 when "cdgt" 1025 emitMIPSDoubleCompare("ule", true, operands) 1026 when "cdgteq" 1027 emitMIPSDoubleCompare("ult", true, operands) 1028 when "cdlt" 1029 emitMIPSDoubleCompare("olt", false, operands) 1030 when "cdlteq" 1031 emitMIPSDoubleCompare("ole", false, operands) 1014 1032 when "peek" 1015 1033 $asm.puts "lw #{operands[1].mipsOperand}, #{operands[0].value * 4}($sp)"
Note:
See TracChangeset
for help on using the changeset viewer.