|
@@ -52,7 +52,7 @@ implementation
|
|
|
begin
|
|
|
result:=nil;
|
|
|
if is_number_float(value_real) and not(use_vectorfpu(resultdef)) and ((value_real=1.0) or ((value_real=0.0) and (get_real_sign(value_real)=1)) or
|
|
|
- ((value_real=2.0) and (cs_create_pic in current_settings.moduleswitches))) then
|
|
|
+ (((value_real=2.0) or (value_real=-1.0)) and (cs_create_pic in current_settings.moduleswitches))) then
|
|
|
expectloc:=LOC_FPUREGISTER
|
|
|
else if (value_real=0.0) and (get_real_sign(value_real)=1) and use_vectorfpu(resultdef) then
|
|
|
expectloc:=LOC_MMREGISTER
|
|
@@ -80,6 +80,14 @@ implementation
|
|
|
location.register:=NR_ST;
|
|
|
tcgx86(cg).inc_fpu_stack;
|
|
|
end
|
|
|
+ else if (value_real=-1.0) and (cs_create_pic in current_settings.moduleswitches) and not(use_vectorfpu(resultdef)) then
|
|
|
+ begin
|
|
|
+ emit_none(A_FLD1,S_NO);
|
|
|
+ emit_none(A_FCHS,S_NO);
|
|
|
+ location_reset(location,LOC_FPUREGISTER,def_cgsize(resultdef));
|
|
|
+ location.register:=NR_ST;
|
|
|
+ tcgx86(cg).inc_fpu_stack;
|
|
|
+ end
|
|
|
else if (value_real=0.0) and (get_real_sign(value_real)=1) then
|
|
|
begin
|
|
|
if use_vectorfpu(resultdef) then
|