[llvm-dev] what can cause a "CPU table is not sorted" assertion

Meador Inge via llvm-dev
Fri, 16 Oct 2015 12:38:11 -0000

On Thu, Oct 15, 2015 at 8:35 PM, Tim Northover via llvm-dev
<llvm-dev at lists.llvm.org> wrote:

>> def : ProcessorModel<"generic", MyTargetModel,
[FeatureDiv, FeatureMul]>;
>> def : ProcessorModel<"or1200",  MyTargetModel,
[FeatureDiv, FeatureMul]>;
>
> Ah! I see the check is actually looking for a strict ordering. Could
> there be 2 CPUs defined with the same name?

That is the conclusion I came to as well.  I suspect that both
"ProcessorModel"
and "Proc" commands are in the .td file.  Something like:

  def : Proc<"generic", [FeatureMul, FeatureDiv]>;
  def : Proc<"or1201",  [FeatureMul, FeatureDiv]>;
  def : ProcessorModel<"generic", MyTargetModel, [FeatureDiv,
FeatureMul]>;
  def : ProcessorModel<"or1200",  MyTargetModel, [FeatureDiv,
FeatureMul]>;

where really only the ProcessorModel ones should be used after adding the
scheduling model.

-- Meador