Hi,
In AArch64, most of loading constant from constant poll are implemented as:
adrp x0, .Label
ld x1, [x0, #.lo12.Label]
But for vector load LD1, it doesn't have pre-index format. So I have to choose one of the sequence below:
adrp x0, .Label
add x0, x0, #.lo12.Label
ld1 {x1}, [x0]
adr x0, .Label
ld1 {x1}, [x0]
I'm not quite familiar with ADRP and ADR, so I simply choose the second one as it has less instruction.
Please review, thanks.
This means that the corresponding case in AArch64ISelDAGToDAG.cpp:1116 will never trigger. That's a *very* good thing, since your version is actually correct (I've no idea what I was thinking when I wrote that) but it should probably be removed.
Could you also modify the neon-mov.ll test to make sure this doesn't happen again (from current codegen, but should be fixed with your patch):