llvm/clang and 'odd bit types'

Hi all,

I recently created a version of llvm/clang for an architecture with some odd properties:

- front end side:
-- char,short,int : 20 bits
-- long, long long: 40 bits
-- pointer: 20 bits

On the backend side, I have hardware support for 20-bit registers (and load/stores).
(So, I have support for 'i20' and 'i40', but 'i40' is lowered into operations on 'i20')

In order to achieve this, I did need to modify a number of generic llvm and clang files.

I was wondering if other people would be interested to see support for these kind of architectures in llvm
and if llvm/clang would accept such improvements.
In that case, I can make time to clean up these changes, make the current dependency on
'MVT::i20' and 'MVT::i40' more generic and provide them in easy-to-review chunks.

Greetings,

Jeroen Dobbelaere

I think it would certainly a cool feature to have as some custom architecture actually not always follow the standard power of two bit sizes and being more flexible on that size can't hurt definitely!