- init_attr => "attr->op_mode = op_mode;",
- reg_req => { "in" => [ "fpa", "fpa" ], "out" => [ "fpa", "none" ] },
- emit =>'. frd%M %D0, %S0, %S1',
- outs => [ "res", "M" ],
-},
-
-fpaFrd_i => {
- comment => "construct FPA Fast reverse Div: Div(a, b) = b / a",
- attr => "ir_mode *op_mode, long imm",
- init_attr => 'attr->op_mode = op_mode; ARM_SET_FPA_IMM(attr); attr->imm_value = imm;',
- cmp_attr => 'return attr_a->imm_value != attr_b->imm_value;',
- reg_req => { "in" => [ "fpa" ], "out" => [ "fpa", "none" ] },
- emit =>'. frd%M %D0, %S0, %C',
- outs => [ "res", "M" ],
-},
-
-fpaMvf => {
- irn_flags => "R",
- comment => "construct FPA Move: b = a",
- reg_req => { "in" => [ "fpa" ], "out" => [ "fpa" ] },
- emit => '. mvf%M %S0, %D0',
-},
-
-fpaMvf_i => {
- irn_flags => "R",
- comment => "represents a float constant",
- attr => "long imm",
- init_attr => 'ARM_SET_FPA_IMM(attr); attr->imm_value = imm;',
- reg_req => { "out" => [ "fpa" ] },
- emit => '. mvf%M %D0, %C',
- cmp_attr => 'return attr_a->imm_value != attr_b->imm_value;'
-},
-
-fpaMnf => {
- irn_flags => "R",
- comment => "construct FPA Move Negated: b = -a",
- reg_req => { "in" => [ "fpa" ], "out" => [ "fpa" ] },
- emit => '. mnf%M %S0, %D0',
-},
-
-fpaMnf_i => {
- irn_flags => "R",
- comment => "represents a float constant",
- attr => "long imm",
- init_attr => 'ARM_SET_FPA_IMM(attr); attr->imm_value = imm;',
- reg_req => { "out" => [ "fpa" ] },
- emit => '. mnf%M %D0, %C',
- cmp_attr => 'return attr_a->imm_value != attr_b->imm_value;'
-},
-
-fpaAbs => {
- irn_flags => "R",
- comment => "construct FPA Absolute value: fAbsd(a) = |a|",
- reg_req => { "in" => [ "fpa" ], "out" => [ "fpa" ] },
- emit => '. abs%M %D0, %S0',
-},
-
-# other operations
-
-fpaFlt => {
- irn_flags => "R",
- comment => "construct a FPA integer->float conversion",
- reg_req => { "in" => ["gp"], "out" => [ "fpa" ] },
- emit => '. flt%M %D0, %S0',
-},
-
-fpaFix => {
- irn_flags => "R",
- comment => "construct a FPA float->integer conversion",
- reg_req => { "in" => ["fpa"], "out" => [ "gp" ] },
- emit => '. fix %D0, %S0',
-},
-
-fpaCmfBra => {
- op_flags => "L|X|Y",
- state => "pinned",
- comment => "construct floating point Compare and Branch: CMF A, B && JMPxx LABEL",
- mode => "mode_T",
- attr => "int proj_num",
- init_attr => "\tset_arm_CondJmp_proj_num(res, proj_num);",
- reg_req => { "in" => [ "fpa", "fpa" ], "out" => [ "none", "none"] },
- attr_type => "arm_CondJmp_attr_t",