[llvm-dev] Stuck with instruction in tablegen

Michael Stellmann via llvm-dev llvm-dev at lists.llvm.org
Tue Jul 10 01:14:18 PDT 2018


Yes, the "F" register equals to X86's "EFLAGS" register, and indeed, the Z80 treats AF (i.e. the 8 bit accumulator and the 8 bit flags) as a 16-bit pair, just like HL, being composed of the registers H and L - and in fact, in the original Z80RegisterInfo.td, A and F are aliased to the pair AF, just like HL.
 
If I understood you correctly, you are proposing changing

  [(set A, F, ...

to

  [(set AF, ...

This would affect the SDTypeProfile from

def SDTBinOpRF  : SDTypeProfile<2, 2, [SDTCisInt<0>,
                                       SDTCisFlag<1>,
                                       SDTCisSameAs<2, 0>,
                                       SDTCisSameAs<3, 0>]>;

i.e. a (8-bit) integer register "A", and a (8-bit) flag register "F" to merge into a (16-bit) integer register "AF"

def SDTBinOpRF  : SDTypeProfile<1, 2, [SDTCisInt<0>,
                                       SDTCisSameAs<1, 0>,
                                       SDTCisSameAs<2, 0>]>;

which would omit the "SDTCisFlag".

I'm not that much into LLVM yet (started with that only ~1 week ago) but I would expect that this would have to be dealt with somewhere else in the code, right?

Michael


More information about the llvm-dev mailing list