In this commit, we support nontemporal feature by checking the MachineMemOperand from
load/store MI.
There are two conditions that need to be met.
- The Load/Store and NTLH is immediate subsequent.
- Maintain the correct code size for relaxation.
For condition 1, it creates the RISCVInsertNTLHInstsPass and executes it in addPreEmitPass2.
This MachineFunction Pass does the similar thing as RISCVExpandPseudoPass
but it only expands the instruction with non-temporal flag (check through MachineMemOperand)
For condition 2, it checks the all instructions with non-temporal flag
(also through MachineMemOperand) and calculate in getInstSizeInBytes.
This way could support both scalar type and vector type (fixed-length).