X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fia32%2Fia32_spec.pl;h=a31fd7a43e4d7e88179db4238b970e4280b17aa8;hb=f8ead9acbe48af00885e64a6f2f895d1b6cae434;hp=efbd909f134d7e301863eefba2c9aa416b6ca378;hpb=81bb3bf37432ecdd7f973faf49984ebb45acf934;p=libfirm diff --git a/ir/be/ia32/ia32_spec.pl b/ir/be/ia32/ia32_spec.pl index efbd909f1..a31fd7a43 100644 --- a/ir/be/ia32/ia32_spec.pl +++ b/ir/be/ia32/ia32_spec.pl @@ -9,13 +9,6 @@ $mode_gp = "mode_Iu"; $mode_flags = "mode_Iu"; $mode_fpcw = "ia32_mode_fpcw"; -# register types: -$normal = 0; # no special type -$ignore = 1; # ignore (do not assign this register) -$arbitrary = 2; # emitter can choose an arbitrary register of this class -$virtual = 4; # the register is a virtual one -$state = 8; # register represents a state -# NOTE: Last entry of each class is the largest Firm-Mode a register can hold %reg_classes = ( gp => [ { name => "edx", dwarf => 2 }, @@ -25,19 +18,19 @@ $state = 8; # register represents a state { name => "esi", dwarf => 6 }, { name => "edi", dwarf => 7 }, { name => "ebp", dwarf => 5 }, - { name => "esp", dwarf => 4, type => $ignore }, - { name => "gp_NOREG", type => $ignore | $arbitrary | $virtual }, # we need a dummy register for NoReg nodes + { name => "esp", dwarf => 4, type => "ignore" }, + { name => "gp_NOREG", type => "ignore | virtual" }, # we need a dummy register for NoReg nodes { mode => $mode_gp } ], mmx => [ - { name => "mm0", dwarf => 29, type => $ignore }, - { name => "mm1", dwarf => 30, type => $ignore }, - { name => "mm2", dwarf => 31, type => $ignore }, - { name => "mm3", dwarf => 32, type => $ignore }, - { name => "mm4", dwarf => 33, type => $ignore }, - { name => "mm5", dwarf => 34, type => $ignore }, - { name => "mm6", dwarf => 35, type => $ignore }, - { name => "mm7", dwarf => 36, type => $ignore }, + { name => "mm0", dwarf => 29, type => "ignore" }, + { name => "mm1", dwarf => 30, type => "ignore" }, + { name => "mm2", dwarf => 31, type => "ignore" }, + { name => "mm3", dwarf => 32, type => "ignore" }, + { name => "mm4", dwarf => 33, type => "ignore" }, + { name => "mm5", dwarf => 34, type => "ignore" }, + { name => "mm6", dwarf => 35, type => "ignore" }, + { name => "mm7", dwarf => 36, type => "ignore" }, { mode => $mode_mmx, flags => "manual_ra" } ], xmm => [ @@ -49,7 +42,7 @@ $state = 8; # register represents a state { name => "xmm5", dwarf => 26 }, { name => "xmm6", dwarf => 27 }, { name => "xmm7", dwarf => 28 }, - { name => "xmm_NOREG", type => $ignore | $virtual }, # we need a dummy register for NoReg nodes + { name => "xmm_NOREG", type => "ignore | virtual" }, # we need a dummy register for NoReg nodes { mode => $mode_xmm } ], fp => [ @@ -61,15 +54,15 @@ $state = 8; # register represents a state { name => "st5", realname => "st(5)", dwarf => 16 }, { name => "st6", realname => "st(6)", dwarf => 17 }, { name => "st7", realname => "st(7)", dwarf => 18 }, - { name => "fp_NOREG", type => $ignore | $arbitrary | $virtual }, # we need a dummy register for NoReg nodes + { name => "fp_NOREG", type => "ignore | virtual" }, # we need a dummy register for NoReg nodes { mode => $mode_fp87 } ], fp_cw => [ # the floating point control word - { name => "fpcw", dwarf => 37, type => $ignore | $state }, - { mode => $mode_fpcw, flags => "manual_ra|state" } + { name => "fpcw", dwarf => 37, type => "ignore | state" }, + { mode => $mode_fpcw, flags => "manual_ra | state" } ], flags => [ - { name => "eflags", dwarf => 9, type => 0 }, + { name => "eflags", dwarf => 9 }, { mode => "mode_Iu", flags => "manual_ra" } ], ); # %reg_classes @@ -124,7 +117,6 @@ $custom_init_attr_func = \&ia32_custom_init_attr; %init_attr = ( ia32_asm_attr_t => "\tinit_ia32_attributes(res, irn_flags_, in_reqs, n_res);\n". - "\tinit_ia32_x87_attributes(res);". "\tinit_ia32_asm_attributes(res);", ia32_attr_t => "\tinit_ia32_attributes(res, irn_flags_, in_reqs, n_res);", @@ -163,9 +155,6 @@ $custom_init_attr_func = \&ia32_custom_init_attr; ia32_climbframe_attr_t => "ia32_compare_climbframe_attr", ); -%operands = ( -); - $status_flags = [ "CF", "PF", "AF", "ZF", "SF", "OF" ]; $status_flags_wo_cf = [ "PF", "AF", "ZF", "SF", "OF" ]; $fpcw_flags = [ "FP_IM", "FP_DM", "FP_ZM", "FP_OM", "FP_UM", "FP_PM",