summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/offlineasm/armv7.rb
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-05-07 11:21:11 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-05-07 11:21:11 +0200
commit2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (patch)
tree988e8c5b116dd0466244ae2fe5af8ee9be926d76 /Source/JavaScriptCore/offlineasm/armv7.rb
parentdd91e772430dc294e3bf478c119ef8d43c0a3358 (diff)
downloadqtwebkit-2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47.tar.gz
Imported WebKit commit 7e538425aa020340619e927792f3d895061fb54b (http://svn.webkit.org/repository/webkit/trunk@116286)
Diffstat (limited to 'Source/JavaScriptCore/offlineasm/armv7.rb')
-rw-r--r--Source/JavaScriptCore/offlineasm/armv7.rb46
1 files changed, 21 insertions, 25 deletions
diff --git a/Source/JavaScriptCore/offlineasm/armv7.rb b/Source/JavaScriptCore/offlineasm/armv7.rb
index ed7db5618..69df51a45 100644
--- a/Source/JavaScriptCore/offlineasm/armv7.rb
+++ b/Source/JavaScriptCore/offlineasm/armv7.rb
@@ -70,7 +70,7 @@ class RegisterID
when "t3"
"r4"
when "t4"
- "r7"
+ "r10"
when "cfr"
"r5"
when "lr"
@@ -522,11 +522,11 @@ def armV7LowerMisplacedAddresses(list)
node.opcode,
armV7AsRegisters(newList, postInstructions, node.operands, "i"))
when "bbeq", "bbneq", "bba", "bbaeq", "bbb", "bbbeq", "btbo", "btbz", "btbnz", "tbz", "tbnz",
- "tbo"
+ "tbo", "cbeq", "cbneq", "cba", "cbaeq", "cbb", "cbbeq"
newList << Instruction.new(node.codeOrigin,
node.opcode,
armV7AsRegisters(newList, postInstructions, node.operands, "b"))
- when "bbgt", "bbgteq", "bblt", "bblteq", "btbs", "tbs"
+ when "bbgt", "bbgteq", "bblt", "bblteq", "btbs", "tbs", "cbgt", "cbgteq", "cblt", "cblteq"
newList << Instruction.new(node.codeOrigin,
node.opcode,
armV7AsRegisters(newList, postInstructions, node.operands, "bs"))
@@ -568,7 +568,8 @@ def armV7LowerRegisterReuse(list)
case node.opcode
when "cieq", "cineq", "cia", "ciaeq", "cib", "cibeq", "cigt", "cigteq", "cilt", "cilteq",
"cpeq", "cpneq", "cpa", "cpaeq", "cpb", "cpbeq", "cpgt", "cpgteq", "cplt", "cplteq",
- "tio", "tis", "tiz", "tinz", "tbo", "tbs", "tbz", "tbnz"
+ "tio", "tis", "tiz", "tinz", "tbo", "tbs", "tbz", "tbnz", "tpo", "tps", "tpz", "tpnz",
+ "cbeq", "cbneq", "cba", "cbaeq", "cbb", "cbbeq", "cbgt", "cbgteq", "cblt", "cblteq"
if node.operands.size == 2
if node.operands[0] == node.operands[1]
tmp = Tmp.new(node.codeOrigin, :gpr)
@@ -777,12 +778,7 @@ class Instruction
when "urshifti", "urshiftp"
emitArmV7Compact("lsrs", "lsrs", operands)
when "muli", "mulp"
- if operands.size == 2 or operands[0] == operands[2] or operands[1] == operands[2]
- emitArmV7("muls", operands)
- else
- $asm.puts "mov #{operands[2].armV7Operand}, #{operands[0].armV7Operand}"
- $asm.puts "muls #{operands[2].armV7Operand}, #{operands[2].armV7Operand}, #{operands[1].armV7Operand}"
- end
+ emitArmV7("mul", operands)
when "subi", "subp", "subis"
emitArmV7Compact("subs", "subs", operands)
when "negi", "negp"
@@ -950,36 +946,36 @@ class Instruction
$asm.puts "blx #{operands[0].armV7Operand}"
end
when "break"
- $asm.puts "bkpt"
+ $asm.puts "bkpt #0"
when "ret"
$asm.puts "bx lr"
- when "cieq", "cpeq"
+ when "cieq", "cpeq", "cbeq"
emitArmV7Compare(operands, "eq")
- when "cineq", "cpneq"
+ when "cineq", "cpneq", "cbneq"
emitArmV7Compare(operands, "ne")
- when "cia", "cpa"
+ when "cia", "cpa", "cba"
emitArmV7Compare(operands, "hi")
- when "ciaeq", "cpaeq"
+ when "ciaeq", "cpaeq", "cbaeq"
emitArmV7Compare(operands, "hs")
- when "cib", "cpb"
+ when "cib", "cpb", "cbb"
emitArmV7Compare(operands, "lo")
- when "cibeq", "cpbeq"
+ when "cibeq", "cpbeq", "cbbeq"
emitArmV7Compare(operands, "ls")
- when "cigt", "cpgt"
+ when "cigt", "cpgt", "cbgt"
emitArmV7Compare(operands, "gt")
- when "cigteq", "cpgteq"
+ when "cigteq", "cpgteq", "cbgteq"
emitArmV7Compare(operands, "ge")
- when "cilt", "cplt"
+ when "cilt", "cplt", "cblt"
emitArmV7Compare(operands, "lt")
- when "cilteq", "cplteq"
+ when "cilteq", "cplteq", "cblteq"
emitArmV7Compare(operands, "le")
- when "tio", "tbo"
+ when "tio", "tbo", "tpo"
emitArmV7TestSet(operands, "vs")
- when "tis", "tbs"
+ when "tis", "tbs", "tps"
emitArmV7TestSet(operands, "mi")
- when "tiz", "tbz"
+ when "tiz", "tbz", "tpz"
emitArmV7TestSet(operands, "eq")
- when "tinz", "tbnz"
+ when "tinz", "tbnz", "tpnz"
emitArmV7TestSet(operands, "ne")
when "peek"
$asm.puts "ldr #{operands[1].armV7Operand}, [sp, \##{operands[0].value * 4}]"