소스 검색

HLMatrixSubscript lowering: support lowering directly to array

Tex Riddell 6 년 전
부모
커밋
8a54ceba7c
1개의 변경된 파일4개의 추가작업 그리고 1개의 파일을 삭제
  1. 4 1
      lib/HLSL/HLMatrixSubscriptUseReplacer.cpp

+ 4 - 1
lib/HLSL/HLMatrixSubscriptUseReplacer.cpp

@@ -237,7 +237,10 @@ Value *HLMatrixSubscriptUseReplacer::loadVector(IRBuilder<> &Builder) {
   }
 
   // Otherwise load elements one by one
-  Type* ElemTy = LoweredPtr->getType()->getPointerElementType()->getScalarType();
+  // Lowered form may be array when AllowLoweredPtrGEPs == true.
+  Type* LoweredTy = LoweredPtr->getType()->getPointerElementType();
+  Type* ElemTy = LoweredTy->isVectorTy() ? LoweredTy->getScalarType() :
+              cast<ArrayType>(LoweredTy)->getArrayElementType();
   VectorType *VecTy = VectorType::get(ElemTy, static_cast<unsigned>(ElemIndices.size()));
   Value *Result = UndefValue::get(VecTy);
   for (unsigned SubIdx = 0; SubIdx < ElemIndices.size(); ++SubIdx) {