dawn-cmake/test/vk-gl-cts/graphicsfuzz/stable-binarysearch-tree-wi.../1.wgsl

319 lines
7.4 KiB
WebGPU Shading Language

struct BST {
data : i32;
leftIndex : i32;
rightIndex : i32;
};
struct QuicksortObject {
numbers : array<i32, 10>;
};
struct buf0 {
injectionSwitch : vec2<f32>;
};
var<private> obj : QuicksortObject;
var<private> tree : array<BST, 10>;
[[group(0), binding(0)]] var<uniform> x_50 : buf0;
var<private> x_GLF_color : vec4<f32>;
fn makeTreeNode_struct_BST_i1_i1_i11_i1_(node : ptr<function, BST>, data : ptr<function, i32>) {
let x_208 : i32 = *(data);
(*(node)).data = x_208;
(*(node)).leftIndex = -1;
(*(node)).rightIndex = -1;
return;
}
fn insert_i1_i1_(treeIndex : ptr<function, i32>, data_1 : ptr<function, i32>) {
var baseIndex : i32;
var param : BST;
var param_1 : i32;
var param_2 : BST;
var param_3 : i32;
baseIndex = 0;
loop {
let x_217 : i32 = baseIndex;
let x_218 : i32 = *(treeIndex);
if ((x_217 <= x_218)) {
} else {
break;
}
let x_221 : i32 = *(data_1);
let x_222 : i32 = baseIndex;
let x_224 : i32 = tree[x_222].data;
if ((x_221 <= x_224)) {
let x_229 : i32 = baseIndex;
let x_231 : i32 = tree[x_229].leftIndex;
if ((x_231 == -1)) {
let x_236 : i32 = baseIndex;
let x_237 : i32 = *(treeIndex);
tree[x_236].leftIndex = x_237;
let x_239 : i32 = *(treeIndex);
let x_241 : BST = tree[x_239];
param = x_241;
let x_242 : i32 = *(data_1);
param_1 = x_242;
makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param), &(param_1));
let x_244 : BST = param;
tree[x_239] = x_244;
return;
} else {
let x_246 : i32 = baseIndex;
let x_248 : i32 = tree[x_246].leftIndex;
baseIndex = x_248;
continue;
}
return;
} else {
let x_249 : i32 = baseIndex;
let x_251 : i32 = tree[x_249].rightIndex;
if ((x_251 == -1)) {
let x_256 : i32 = baseIndex;
let x_257 : i32 = *(treeIndex);
tree[x_256].rightIndex = x_257;
let x_259 : i32 = *(treeIndex);
let x_261 : BST = tree[x_259];
param_2 = x_261;
let x_262 : i32 = *(data_1);
param_3 = x_262;
makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_2), &(param_3));
let x_264 : BST = param_2;
tree[x_259] = x_264;
return;
} else {
let x_266 : i32 = baseIndex;
let x_268 : i32 = tree[x_266].rightIndex;
baseIndex = x_268;
continue;
}
return;
}
return;
}
return;
}
fn identity_i1_(a : ptr<function, i32>) -> i32 {
let x_202 : i32 = *(a);
let x_203 : i32 = *(a);
obj.numbers[x_202] = x_203;
let x_206 : i32 = obj.numbers[2];
return x_206;
}
fn search_i1_(target : ptr<function, i32>) -> i32 {
var index : i32;
var currentNode : BST;
var x_270 : i32;
index = 0;
loop {
let x_275 : i32 = index;
if ((x_275 != -1)) {
} else {
break;
}
let x_278 : i32 = index;
let x_280 : BST = tree[x_278];
currentNode = x_280;
let x_282 : i32 = currentNode.data;
let x_283 : i32 = *(target);
if ((x_282 == x_283)) {
let x_287 : i32 = *(target);
return x_287;
}
let x_288 : i32 = *(target);
let x_290 : i32 = currentNode.data;
if ((x_288 > x_290)) {
let x_296 : i32 = currentNode.rightIndex;
x_270 = x_296;
} else {
let x_298 : i32 = currentNode.leftIndex;
x_270 = x_298;
}
let x_299 : i32 = x_270;
index = x_299;
}
return -1;
}
fn main_1() {
var treeIndex_1 : i32;
var param_4 : BST;
var param_5 : i32;
var param_6 : i32;
var param_7 : i32;
var param_8 : i32;
var param_9 : i32;
var param_10 : i32;
var param_11 : i32;
var param_12 : i32;
var param_13 : i32;
var param_14 : i32;
var param_15 : i32;
var param_16 : i32;
var param_17 : i32;
var param_18 : i32;
var param_19 : i32;
var param_20 : i32;
var param_21 : i32;
var param_22 : i32;
var param_23 : i32;
var pp : i32;
var looplimiter0 : i32;
var i : i32;
var param_24 : i32;
var count : i32;
var i_1 : i32;
var result : i32;
var param_25 : i32;
treeIndex_1 = 0;
let x_101 : BST = tree[0];
param_4 = x_101;
param_5 = 9;
makeTreeNode_struct_BST_i1_i1_i11_i1_(&(param_4), &(param_5));
let x_103 : BST = param_4;
tree[0] = x_103;
let x_105 : i32 = treeIndex_1;
treeIndex_1 = (x_105 + 1);
let x_107 : i32 = treeIndex_1;
param_6 = x_107;
param_7 = 5;
insert_i1_i1_(&(param_6), &(param_7));
let x_109 : i32 = treeIndex_1;
treeIndex_1 = (x_109 + 1);
let x_111 : i32 = treeIndex_1;
param_8 = x_111;
param_9 = 12;
insert_i1_i1_(&(param_8), &(param_9));
let x_113 : i32 = treeIndex_1;
treeIndex_1 = (x_113 + 1);
let x_115 : i32 = treeIndex_1;
param_10 = x_115;
param_11 = 15;
insert_i1_i1_(&(param_10), &(param_11));
let x_117 : i32 = treeIndex_1;
treeIndex_1 = (x_117 + 1);
let x_119 : i32 = treeIndex_1;
param_12 = x_119;
param_13 = 7;
insert_i1_i1_(&(param_12), &(param_13));
let x_121 : i32 = treeIndex_1;
treeIndex_1 = (x_121 + 1);
let x_123 : i32 = treeIndex_1;
param_14 = x_123;
param_15 = 8;
insert_i1_i1_(&(param_14), &(param_15));
let x_125 : i32 = treeIndex_1;
treeIndex_1 = (x_125 + 1);
let x_127 : i32 = treeIndex_1;
param_16 = x_127;
param_17 = 2;
insert_i1_i1_(&(param_16), &(param_17));
let x_129 : i32 = treeIndex_1;
treeIndex_1 = (x_129 + 1);
let x_131 : i32 = treeIndex_1;
param_18 = x_131;
param_19 = 6;
insert_i1_i1_(&(param_18), &(param_19));
let x_133 : i32 = treeIndex_1;
treeIndex_1 = (x_133 + 1);
let x_135 : i32 = treeIndex_1;
param_20 = x_135;
param_21 = 17;
insert_i1_i1_(&(param_20), &(param_21));
let x_137 : i32 = treeIndex_1;
treeIndex_1 = (x_137 + 1);
let x_139 : i32 = treeIndex_1;
param_22 = x_139;
param_23 = 13;
insert_i1_i1_(&(param_22), &(param_23));
pp = 0;
looplimiter0 = 0;
i = 0;
loop {
let x_145 : i32 = i;
if ((x_145 < 10000)) {
} else {
break;
}
let x_148 : i32 = looplimiter0;
let x_150 : f32 = x_50.injectionSwitch.y;
if ((x_148 >= i32(x_150))) {
let x_156 : f32 = x_50.injectionSwitch.y;
param_24 = (1 + i32(x_156));
let x_159 : i32 = identity_i1_(&(param_24));
pp = x_159;
break;
}
let x_160 : i32 = looplimiter0;
looplimiter0 = (x_160 + 1);
continuing {
let x_162 : i32 = i;
i = (x_162 + 1);
}
}
let x_164 : i32 = pp;
if ((x_164 != 2)) {
return;
}
count = 0;
i_1 = 0;
loop {
let x_172 : i32 = i_1;
if ((x_172 < 20)) {
} else {
break;
}
let x_175 : i32 = i_1;
param_25 = x_175;
let x_176 : i32 = search_i1_(&(param_25));
result = x_176;
let x_177 : i32 = i_1;
switch(x_177) {
case 2, 5, 6, 7, 8, 9, 12, 13, 15, 17: {
let x_187 : i32 = result;
let x_188 : i32 = i_1;
if ((x_187 == x_188)) {
let x_192 : i32 = count;
count = (x_192 + 1);
}
}
default: {
let x_181 : i32 = result;
if ((x_181 == -1)) {
let x_185 : i32 = count;
count = (x_185 + 1);
}
}
}
continuing {
let x_194 : i32 = i_1;
i_1 = (x_194 + 1);
}
}
let x_196 : i32 = count;
if ((x_196 == 20)) {
x_GLF_color = vec4<f32>(1.0, 0.0, 0.0, 1.0);
} else {
x_GLF_color = vec4<f32>(0.0, 0.0, 1.0, 1.0);
}
return;
}
struct main_out {
[[location(0)]]
x_GLF_color_1 : vec4<f32>;
};
[[stage(fragment)]]
fn main() -> main_out {
main_1();
return main_out(x_GLF_color);
}