mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[bpf] mark mov instructions as ReMaterializable
loading immediate into register is cheap, so take advantage of remat. llvm-svn: 233666
This commit is contained in:
parent
797070859e
commit
89e1216297
@ -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