Technical information
Operating Precautions for CPDW9X/NT-CDR-V85X, Y-GHS-MULTI-V800
TM
Customer Notification r20tu0003ed1812 86
No. a78
The compiler does not accept ‚float’ –parameters for assembler macros
Version Information
V4.0.5, V4.0.7, V4.0.7a, V4.2.3, V4.2.4
Details:
The compiler does not pass variable of type float to assembler macros. Instead, the parameters
are converted into double types before passed.
Example:
asm fabsfA(x)
{
%reg x
absf.s x,r10
%error
}
…
X= Y* absfA( f);
Instead that the compiler generates an inline call of absfA, it first converst the parameter from
float to double.
Command Line
ccv850e –c –cpu=v850e1f -Ospace test.c
Workaround
The status of the parameters cannot be changed, as per status of today, but for example, an
inlined version of the absf() function and a sort of floor functionality can be emitted using this
instructions:
#define fabsfA(x) (((x) < 0) ? -(x): (x)) // emmitts assembler code absf.s
#define floorfA(x) ((float)(int)(x)) // emmitts instructions trnc.sw; cvt.ws










