[LoongArch] Explicitly specify instruction properties
This revision explicitly specifies the machine instruction properties instead of relying on guesswork. This is because guessing instruction properties has proven to be inaccurate, such as the machine LICM not working: ``` void func(char *a, char *b) { int i; for (i = 0; i != 72526; i++) a[i] = b[i]; } ``` Guessing instruction properties: ``` func: # @func move $a2, $zero .LBB0_1: # =>This Inner Loop Header: Depth=1 ldx.b $a3, $a1, $a2 stx.b $a3, $a0, $a2 addi.d $a2, $a2, 1 lu12i.w $a3, 17 ori $a3, $a3, 2894 bne $a2, $a3, .LBB0_1 ret .Lfunc_end0: ``` Explicitly specify instruction properties: ``` func: # @func lu12i.w $a2, 17 ori $a2, $a2, 2894 move $a3, $zero .LBB0_1: # =>This Inner Loop Header: Depth=1 ldx.b $a4, $a1, $a3 stx.b $a4, $a0, $a3 addi.d $a3, $a3, 1 bne $a3, $a2, .LBB0_1 ret .Lfunc_end0: ``` Reviewed By: SixWeining, xen0n Differential Revision: https://reviews.llvm.org/D154192
Loading
Please sign in to comment