@@ -1211,13 +1211,13 @@ class LowerMatrixIntrinsics {
12111211
12121212    switch  (Inst->getCalledFunction ()->getIntrinsicID ()) {
12131213    case  Intrinsic::matrix_multiply:
1214-       return  LowerMultiply (Inst);
1214+       return  LowerMultiply (Inst, Builder );
12151215    case  Intrinsic::matrix_transpose:
1216-       return  LowerTranspose (Inst);
1216+       return  LowerTranspose (Inst, Builder );
12171217    case  Intrinsic::matrix_column_major_load:
1218-       return  LowerColumnMajorLoad (Inst);
1218+       return  LowerColumnMajorLoad (Inst, Builder );
12191219    case  Intrinsic::matrix_column_major_store:
1220-       return  LowerColumnMajorStore (Inst);
1220+       return  LowerColumnMajorStore (Inst, Builder );
12211221    case  Intrinsic::abs:
12221222    case  Intrinsic::fabs: {
12231223      MatrixTy Result;
@@ -1312,23 +1312,23 @@ class LowerMatrixIntrinsics {
13121312
13131313  // / Lower a load instruction with shape information.
13141314  MatrixTy LowerLoad (Instruction *Inst, Value *Ptr, MaybeAlign Align,
1315-                      Value *Stride, bool  IsVolatile, ShapeInfo Shape) { 
1316-     IRBuilder<> Builder (Inst); 
1315+                      Value *Stride, bool  IsVolatile, ShapeInfo Shape, 
1316+                       IRBuilder<> & Builder) { 
13171317    return  loadMatrix (Inst->getType (), Ptr, Align, Stride, IsVolatile, Shape,
13181318                      Builder);
13191319  }
13201320
13211321  // / Lowers llvm.matrix.column.major.load.
13221322  // /
13231323  // / The intrinsic loads a matrix from memory using a stride between columns.
1324-   MatrixTy LowerColumnMajorLoad (CallInst *Inst) {
1324+   MatrixTy LowerColumnMajorLoad (CallInst *Inst, IRBuilder<> &Builder ) {
13251325    assert (MatrixLayout == MatrixLayoutTy::ColumnMajor &&
13261326           " Intrinsic only supports column-major layout!" 
13271327    Value *Ptr = Inst->getArgOperand (0 );
13281328    Value *Stride = Inst->getArgOperand (1 );
13291329    return  LowerLoad (Inst, Ptr, Inst->getParamAlign (0 ), Stride,
13301330                     cast<ConstantInt>(Inst->getArgOperand (2 ))->isOne (),
1331-                      {Inst->getArgOperand (3 ), Inst->getArgOperand (4 )});
1331+                      {Inst->getArgOperand (3 ), Inst->getArgOperand (4 )}, Builder );
13321332  }
13331333
13341334  // / Stores a sub-matrix \p StoreVal into the \p R x \p C matrix starting at \p
@@ -1373,8 +1373,7 @@ class LowerMatrixIntrinsics {
13731373  // / Lower a store instruction with shape information.
13741374  MatrixTy LowerStore (Instruction *Inst, Value *Matrix, Value *Ptr,
13751375                      MaybeAlign A, Value *Stride, bool  IsVolatile,
1376-                       ShapeInfo Shape) {
1377-     IRBuilder<> Builder (Inst);
1376+                       ShapeInfo Shape, IRBuilder<> &Builder) {
13781377    auto  StoreVal = getMatrix (Matrix, Shape, Builder);
13791378    return  storeMatrix (Matrix->getType (), StoreVal, Ptr, A, Stride, IsVolatile,
13801379                       Builder);
@@ -1383,15 +1382,16 @@ class LowerMatrixIntrinsics {
13831382  // / Lowers llvm.matrix.column.major.store.
13841383  // /
13851384  // / The intrinsic store a matrix back memory using a stride between columns.
1386-   MatrixTy LowerColumnMajorStore (CallInst *Inst) {
1385+   MatrixTy LowerColumnMajorStore (CallInst *Inst, IRBuilder<> &Builder ) {
13871386    assert (MatrixLayout == MatrixLayoutTy::ColumnMajor &&
13881387           " Intrinsic only supports column-major layout!" 
13891388    Value *Matrix = Inst->getArgOperand (0 );
13901389    Value *Ptr = Inst->getArgOperand (1 );
13911390    Value *Stride = Inst->getArgOperand (2 );
13921391    return  LowerStore (Inst, Matrix, Ptr, Inst->getParamAlign (1 ), Stride,
13931392                      cast<ConstantInt>(Inst->getArgOperand (3 ))->isOne (),
1394-                       {Inst->getArgOperand (4 ), Inst->getArgOperand (5 )});
1393+                       {Inst->getArgOperand (4 ), Inst->getArgOperand (5 )},
1394+                       Builder);
13951395  }
13961396
13971397  //  Set elements I..I+NumElts-1 to Block
@@ -2166,8 +2166,7 @@ class LowerMatrixIntrinsics {
21662166  }
21672167
21682168  // / Lowers llvm.matrix.multiply.
2169-   MatrixTy LowerMultiply (CallInst *MatMul) {
2170-     IRBuilder<> Builder (MatMul);
2169+   MatrixTy LowerMultiply (CallInst *MatMul, IRBuilder<> &Builder) {
21712170    auto  *EltType = cast<FixedVectorType>(MatMul->getType ())->getElementType ();
21722171    ShapeInfo LShape (MatMul->getArgOperand (2 ), MatMul->getArgOperand (3 ));
21732172    ShapeInfo RShape (MatMul->getArgOperand (3 ), MatMul->getArgOperand (4 ));
@@ -2192,9 +2191,8 @@ class LowerMatrixIntrinsics {
21922191  }
21932192
21942193  // / Lowers llvm.matrix.transpose.
2195-   MatrixTy LowerTranspose (CallInst *Inst) {
2194+   MatrixTy LowerTranspose (CallInst *Inst, IRBuilder<> &Builder ) {
21962195    MatrixTy Result;
2197-     IRBuilder<> Builder (Inst);
21982196    Value *InputVal = Inst->getArgOperand (0 );
21992197    FixedVectorType *VectorTy = cast<FixedVectorType>(InputVal->getType ());
22002198    ShapeInfo ArgShape (Inst->getArgOperand (1 ), Inst->getArgOperand (2 ));
@@ -2230,13 +2228,15 @@ class LowerMatrixIntrinsics {
22302228  MatrixTy VisitLoad (LoadInst *Inst, const  ShapeInfo &SI, Value *Ptr,
22312229                     IRBuilder<> &Builder) {
22322230    return  LowerLoad (Inst, Ptr, Inst->getAlign (),
2233-                      Builder.getInt64 (SI.getStride ()), Inst->isVolatile (), SI);
2231+                      Builder.getInt64 (SI.getStride ()), Inst->isVolatile (), SI,
2232+                      Builder);
22342233  }
22352234
22362235  MatrixTy VisitStore (StoreInst *Inst, const  ShapeInfo &SI, Value *StoredVal,
22372236                      Value *Ptr, IRBuilder<> &Builder) {
22382237    return  LowerStore (Inst, StoredVal, Ptr, Inst->getAlign (),
2239-                       Builder.getInt64 (SI.getStride ()), Inst->isVolatile (), SI);
2238+                       Builder.getInt64 (SI.getStride ()), Inst->isVolatile (), SI,
2239+                       Builder);
22402240  }
22412241
22422242  // / Lower binary operators.
0 commit comments