The current implementation of lowering the thread_pointer intrinsic and ARM's THREAD_POINTER node requires the destination register to be hard-coded in tablegen, which does not seem right to me. I've now changed the ARMthread_pointer node to be purely part of a chain, with the i32 value now being produced by a CopyFromReg from R0. The TPsoft and tTPsoft instructions already add R0 to be one of the implicitly defined registers, as this is the register used to hold the return value of __aeabi_read_tp. The tests have been modified because this implementation allows the call to be slightly reordered.
Details
Details
- Reviewers
- None
Diff Detail
Diff Detail