Commit 906a0d83 authored by Matthias Braun's avatar Matthias Braun
Browse files

make CondJmps and Switches pinned, now we can do code_placement in the backend again

parent 2d1b1636
...@@ -654,6 +654,7 @@ Not => { ...@@ -654,6 +654,7 @@ Not => {
# other operations # other operations
CondJmp => { CondJmp => {
state => "pinned",
op_flags => "L|X|Y", op_flags => "L|X|Y",
comment => "construct conditional jump: CMP A, B && JMPxx LABEL", comment => "construct conditional jump: CMP A, B && JMPxx LABEL",
reg_req => { in => [ "gp", "gp", "gp", "gp", "none" ] }, reg_req => { in => [ "gp", "gp", "gp", "gp", "none" ] },
...@@ -663,6 +664,7 @@ CondJmp => { ...@@ -663,6 +664,7 @@ CondJmp => {
}, },
TestJmp => { TestJmp => {
state => "pinned",
op_flags => "L|X|Y", op_flags => "L|X|Y",
comment => "construct conditional jump: TEST A, B && JMPxx LABEL", comment => "construct conditional jump: TEST A, B && JMPxx LABEL",
reg_req => { in => [ "gp", "gp" ] }, reg_req => { in => [ "gp", "gp" ] },
...@@ -672,6 +674,7 @@ TestJmp => { ...@@ -672,6 +674,7 @@ TestJmp => {
}, },
CJmpAM => { CJmpAM => {
state => "pinned",
op_flags => "L|X|Y", op_flags => "L|X|Y",
comment => "construct conditional jump without CMP (replaces CondJmp): JMPxx LABEL", comment => "construct conditional jump without CMP (replaces CondJmp): JMPxx LABEL",
reg_req => { in => [ "gp", "gp", "gp", "gp", "none" ], out => [ "none", "none" ] }, reg_req => { in => [ "gp", "gp", "gp", "gp", "none" ], out => [ "none", "none" ] },
...@@ -680,6 +683,7 @@ CJmpAM => { ...@@ -680,6 +683,7 @@ CJmpAM => {
}, },
CJmp => { CJmp => {
state => "pinned",
op_flags => "L|X|Y", op_flags => "L|X|Y",
comment => "construct conditional jump without CMP (replaces TestJmp): JMPxx LABEL", comment => "construct conditional jump without CMP (replaces TestJmp): JMPxx LABEL",
reg_req => { in => [ "gp", "gp" ] }, reg_req => { in => [ "gp", "gp" ] },
...@@ -687,6 +691,7 @@ CJmp => { ...@@ -687,6 +691,7 @@ CJmp => {
}, },
SwitchJmp => { SwitchJmp => {
state => "pinned",
op_flags => "L|X|Y", op_flags => "L|X|Y",
comment => "construct switch", comment => "construct switch",
reg_req => { in => [ "gp" ], out => [ "none" ] }, reg_req => { in => [ "gp" ], out => [ "none" ] },
...@@ -1053,6 +1058,7 @@ xCmp => { ...@@ -1053,6 +1058,7 @@ xCmp => {
}, },
xCondJmp => { xCondJmp => {
state => "pinned",
op_flags => "L|X|Y", op_flags => "L|X|Y",
comment => "construct conditional jump: UCOMIS A, B && JMPxx LABEL", comment => "construct conditional jump: UCOMIS A, B && JMPxx LABEL",
reg_req => { in => [ "gp", "gp", "xmm", "xmm", "none" ], out => [ "none", "none" ] }, reg_req => { in => [ "gp", "gp", "xmm", "xmm", "none" ], out => [ "none", "none" ] },
...@@ -1548,6 +1554,7 @@ vfConst => { ...@@ -1548,6 +1554,7 @@ vfConst => {
# other # other
vfCondJmp => { vfCondJmp => {
state => "pinned",
op_flags => "L|X|Y", op_flags => "L|X|Y",
comment => "represents a virtual floating point compare", comment => "represents a virtual floating point compare",
reg_req => { in => [ "gp", "gp", "vfp", "vfp", "none" ], out => [ "none", "none", "eax" ] }, reg_req => { in => [ "gp", "gp", "vfp", "vfp", "none" ], out => [ "none", "none", "eax" ] },
......
...@@ -870,7 +870,7 @@ static void vfp_dump_live(vfp_liveness live) { ...@@ -870,7 +870,7 @@ static void vfp_dump_live(vfp_liveness live) {
* @param tmpl the template containing the 4 possible x87 opcodes * @param tmpl the template containing the 4 possible x87 opcodes
*/ */
static int sim_binop(x87_state *state, ir_node *n, const exchange_tmpl *tmpl) { static int sim_binop(x87_state *state, ir_node *n, const exchange_tmpl *tmpl) {
int op2_idx, op1_idx; int op2_idx = 0, op1_idx;
int out_idx, do_pop = 0; int out_idx, do_pop = 0;
ia32_attr_t *attr; ia32_attr_t *attr;
ir_node *patched_insn; ir_node *patched_insn;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment