llvm-project/llvm/test/CodeGen/BPF
Yonghong Song d3b522f519 bpf: fix incorrect SELECT_CC lowering
Commit 37962a331c77 ("bpf: Improve expanding logic in LowerSELECT_CC")
intended to improve code quality for certain jmp conditions. The
commit, however, has a couple of issues:
  (1). In code, just swap is not enough, ConditionalCode CC
       should also be swapped, otherwise incorrect code will
       be generated.
  (2). The ConditionalCode swap should be subject to
       getHasJmpExt(). If getHasJmpExt() is False, certain
       conditional codes will not be supported and swap
       may generate incorrect code.

The original goal for this patch is to optimize jmp operations
which does not have JmpExt turned on. If JmpExt is on,
better code could be generated. For example, the test
select_ri.ll is introduced to demonstrate the optimization.
The same result can be achieved with -mcpu=v2 flag.

Signed-off-by: Yonghong Song <yhs@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
llvm-svn: 329043
2018-04-03 03:56:37 +00:00
..
32-bit-subreg-alu.ll bpf: New codegen testcases for 32-bit subregister support 2018-02-23 23:49:33 +00:00
32-bit-subreg-cond-select.ll bpf: New codegen testcases for 32-bit subregister support 2018-02-23 23:49:33 +00:00
32-bit-subreg-load-store.ll bpf: New codegen testcases for 32-bit subregister support 2018-02-23 23:49:33 +00:00
32-bit-subreg-peephole.ll bpf: fix incorrect SELECT_CC lowering 2018-04-03 03:56:37 +00:00
alu8.ll [BPF] Return true in enableMultipleCopyHints(). 2018-02-18 10:09:54 +00:00
atomics.ll
basictest.ll [BPF] Return true in enableMultipleCopyHints(). 2018-02-18 10:09:54 +00:00
byval.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
cc_args.ll [bpf] allow direct and indirect calls 2017-11-19 01:35:00 +00:00
cc_args_be.ll [bpf] allow direct and indirect calls 2017-11-19 01:35:00 +00:00
cc_ret.ll [bpf] allow direct and indirect calls 2017-11-19 01:35:00 +00:00
cmp.ll bpf: fix incorrect SELECT_CC lowering 2018-04-03 03:56:37 +00:00
dwarfdump.ll [DebugInfo] Support DWARF v5 source code embedding extension 2018-02-23 23:01:06 +00:00
ex1.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
fi_ri.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
inline_asm.ll bpf: add inline-asm support 2017-09-18 23:29:36 +00:00
intrinsics.ll [BPF] Return true in enableMultipleCopyHints(). 2018-02-18 10:09:54 +00:00
lit.local.cfg
load.ll
loops.ll
many_args1.ll
many_args2.ll
mem_offset.ll
mem_offset_be.ll bpf: add " ll" in the LD_IMM64 asmstring 2017-09-11 23:43:35 +00:00
objdump_atomics.ll
objdump_cond_op.ll bpf: print backward branch target properly 2017-11-16 19:15:36 +00:00
objdump_cond_op_2.ll bpf: print backward branch target properly 2017-11-16 19:15:36 +00:00
objdump_imm_hex.ll bpf: add support for objdump -print-imm-hex 2017-12-20 19:39:58 +00:00
objdump_intrinsics.ll [BPF] Return true in enableMultipleCopyHints(). 2018-02-18 10:09:54 +00:00
objdump_trivial.ll
reloc.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
remove_truncate_1.ll bpf: remove unnecessary truncate operation 2017-06-29 15:18:54 +00:00
remove_truncate_2.ll bpf: remove unnecessary truncate operation 2017-06-29 15:18:54 +00:00
remove_truncate_3.ll [BPF] Return true in enableMultipleCopyHints(). 2018-02-18 10:09:54 +00:00
remove_truncate_4.ll [BPF] Teach DAG2DAG AND elimination about load intrinsics 2018-01-16 07:27:19 +00:00
remove_truncate_5.ll bpf: fix a bug in dag2dag optimization for loads from readonly section 2018-02-15 17:06:45 +00:00
rodata_1.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
rodata_2.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
rodata_3.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
rodata_4.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
sanity.ll [BPF] Return true in enableMultipleCopyHints(). 2018-02-18 10:09:54 +00:00
sdiv_error.ll
select_ri.ll bpf: fix incorrect SELECT_CC lowering 2018-04-03 03:56:37 +00:00
setcc.ll bpf: add variants of -mcpu=# and support for additional jmp insns 2017-08-23 04:25:57 +00:00
shifts.ll [BPF] Return true in enableMultipleCopyHints(). 2018-02-18 10:09:54 +00:00
sockex2.ll Followup on Proposal to move MIR physical register namespace to '$' sigil. 2018-01-31 22:04:26 +00:00
struct_ret1.ll
struct_ret2.ll
undef.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
vararg1.ll
warn-call.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
warn-stack.ll