These macros are defined in avr-gcc and are useful when working with assembly.
For example, startup code needs to copy the contents of .data from flash to RAM, but should use elpm (instead of lpm) on devices with more than 64kB flash. Without __AVR_HAVE_ELPM__, there is no way to know whether the elpm instruction is supported.
Depends on D137521.
ATxmega16a4 with family code 102 also supports ELPM. Could you please make a careful check on ELPM and all other features?
Generally speaking I am very glad to have this patch committed, since it fixes
https://github.com/llvm/llvm-project/issues/56157