Hi all,

I want amdgcn to be able to support int128 types, partly because they might come up in code offloaded from x86_64 code, and partly because libgomp now requires at least some support (amdgcn builds have been failing since yesterday).

But, amdgcn has 32-bit registers, and therefore defines BITS_PER_WORD to 32, which means that TImode doesn't Just Work, at least not for all operators. It already has TImode moves, for internal uses, so I can enable TImode and fix the libgomp build, but now libgfortran tries to use operators that don't exist, so I'm no better off.

The expand pass won't emit libgcc calls, like it does for DImode, and libgcc doesn't have the routines for it anyway. Neither does it support synthesized shifts or rotates for more than double-word types. (Multiple-word add and subtract appear to work fine, however.)

What would be the best (least effort) way to implement this?

I think I need shift, rotate, multiply, divide, and modulus, but there's probably more.

Thanks, any advise will be appreciated.

Andrew

Reply via email to