1
0
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:
Alexei Starovoitov 2015-03-31 02:49:58 +00:00
parent 797070859e
commit 89e1216297
2 changed files with 7 additions and 4 deletions

View File

@ -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),

View File

@ -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