diff options
author | Yonghong Song <yhs@fb.com> | 2017-09-11 23:43:35 +0000 |
---|---|---|
committer | Yonghong Song <yhs@fb.com> | 2017-09-11 23:43:35 +0000 |
commit | be9c00347fa7dcfb78f9f3a6c6c61a00a9071d31 (patch) | |
tree | 2803940d7947fbaa96faf1b40254362b90118cd1 /llvm/lib/Target/BPF/BPFInstrInfo.td | |
parent | 424aac368782c99537ab36cdf2f803d9ceebd8a5 (diff) | |
download | bcm5719-llvm-be9c00347fa7dcfb78f9f3a6c6c61a00a9071d31.tar.gz bcm5719-llvm-be9c00347fa7dcfb78f9f3a6c6c61a00a9071d31.zip |
bpf: add " ll" in the LD_IMM64 asmstring
This partially revert previous fix in commit f5858045aa0b
("bpf: proper print imm64 expression in inst printer").
In that commit, the original suffix "ll" is removed from
LD_IMM64 asmstring. In the customer print method, the "ll"
suffix is printed if the rhs is an immediate. For example,
"r2 = 5ll" => "r2 = 5ll", and "r3 = varll" => "r3 = var".
This has an issue though for assembler. Since assembler
relies on asmstring to do pattern matching, it will not
be able to distiguish between "mov r2, 5" and
"ld_imm64 r2, 5" since both asmstring is "r2 = 5".
In such cases, the assembler uses 64bit load for all
"r = <val>" asm insts.
This patch adds back " ll" suffix for ld_imm64 with one
additional space for "#reg = #global_var" case.
Signed-off-by: Yonghong Song <yhs@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
llvm-svn: 312978
Diffstat (limited to 'llvm/lib/Target/BPF/BPFInstrInfo.td')
-rw-r--r-- | llvm/lib/Target/BPF/BPFInstrInfo.td | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/BPF/BPFInstrInfo.td b/llvm/lib/Target/BPF/BPFInstrInfo.td index d4c50e768f7..bef6ce0852a 100644 --- a/llvm/lib/Target/BPF/BPFInstrInfo.td +++ b/llvm/lib/Target/BPF/BPFInstrInfo.td @@ -249,7 +249,7 @@ class MOV_RI<string OpcodeStr> class LD_IMM64<bits<4> Pseudo, string OpcodeStr> : InstBPF<(outs GPR:$dst), (ins u64imm:$imm), - "$dst "#OpcodeStr#" ${imm}", + "$dst "#OpcodeStr#" ${imm} ll", [(set GPR:$dst, (i64 imm:$imm))]> { bits<3> mode; |