Skip to content

[SPIR-V] Hitting llvm_unreachable in SPIRVLegalizePointerCast when compiling local resource arrays #154669

@hekota

Description

@hekota

Hitting llvm_unreachable in SPIRVLegalizePointerCast when compiling these two offload-tests cases with SPIR-V:

Feature/ResourceArrays/array-local.test:

RWBuffer<float> BufA : register(u0);
RWBuffer<float> BufB : register(u1);
RWBuffer<float> Out  : register(u2);

float foo(RWBuffer<float> ArgArray[2], uint Index) {
    return ArgArray[0][Index] + ArgArray[1][Index] * 10;
}

float bar(uint Index) {
  RWBuffer<float> LocalArray[2];
  LocalArray[0] = BufA;
  LocalArray[1] = BufB;
  return foo(LocalArray, Index);
}

[numthreads(4,2,1)]
void main(uint GI : SV_GroupIndex) {
  Out[GI] = bar(GI);
}

Feature/ResourceArrays/array-local2.test

RWBuffer<int> X : register(u0);
RWBuffer<int> Y : register(u1);

void SomeFn(RWBuffer<int> B[2], uint Idx, int Val0) {
  B[0] = Y;
  B[0][Idx] = Val0;
}

[numthreads(4,1,1)]
void main(uint GI : SV_GroupIndex) {
  RWBuffer<int> A[2] = {X, Y};
  SomeFn(A, GI, 1);
  A[0][GI] = 2;
}

I am going to mark these two tests as XFAIL for Clang-Vulkan. Please re-enable when fixed.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Active

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions