mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 21:32:10 +00:00
[bpf] mark mov instructions as ReMaterializable
loading immediate into register is cheap, so take advantage of remat. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233666 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6b9d1f9cee
commit
8ffc5ca532
@ -231,8 +231,6 @@ class MOV_RI<string OpcodeStr>
|
||||
let BPFSrc = 0; // BPF_K
|
||||
let BPFClass = 7; // BPF_ALU64
|
||||
}
|
||||
def MOV_rr : MOV_RR<"mov">;
|
||||
def MOV_ri : MOV_RI<"mov">;
|
||||
|
||||
class LD_IMM64<bits<4> Pseudo, string OpcodeStr>
|
||||
: InstBPF<(outs GPR:$dst), (ins u64imm:$imm),
|
||||
@ -255,7 +253,12 @@ class LD_IMM64<bits<4> Pseudo, string OpcodeStr>
|
||||
let size = 3; // BPF_DW
|
||||
let BPFClass = 0; // BPF_LD
|
||||
}
|
||||
|
||||
let isReMaterializable = 1, isAsCheapAsAMove = 1 in {
|
||||
def LD_imm64 : LD_IMM64<0, "ld_64">;
|
||||
def MOV_rr : MOV_RR<"mov">;
|
||||
def MOV_ri : MOV_RI<"mov">;
|
||||
}
|
||||
|
||||
def LD_pseudo
|
||||
: InstBPF<(outs GPR:$dst), (ins i64imm:$pseudo, u64imm:$imm),
|
||||
|
@ -8,8 +8,8 @@ define i32 @test0(i32 %X) {
|
||||
}
|
||||
|
||||
; CHECK-LABEL: store_imm:
|
||||
; CHECK: stw 0(r1), r0
|
||||
; CHECK: stw 4(r2), r0
|
||||
; CHECK: stw 0(r1), r{{[03]}}
|
||||
; CHECK: stw 4(r2), r{{[03]}}
|
||||
define i32 @store_imm(i32* %a, i32* %b) {
|
||||
entry:
|
||||
store i32 0, i32* %a, align 4
|
||||
|
Loading…
Reference in New Issue
Block a user