Yes the idea was to do 4 computations with int64 routines and to compare the results with what the compiler would do if you were using float (or double as in XC double are treated as float).

now I m not sure what you mean by direct convert or not.

I have provided a basic set of s31, s28(),s56() and f28(),f56() which convert respectively float to int and int to float and this is done at

**compile time**. this is useful to help you writing the integers numbers directly as float instead of using hexadecimal !

just print s28(0.5) in hexadecimal and you will get then "direct" if this is what you meant.

about shift, yes you have to play with the "less expensive" ones:

when you have a unsigned 32 bit, "shr dest, source,n" is the way forward to do a shift right and it can be combined with another instruction when using dual issue.

when you have a signed 32 bits, "ashr dest, source,n" is the way forward to keep and propagate the sign bit, but it take a full instruction.

when you have a 64bits, then lextract is very good to get 32 bits at any position so you can get same effect than a shit left or right.

but if you want to shift right a 64 bits into another 64 bits then the best optimization is to use both : lextract to retrieve the lsb and ashr to reduce the msb.

here we go for this morning :)