my %float_binop_constructors = (
s => {
reg_req => { in => [ "fp", "fp" ], out => [ "fp" ] },
- ins => [ "left", "right" ],
mode => $mode_fp,
},
d => {
reg_req => { in => [ "fp:a|2", "fp:a|2" ], out => [ "fp:a|2" ] },
- ins => [ "left", "right" ],
mode => $mode_fp2,
},
q => {
reg_req => { in => [ "fp:a|4", "fp:a|4" ], out => [ "fp:a|4" ] },
- ins => [ "left", "right" ],
mode => $mode_fp4,
}
);
my %float_unop_constructors = (
s => {
reg_req => { in => [ "fp" ], out => [ "fp" ] },
- ins => [ "left", "right" ],
mode => $mode_fp,
},
d => {
reg_req => { in => [ "fp:a|2" ], out => [ "fp:a|2" ] },
- ins => [ "left", "right" ],
mode => $mode_fp2,
},
q => {
reg_req => { in => [ "fp:a|4" ], out => [ "fp:a|4" ] },
- ins => [ "left", "right" ],
mode => $mode_fp4,
}
);
emit => '. fadd%FPM %S1, %S2, %D1',
attr_type => "sparc_fp_attr_t",
attr => "ir_mode *fp_mode",
+ ins => [ "left", "right" ],
constructors => \%float_binop_constructors,
},
emit => '. fsub%FPM %S1, %S2, %D1',
attr_type => "sparc_fp_attr_t",
attr => "ir_mode *fp_mode",
+ ins => [ "left", "right" ],
constructors => \%float_binop_constructors,
},
emit =>'. fmul%FPM %S1, %S2, %D1',
attr_type => "sparc_fp_attr_t",
attr => "ir_mode *fp_mode",
+ ins => [ "left", "right" ],
constructors => \%float_binop_constructors,
},
emit => '. fdiv%FPM %S1, %S2, %D1',
attr_type => "sparc_fp_attr_t",
attr => "ir_mode *fp_mode",
+ ins => [ "left", "right" ],
outs => [ "res", "M" ],
constructors => \%float_binop_constructors,
},
emit => '. fneg %S1, %D1',
attr_type => "sparc_fp_attr_t",
attr => "ir_mode *fp_mode",
+ ins => [ "val" ],
constructors => \%float_unop_constructors,
},
emit => '. fabs %S1, %D1',
attr_type => "sparc_fp_attr_t",
attr => "ir_mode *fp_mode",
+ ins => [ "val" ],
constructors => \%float_unop_constructors,
},