mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 13:46:38 +00:00

Original code sequence: * pcalau12i $a0, %ie_pc_hi20(sym) * ld.d $a0, $a0, %ie_pc_lo12(sym) The code sequence converted is as follows: * lu12i.w $a0, %le_hi20(sym) # le_hi20 != 0, otherwise NOP * ori $a0, src, %le_lo12(sym) # le_hi20 != 0, src = $a0, # otherwise, src = $zero TODO: When relaxation is enabled, redundant NOP can be removed. This will be implemented in a future patch. Note: In the normal or medium code model, original code sequence with relocations allow interleaving, because converted code sequence calculates the absolute offset. However, in extreme code model, to identify the current code model, the first four instructions with relocations must appear consecutively.