X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fsparc%2Fsparc_spec.pl;h=0231f816a030751562dc52e1b14331d0a856e01b;hb=8a2feafac2a06ff00822bc677983221425ea3c54;hp=da7be553a38b5740cfcc7c5d6c7efc5b51b7e9ec;hpb=41dc42afc8d00e0f364711ed0c919e4e29cb20e4;p=libfirm diff --git a/ir/be/sparc/sparc_spec.pl b/ir/be/sparc/sparc_spec.pl index da7be553a..0231f816a 100644 --- a/ir/be/sparc/sparc_spec.pl +++ b/ir/be/sparc/sparc_spec.pl @@ -284,11 +284,13 @@ AddCC_t => { ins => [ "left", "right" ], outs => [ "res", "flags" ], attr_type => "", + dump_func => "NULL", }, AddX_t => { ins => [ "left", "right", "flags_input" ], attr_type => "", + dump_func => "NULL", }, Sub => { @@ -316,11 +318,13 @@ SubCC_t => { ins => [ "left", "right" ], outs => [ "res", "flags" ], attr_type => "", + dump_func => "NULL", }, SubX_t => { ins => [ "left", "right", "flags_input" ], attr_type => "", + dump_func => "NULL", }, # Load / Store @@ -420,25 +424,27 @@ Restore => { }, RestoreZero => { - emit => '. restore', reg_req => { in => [ "frame_pointer" ], out => [ "sp:I|S" ] }, ins => [ "frame_pointer" ], outs => [ "stack" ], + emit => '. restore', mode => $mode_gp, }, SubSP => { - reg_req => { in => [ "sp", "gp", "none" ], out => [ "sp:I|S", "gp", "none" ] }, - ins => [ "stack", "size", "mem" ], - outs => [ "stack", "addr", "M" ], - emit => ". sub %S0, %S1, %D0\n", + reg_req => { in => [ "sp", "gp" ], out => [ "sp:I|S" ] }, + ins => [ "stack", "size" ], + outs => [ "stack" ], + emit => ". sub %S0, %S1, %D0\n", + mode => $mode_gp, }, AddSP => { - reg_req => { in => [ "sp", "gp", "none" ], out => [ "sp:I|S", "none" ] }, - ins => [ "stack", "size", "mem" ], - outs => [ "stack", "M" ], - emit => ". add %S0, %S1, %D0\n", + reg_req => { in => [ "sp", "gp" ], out => [ "sp:I|S" ] }, + ins => [ "stack", "size" ], + outs => [ "stack" ], + emit => ". add %S0, %S1, %D0\n", + mode => $mode_gp, }, FrameAddr => { @@ -662,7 +668,13 @@ Mul => { constructors => \%binop_operand_constructors, }, -Mulh => { +SMulh => { + irn_flags => [ "rematerializable" ], + outs => [ "low", "high" ], + constructors => \%binop_operand_constructors, +}, + +UMulh => { irn_flags => [ "rematerializable" ], outs => [ "low", "high" ], constructors => \%binop_operand_constructors,