half datatype?

Manu turkeyman at gmail.com
Sun Nov 18 04:58:11 PST 2012


On 18 November 2012 14:51, Artur Skawina <art.08.09 at gmail.com> wrote:

> On 11/18/12 12:21, Manu wrote:
> > I've often wondered about having an official 'half' type.
> > It's very common in rendering/image processing, supported by most video
> cards (so compression routines interacting with this type are common), and
> it's also supported in hardware by some cpu's.
> >
> > ARM for instance supports 'half's in hardware, and GCC has an __fp16
> type which would map nicely if D supported the type in the front end.
> >
> > The alternative us to use ushort everywhere, which is awkward, because
> it is neither unsigned, nor is it an integer, and it's not typesafe (allows
> direct assignment to ints and stuff)...
> > It would be nice if: cast(half)someFloat would yield the proper value,
> even if it is performed in software in most architectures, it could be
> mapped to hardware for those that do it.
> >
> > It could be done in a library, but then GCC couldn't map it properly to
> the hardware type, and since D has no way to describe implicit casts (that
> I know of?) it becomes awkward to use.
> > someFloat = someHalf <- doesn't work, because a cast operator expects an
> explicit cast, even though this is a lossless conversion and should be
> exactly the same as someDouble = someFloat.
> >
> > Thoughts?
>
>    version (GNU) alias half = @gcc[mode(HF)] float;
>
> But of course this won't work right now, cause that kind of type attributes
> aren't supported yet. 'pragma' can't be used on types either (otherwise
> something like "alias half = pragma(attribute, mode("HF")) float;" could be
> made to work).
>
> And - yes - the /proper/ way would be eg
>
>    alias half = @core[size=2] float;
>          // or '@core.size(2)' or any other syntax.
>
> For now, a struct + alias-this-getter might be enough, for a s/w
> implementation.
>

Yes, that's what I and everyone else does, but that's not the point of the
topic...
I think it's a fundamental datatype, and it deserves the same casting/type
conversion/type safety rules as ints and floats, and it would also be
useful to map it to hardware (which GDC can easily do).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20121118/1a88bdfa/attachment.html>


More information about the Digitalmars-d mailing list