dawn-cmake/test/buffer/storage/dynamic_index/write.wgsl.expected.msl
Ben Clayton 51cfe26bb7 writer/hlsl: Simplify UBO accesses for static indexing
Use the new semantic constant value information to significantly reduce the complex indexing logic emitted for UBO accesses.
This will dramatically reduce the number of `for` loops that are decayed to `while` loops.

Change-Id: I1b0adb5edde2b4ed39c6beafc2e28106b86e0edd
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/57701
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
2021-07-13 12:18:13 +00:00

37 lines
862 B
Plaintext

#include <metal_stdlib>
using namespace metal;
struct tint_array_wrapper {
/* 0x0000 */ int4 arr[4];
};
struct Inner {
/* 0x0000 */ packed_int3 a;
/* 0x000c */ int b;
/* 0x0010 */ packed_uint3 c;
/* 0x001c */ uint d;
/* 0x0020 */ packed_float3 e;
/* 0x002c */ float f;
/* 0x0030 */ float2x3 g;
/* 0x0050 */ float3x2 h;
/* 0x0068 */ int8_t tint_pad[8];
/* 0x0070 */ tint_array_wrapper i;
};
struct S {
/* 0x0000 */ Inner arr[1];
};
kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], device S& s [[buffer(0)]]) {
s.arr[idx].a = int3();
s.arr[idx].b = int();
s.arr[idx].c = uint3();
s.arr[idx].d = uint();
s.arr[idx].e = float3();
s.arr[idx].f = float();
s.arr[idx].g = float2x3();
s.arr[idx].h = float3x2();
tint_array_wrapper const tint_symbol_2 = {.arr={}};
s.arr[idx].i = tint_symbol_2;
return;
}