Ignore:
Timestamp:
Sep 16, 2013, 2:05:38 AM (12 years ago)
Author:
[email protected]
Message:

[sh4] Handle subp opcode with 3 operands and bpbeq opcode in LLINT.
https://bugs.webkit.org/show_bug.cgi?id=121412

Patch by Julien Brianceau <[email protected]> on 2013-09-16
Reviewed by Andreas Kling.

  • offlineasm/sh4.rb:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/offlineasm/sh4.rb

    r154025 r155846  
    571571            end
    572572        when "subi", "subp"
    573             raise "#{opcode} with #{operands.size} operands is not handled yet" unless operands.size == 2
    574             if operands[0].is_a? Immediate
    575                 $asm.puts "add #{sh4Operands([Immediate.new(codeOrigin, -1 * operands[0].value), operands[1]])}"
    576             else
    577                 $asm.puts "sub #{sh4Operands(operands)}"
     573            if operands.size == 3
     574                if operands[1] != operands[2]
     575                    $asm.puts "neg #{sh4Operands([operands[2], operands[2]])}"
     576                    $asm.puts "add #{sh4Operands([operands[0], operands[2]])}"
     577                else
     578                    $asm.puts "mov #{sh4Operands([operands[0], operands[2]])}"
     579                    $asm.puts "sub #{sh4Operands([operands[1], operands[2]])}"
     580                end
     581            else
     582                if operands[0].is_a? Immediate
     583                    $asm.puts "add #{sh4Operands([Immediate.new(codeOrigin, -1 * operands[0].value), operands[1]])}"
     584                else
     585                    $asm.puts "sub #{sh4Operands(operands)}"
     586                end
    578587            end
    579588        when "muli", "mulp"
     
    682691        when "bia", "bpa", "bba"
    683692            emitSH4CondBranch("hi", false, operands)
     693        when "bibeq", "bpbeq"
     694            emitSH4CondBranch("hi", true, operands)
    684695        when "biaeq", "bpaeq"
    685696            emitSH4CondBranch("hs", false, operands)
Note: See TracChangeset for help on using the changeset viewer.