We maintain a set of patches for enabling 24/40-bit MVTs, and also a set of
patches to support 16-bit bytes. I can provide them upon request. (Only
llvm, no clang patches yet.)
From: firstname.lastname@example.org [mailto:email@example.com] On
Behalf Of Matt Arsenault
Sent: den 4 juni 2015 09:07
To: Volodymyr Arbatov
Subject: Re: [LLVMdev] non-standard machine value types
On Jun 3, 2015, at 11:48 PM, Volodymyr Arbatov
I'm looking for a ways of defining register files with non-standard machine
value type in tablegen. The value types not covered by SimpleValueType
enum. For example (from the top of my head) 25 bit integers, or 8 way 18
bit integers. These types going to be used with intrinsics so I also need
appropriate C custom types defined.
I wonder if I can describe those in tablegen files or do I need to extend
llvm. What is the right way of supporting such types?
I'm not familiar will llvm internals so far, so any help and pointers
You would need an MVT type defined for every legal type you have, so you
would need to add those. However, LLVM has a pretty widely spread
assumption of 8-bit bytes, so that will be far more problematic for your
target. Fixing that would be a large project.