llvm-project/llvm/test/tools/llvm-exegesis/X86
Roman Lebedev fbb823891d [llvm-exegesis] Fix serialization/deserialization of special NoRegister register (PR41448)
Summary:
A *lot* of instructions have this special register.
It seems this never really worked, but i finally noticed it only
because it happened to break for `CMOV16rm` instruction.

We serialized that register as "" (empty string), which is naturally
'ignored' during deserialization, so we re-create a `MCInst` with
too few operands.

And when we then happened to try to resolve variant sched class
for this mis-serialized instruction, and the variant predicate
tried to read an operand that was out of bounds since we got less operands,
we crashed.

Fixes [[ https://bugs.llvm.org/show_bug.cgi?id=41448 | PR41448 ]].

Reviewers: craig.topper, courbet

Reviewed By: courbet

Subscribers: tschuett, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60517

llvm-svn: 358153
2019-04-11 07:20:50 +00:00
..
analysis-cluster-stabilization.test [llvm-exegesis] Split Epsilon param into two (PR40787) 2019-02-25 09:36:12 +00:00
analysis-clustering-algorithms.test [llvm-exegesis] Introduce a 'naive' clustering algorithm (PR40880) 2019-03-28 08:55:01 +00:00
analysis-epsilons.test [llvm-exegesis] Split Epsilon param into two (PR40787) 2019-02-25 09:36:12 +00:00
analysis-inconsistencies-uops-backwards.test [llvm-exegesis] Fix PR39096. 2018-09-27 13:26:37 +00:00
analysis-inconsistencies-uops.test [llvm-exegesis] Fix PR39096. 2018-09-27 13:26:37 +00:00
analysis-naive-cluster-stabilization.test [llvm-exegesis] Introduce a 'naive' clustering algorithm (PR40880) 2019-03-28 08:55:01 +00:00
analysis-naive-clusterization.test [llvm-exegesis] Introduce a 'naive' clustering algorithm (PR40880) 2019-03-28 08:55:01 +00:00
analysis-same-cluster-for-ops-in-different-sched-clusters.test [llvm-exegesis] Introduce a 'naive' clustering algorithm (PR40880) 2019-03-28 08:55:01 +00:00
analysis-uops-backwards.test [llvm-exegesis] Don't default to running&dumping all analyses to '-' 2019-02-04 09:12:08 +00:00
analysis-uops-variant.test [llvm-exegesis] Don't default to running&dumping all analyses to '-' 2019-02-04 09:12:08 +00:00
analysis-uops.test [llvm-exegesis] Don't default to running&dumping all analyses to '-' 2019-02-04 09:12:08 +00:00
inverse_throughput-by-opcode-name.s [llvm-exegesis] Add throughput mode. 2019-01-30 16:02:20 +00:00
latency-CMOV32rr.s [llvm-exegesis][X86] Randomize CMOVcc/SETcc OPERAND_COND_CODE CondCodes 2019-04-08 10:11:00 +00:00
latency-SBB8rr.s [llvm-exegesis] Allow the target to disable the selection of some registers. 2019-03-26 15:44:57 +00:00
latency-by-opcode-name.s [llvm-exegesis] Serializes registers initial values. 2018-09-25 15:15:54 +00:00
lit.local.cfg [llvm-exegesis] Also check latency mode in local lit. 2018-12-10 07:29:47 +00:00
uops-ADD32mi8.s [llvm-exegesis] Correclty handle all X86 memory encoding formats. 2018-11-07 16:14:55 +00:00
uops-ADD32mr.s [llvm-exegesis] Correclty handle all X86 memory encoding formats. 2018-11-07 16:14:55 +00:00
uops-ADD32rm.s [llvm-exegesis] Correclty handle all X86 memory encoding formats. 2018-11-07 16:14:55 +00:00
uops-BEXTR32rm.s [llvm-exegesis] Correclty handle all X86 memory encoding formats. 2018-11-07 16:14:55 +00:00
uops-BSF16rm.s [llvm-exegesis] Correclty handle all X86 memory encoding formats. 2018-11-07 16:14:55 +00:00
uops-BTR64mr.s [llvm-exegesis] Correclty handle all X86 memory encoding formats. 2018-11-07 16:14:55 +00:00
uops-CMOV16rm-noreg.s [llvm-exegesis] Fix serialization/deserialization of special NoRegister register (PR41448) 2019-04-11 07:20:50 +00:00
uops-VFMADDSS4rm.s [llvm-exegesis] Correclty handle all X86 memory encoding formats. 2018-11-07 16:14:55 +00:00
uops-XCHG64rr.s [llvm-exegesis] Teach llvm-exegesis to handle instructions with multiple tied variables. 2019-02-26 10:54:45 +00:00
uops-by-opcode-name.s [llvm-exegesis] Add lit tests (v2). 2018-09-25 13:59:35 +00:00