Skip to content

Commit

Permalink
Prevent creation of scalable vectors
Browse files Browse the repository at this point in the history
To create a vector IITDescriptor::getVector() should be called with isScalable arg explicitly set to false
  • Loading branch information
mshelego authored and sys-cmllvm committed Oct 24, 2023
1 parent 146d14d commit 782e521
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions GenXIntrinsics/lib/GenXIntrinsics/GenXIntrinsics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,15 @@ enum IIT_Info {
IIT_F128 = 41
};

static Intrinsic::IITDescriptor getVector(unsigned Width) {
using namespace Intrinsic;
#if VC_INTR_LLVM_VERSION_MAJOR >= 11
return IITDescriptor::getVector(Width, false);
#else
return IITDescriptor::get(IITDescriptor::Vector, Width);
#endif
}

static void
DecodeIITType(unsigned &NextElt, ArrayRef<unsigned char> Infos,
SmallVectorImpl<Intrinsic::IITDescriptor> &OutputTable) {
Expand Down Expand Up @@ -166,39 +175,39 @@ DecodeIITType(unsigned &NextElt, ArrayRef<unsigned char> Infos,
OutputTable.push_back(IITDescriptor::get(IITDescriptor::Integer, 128));
return;
case IIT_V1:
OutputTable.push_back(IITDescriptor::get(IITDescriptor::Vector, 1));
OutputTable.push_back(getVector(1));
DecodeIITType(NextElt, Infos, OutputTable);
return;
case IIT_V2:
OutputTable.push_back(IITDescriptor::get(IITDescriptor::Vector, 2));
OutputTable.push_back(getVector(2));
DecodeIITType(NextElt, Infos, OutputTable);
return;
case IIT_V4:
OutputTable.push_back(IITDescriptor::get(IITDescriptor::Vector, 4));
OutputTable.push_back(getVector(4));
DecodeIITType(NextElt, Infos, OutputTable);
return;
case IIT_V8:
OutputTable.push_back(IITDescriptor::get(IITDescriptor::Vector, 8));
OutputTable.push_back(getVector(8));
DecodeIITType(NextElt, Infos, OutputTable);
return;
case IIT_V16:
OutputTable.push_back(IITDescriptor::get(IITDescriptor::Vector, 16));
OutputTable.push_back(getVector(16));
DecodeIITType(NextElt, Infos, OutputTable);
return;
case IIT_V32:
OutputTable.push_back(IITDescriptor::get(IITDescriptor::Vector, 32));
OutputTable.push_back(getVector(32));
DecodeIITType(NextElt, Infos, OutputTable);
return;
case IIT_V64:
OutputTable.push_back(IITDescriptor::get(IITDescriptor::Vector, 64));
OutputTable.push_back(getVector(64));
DecodeIITType(NextElt, Infos, OutputTable);
return;
case IIT_V512:
OutputTable.push_back(IITDescriptor::get(IITDescriptor::Vector, 512));
OutputTable.push_back(getVector(512));
DecodeIITType(NextElt, Infos, OutputTable);
return;
case IIT_V1024:
OutputTable.push_back(IITDescriptor::get(IITDescriptor::Vector, 1024));
OutputTable.push_back(getVector(1024));
DecodeIITType(NextElt, Infos, OutputTable);
return;
case IIT_PTR:
Expand Down

0 comments on commit 782e521

Please sign in to comment.