Use vector size from vector type when dynamic indexing cb vector. (#3530)
This commit is contained in:
Родитель
03cc4f8663
Коммит
ae834522b3
|
@ -6648,12 +6648,8 @@ void TranslateCBGepLegacy(GetElementPtrInst *GEP, Value *handle,
|
|||
}
|
||||
} else {
|
||||
Type *EltTy = GEPIt->getVectorElementType();
|
||||
unsigned size = DL.getTypeSizeInBits(EltTy);
|
||||
unsigned vecSize = 4;
|
||||
if (size == 64)
|
||||
vecSize = 2;
|
||||
else if (size == 16)
|
||||
vecSize = 8;
|
||||
unsigned vecSize = GEPIt->getVectorNumElements();
|
||||
|
||||
// Load the whole register.
|
||||
Value *newLd = GenerateCBLoadLegacy(handle, legacyIndex,
|
||||
/*channelOffset*/ 0, EltTy,
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
// RUN: %dxc -E main -T ps_6_0 %s | FileCheck %s
|
||||
|
||||
// Make sure only 2 cbufferLoadLegacy.
|
||||
// CHECK:call %dx.types.CBufRet.f64 @dx.op.cbufferLoadLegacy.f64(i32 59, %dx.types.Handle %{{.*}}, i32 0)
|
||||
// CHECK:call %dx.types.CBufRet.f64 @dx.op.cbufferLoadLegacy.f64(i32 59, %dx.types.Handle %{{.*}}, i32 1)
|
||||
// CHECK-NOT:call %dx.types.CBufRet.f64
|
||||
|
||||
double4 g;
|
||||
|
||||
float main(int2 i:I) : SV_Target {
|
||||
return g[i.x]+g[i.y];
|
||||
}
|
Загрузка…
Ссылка в новой задаче