@@ -178,23 +178,29 @@ XdHandleType* XdHandleType::get(::llvm::LLVMContext & ctx) {
178178}
179179
180180
181+ VectorKind XdVectorType ::getKind () const {
182+ return static_cast< VectorKind> (int_params ()[0 ]);
183+ }
184+
185+
181186 ::llvm ::Type * XdVectorType ::getElementType () const {
182187 return type_params ()[0 ];
183188 }
184189
185190
186191 uint32_t XdVectorType ::getNumElements () const {
187- return int_params ()[0 ];
192+ return int_params ()[1 ];
188193 }
189194
190- XdVectorType* XdVectorType ::get (::llvm ::Type * elementType, uint32_t numElements) {
195+ XdVectorType* XdVectorType ::get (VectorKind kind, ::llvm ::Type * elementType, uint32_t numElements) {
191196::llvm ::LLVMContext & ctx = elementType- > getContext ();
192197::std ::array< ::llvm ::Type * , 1 > types = {
193198elementType,
194199
195200 };
196- ::std ::array< unsigned, 1 > ints = {
197- numElements,
201+ ::std ::array< unsigned, 2 > ints = {
202+ static_cast< unsigned> (kind),
203+ numElements,
198204
199205 };
200206
@@ -218,13 +224,15 @@ elementType,
218224 return false ;
219225 }
220226
221- if (getNumIntParameters () ! = 1 ) {
227+ if (getNumIntParameters () ! = 2 ) {
222228 errs << " wrong number of int parameters\n" ;
223- errs << " expected: 1 \n" ;
229+ errs << " expected: 2 \n" ;
224230 errs << " actual: " << getNumIntParameters () << ' \n ' ;
225231 return false ;
226232 }
227- auto elementType = getElementType ();
233+ auto kind = getKind ();
234+ (void)kind;
235+ auto elementType = getElementType ();
228236(void)elementType;
229237auto numElements = getNumElements ();
230238(void)numElements;
@@ -519,7 +527,7 @@ index,
519527 }
520528
521529 if (! (::llvm ::isa< XdVectorType> (vectorType))) {
522- errs << " failed check for (XdVectorType ?:$result, any):$vector\n" ;
530+ errs << " failed check for (XdVectorType any, ?:$result, any):$vector\n" ;
523531
524532 errs << " with $vector = " << printable (vectorType) << ' \n ' ;
525533
@@ -550,7 +558,7 @@ index,
550558
551559 const ::llvm ::StringLiteral FromFixedVectorOp ::s_name{" xd.fromfixedvector" };
552560
553- FromFixedVectorOp* FromFixedVectorOp ::create (llvm_dialects ::Builder& b, ::llvm ::Value * source) {
561+ FromFixedVectorOp* FromFixedVectorOp ::create (llvm_dialects ::Builder& b, ::llvm ::Type * resultType, :: llvm :: Value * source) {
554562 ::llvm ::LLVMContext& context = b.getContext ();
555563 ::llvm ::Module& module = * b.GetInsertBlock ()- > getModule ();
556564
@@ -559,8 +567,8 @@ index,
559567 = ExampleDialect ::get (context).getAttributeList (1 );
560568
561569 std ::string mangledName =
562- ::llvm_dialects ::getMangledName (s_name, {XdVectorType :: get (:: llvm ::cast < :: llvm ::FixedVectorType > (source - > getType ()) - > getElementType (), :: llvm ::cast < :: llvm ::FixedVectorType > (source - > getType ()) - > getNumElements ()) });
563- auto fnType = ::llvm ::FunctionType ::get (XdVectorType :: get (:: llvm ::cast < :: llvm ::FixedVectorType > (source - > getType ()) - > getElementType (), :: llvm ::cast < :: llvm ::FixedVectorType > (source - > getType ()) - > getNumElements ()) , true );
570+ ::llvm_dialects ::getMangledName (s_name, {resultType });
571+ auto fnType = ::llvm ::FunctionType ::get (resultType , true );
564572
565573 auto fn = module.getOrInsertFunction (mangledName, fnType, attrs);
566574 ::llvm ::SmallString< 32 > newName;
@@ -612,7 +620,7 @@ source,
612620 }
613621
614622 if (! (::llvm ::isa< XdVectorType> (resultType))) {
615- errs << " failed check for (XdVectorType ?:$scalar_type, ?:$num_elements):$result\n" ;
623+ errs << " failed check for (XdVectorType ?:$kind, ?:$ scalar_type, ?:$num_elements):$result\n" ;
616624
617625 errs << " with $result = " << printable (resultType) << ' \n ' ;
618626
@@ -964,7 +972,7 @@ index,
964972 }
965973
966974 if (! (::llvm ::isa< XdVectorType> (resultType))) {
967- errs << " failed check for (XdVectorType ?:$result, ?:$value, any)\n" ;
975+ errs << " failed check for (XdVectorType ?:$result, any, ?:$value, any)\n" ;
968976
969977 errs << " with $result = " << printable (resultType) << ' \n ' ;
970978
0 commit comments