use LocalVariable init

This commit is contained in:
teoxoy 2023-04-19 15:16:46 +02:00 committed by Teodor Tanasoaia
parent a730236b68
commit 3fb4c333a7
109 changed files with 5141 additions and 5590 deletions

View File

@ -1605,7 +1605,7 @@ impl<'a, W: Write> Writer<'a, W> {
// Write the constant
// `write_constant` adds no trailing or leading space/newline
self.write_const_expr(init)?;
self.write_expr(init, &ctx)?;
} else if is_value_init_supported(self.module, local.ty) {
write!(self.out, " = ")?;
self.write_zero_init_value(local.ty)?;

View File

@ -1238,7 +1238,7 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> {
write!(self.out, " = ")?;
// Write the local initializer if needed
if let Some(init) = local.init {
self.write_const_expression(module, init)?;
self.write_expr(module, init, func_ctx)?;
} else {
// Zero initialize local variables
self.write_default_init(module, local.ty)?;

View File

@ -3557,29 +3557,6 @@ impl<W: Write> Writer<W> {
writeln!(self.out, ") {{")?;
for (local_handle, local) in fun.local_variables.iter() {
let ty_name = TypeContext {
handle: local.ty,
gctx: module.to_ctx(),
names: &self.names,
access: crate::StorageAccess::empty(),
binding: None,
first_time: false,
};
let local_name = &self.names[&NameKey::FunctionLocal(fun_handle, local_handle)];
write!(self.out, "{}{} {}", back::INDENT, ty_name, local_name)?;
match local.init {
Some(value) => {
write!(self.out, " = ")?;
self.put_const_expression(value, module, mod_info)?;
}
None => {
write!(self.out, " = {{}}")?;
}
};
writeln!(self.out, ";")?;
}
let guarded_indices =
index::find_checked_indexes(module, fun, fun_info, options.bounds_check_policies);
@ -3596,6 +3573,30 @@ impl<W: Write> Writer<W> {
},
result_struct: None,
};
for (local_handle, local) in fun.local_variables.iter() {
let ty_name = TypeContext {
handle: local.ty,
gctx: module.to_ctx(),
names: &self.names,
access: crate::StorageAccess::empty(),
binding: None,
first_time: false,
};
let local_name = &self.names[&NameKey::FunctionLocal(fun_handle, local_handle)];
write!(self.out, "{}{} {}", back::INDENT, ty_name, local_name)?;
match local.init {
Some(value) => {
write!(self.out, " = ")?;
self.put_expression(value, &context.expression, true)?;
}
None => {
write!(self.out, " = {{}}")?;
}
};
writeln!(self.out, ";")?;
}
self.named_expressions.clear();
self.update_expressions_to_bake(fun, fun_info, &context.expression);
self.put_block(back::Level(1), &fun.body, &context)?;
@ -4112,31 +4113,6 @@ impl<W: Write> Writer<W> {
}
}
// Finally, declare all the local variables that we need
//TODO: we can postpone this till the relevant expressions are emitted
for (local_handle, local) in fun.local_variables.iter() {
let name = &self.names[&NameKey::EntryPointLocal(ep_index as _, local_handle)];
let ty_name = TypeContext {
handle: local.ty,
gctx: module.to_ctx(),
names: &self.names,
access: crate::StorageAccess::empty(),
binding: None,
first_time: false,
};
write!(self.out, "{}{} {}", back::INDENT, ty_name, name)?;
match local.init {
Some(value) => {
write!(self.out, " = ")?;
self.put_const_expression(value, module, mod_info)?;
}
None => {
write!(self.out, " = {{}}")?;
}
};
writeln!(self.out, ";")?;
}
let guarded_indices =
index::find_checked_indexes(module, fun, fun_info, options.bounds_check_policies);
@ -4153,6 +4129,32 @@ impl<W: Write> Writer<W> {
},
result_struct: Some(&stage_out_name),
};
// Finally, declare all the local variables that we need
//TODO: we can postpone this till the relevant expressions are emitted
for (local_handle, local) in fun.local_variables.iter() {
let name = &self.names[&NameKey::EntryPointLocal(ep_index as _, local_handle)];
let ty_name = TypeContext {
handle: local.ty,
gctx: module.to_ctx(),
names: &self.names,
access: crate::StorageAccess::empty(),
binding: None,
first_time: false,
};
write!(self.out, "{}{} {}", back::INDENT, ty_name, name)?;
match local.init {
Some(value) => {
write!(self.out, " = ")?;
self.put_expression(value, &context.expression, true)?;
}
None => {
write!(self.out, " = {{}}")?;
}
};
writeln!(self.out, ";")?;
}
self.named_expressions.clear();
self.update_expressions_to_bake(fun, fun_info, &context.expression);
self.put_block(back::Level(1), &fun.body, &context)?;

View File

@ -252,13 +252,39 @@ impl<'w> BlockContext<'w> {
self.temp_list.push(self.cached[component]);
}
let id = self.gen_id();
block.body.push(Instruction::composite_construct(
result_type_id,
id,
&self.temp_list,
));
id
if self.ir_function.expressions.is_const(expr_handle) {
let ty = self
.writer
.get_expression_lookup_type(&self.fun_info[expr_handle].ty);
self.writer.get_constant_composite(ty, &self.temp_list)
} else {
let id = self.gen_id();
block.body.push(Instruction::composite_construct(
result_type_id,
id,
&self.temp_list,
));
id
}
}
crate::Expression::Splat { size, value } => {
let value_id = self.cached[value];
let components = &[value_id; 4][..size as usize];
if self.ir_function.expressions.is_const(expr_handle) {
let ty = self
.writer
.get_expression_lookup_type(&self.fun_info[expr_handle].ty);
self.writer.get_constant_composite(ty, components)
} else {
let id = self.gen_id();
block.body.push(Instruction::composite_construct(
result_type_id,
id,
components,
));
id
}
}
crate::Expression::Access { base, index: _ } if self.is_intermediate(base) => {
// See `is_intermediate`; we'll handle this later in
@ -405,17 +431,6 @@ impl<'w> BlockContext<'w> {
crate::Expression::GlobalVariable(handle) => {
self.writer.global_variables[handle.index()].access_id
}
crate::Expression::Splat { size, value } => {
let value_id = self.cached[value];
let components = [value_id; 4];
let id = self.gen_id();
block.body.push(Instruction::composite_construct(
result_type_id,
id,
&components[..size as usize],
));
id
}
crate::Expression::Swizzle {
size,
vector,
@ -1758,7 +1773,9 @@ impl<'w> BlockContext<'w> {
match *statement {
crate::Statement::Emit(ref range) => {
for handle in range.clone() {
self.cache_expression_value(handle, &mut block)?;
if !self.ir_function.expressions.is_const(handle) {
self.cache_expression_value(handle, &mut block)?;
}
}
}
crate::Statement::Block(ref block_statements) => {

View File

@ -338,37 +338,6 @@ impl Writer {
) -> Result<Word, Error> {
let mut function = Function::default();
for (handle, variable) in ir_function.local_variables.iter() {
let id = self.id_gen.next();
if self.flags.contains(WriterFlags::DEBUG) {
if let Some(ref name) = variable.name {
self.debugs.push(Instruction::name(id, name));
}
}
let init_word = variable
.init
.map(|constant| self.constant_ids[constant.index()]);
let pointer_type_id =
self.get_pointer_id(&ir_module.types, variable.ty, spirv::StorageClass::Function)?;
let instruction = Instruction::variable(
pointer_type_id,
id,
spirv::StorageClass::Function,
init_word.or_else(|| match ir_module.types[variable.ty].inner {
crate::TypeInner::RayQuery => None,
_ => {
let type_id = self.get_type_id(LookupType::Handle(variable.ty));
Some(self.get_constant_null(type_id))
}
}),
);
function
.variables
.insert(handle, LocalVariable { id, instruction });
}
let prelude_id = self.id_gen.next();
let mut prelude = Block::new(prelude_id);
let mut ep_context = EntryPointContext {
@ -656,7 +625,48 @@ impl Writer {
// fill up the pre-emitted expressions
context.cached.reset(ir_function.expressions.len());
for (handle, expr) in ir_function.expressions.iter() {
if expr.needs_pre_emit() {
if (expr.needs_pre_emit() && !matches!(*expr, crate::Expression::LocalVariable(_)))
|| ir_function.expressions.is_const(handle)
{
context.cache_expression_value(handle, &mut prelude)?;
}
}
for (handle, variable) in ir_function.local_variables.iter() {
let id = context.gen_id();
if context.writer.flags.contains(WriterFlags::DEBUG) {
if let Some(ref name) = variable.name {
context.writer.debugs.push(Instruction::name(id, name));
}
}
let init_word = variable.init.map(|constant| context.cached[constant]);
let pointer_type_id = context.writer.get_pointer_id(
&ir_module.types,
variable.ty,
spirv::StorageClass::Function,
)?;
let instruction = Instruction::variable(
pointer_type_id,
id,
spirv::StorageClass::Function,
init_word.or_else(|| match ir_module.types[variable.ty].inner {
crate::TypeInner::RayQuery => None,
_ => {
let type_id = context.get_type_id(LookupType::Handle(variable.ty));
Some(context.writer.write_constant_null(type_id))
}
}),
);
context
.function
.variables
.insert(handle, LocalVariable { id, instruction });
}
for (handle, expr) in ir_function.expressions.iter() {
if expr.needs_pre_emit() && matches!(*expr, crate::Expression::LocalVariable(_)) {
context.cache_expression_value(handle, &mut prelude)?;
}
}

View File

@ -292,7 +292,7 @@ impl<W: Write> Writer<W> {
// Write the constant
// `write_constant` adds no trailing or leading space/newline
self.write_const_expression(module, init)?;
self.write_expr(module, init, func_ctx)?;
}
// Finish the local with `;` and add a newline (only for readability)

View File

@ -27,7 +27,7 @@ impl<'a> FunctionTracer<'a> {
for (_, local) in self.function.local_variables.iter() {
self.trace_type(local.ty);
if let Some(init) = local.init {
self.trace_const_expression(init);
self.trace_expression(init);
}
}
@ -48,12 +48,6 @@ impl<'a> FunctionTracer<'a> {
self.as_expression().trace_expression(expr);
}
pub fn trace_const_expression(&mut self, expr: Handle<crate::Expression>) {
self.as_expression()
.as_const_expression()
.trace_expression(expr);
}
fn as_type(&mut self) -> super::types::TypeTracer {
super::types::TypeTracer {
types: &self.module.types,
@ -99,7 +93,7 @@ impl FunctionMap {
log::trace!("adjusting local variable {:?}", local.name);
module_map.types.adjust(&mut local.ty);
if let Some(ref mut init) = local.init {
module_map.const_expressions.adjust(init);
self.expressions.adjust(init);
}
}

View File

@ -988,18 +988,16 @@ impl<'a> Context<'a> {
// pointer type which is required for dynamic indexing
if !constant_index {
if let Some((constant, ty)) = var.constant {
let local =
self.locals.append(
LocalVariable {
name: None,
ty,
init: Some(self.module.const_expressions.append(
Expression::Constant(constant),
Span::default(),
)),
},
Span::default(),
);
let init = self
.add_expression(Expression::Constant(constant), Span::default())?;
let local = self.locals.append(
LocalVariable {
name: None,
ty,
init: Some(init),
},
Span::default(),
);
self.add_expression(Expression::LocalVariable(local), Span::default())?
} else {

View File

@ -1395,7 +1395,7 @@ impl<I: Iterator<Item = u32>> Frontend<I> {
let init_id = self.next()?;
let lconst = self.lookup_constant.lookup(init_id)?;
Some(
ctx.const_expressions
ctx.expressions
.append(crate::Expression::Constant(lconst.handle), span),
)
} else {

View File

@ -1031,6 +1031,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
let mut typifier = Typifier::default();
let mut body = self.block(
&f.body,
false,
StatementContext {
local_table: &mut local_table,
globals: ctx.globals,
@ -1091,12 +1092,13 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
fn block(
&mut self,
b: &ast::Block<'source>,
is_inside_loop: bool,
mut ctx: StatementContext<'source, '_, '_>,
) -> Result<crate::Block, Error<'source>> {
let mut block = crate::Block::default();
for stmt in b.stmts.iter() {
self.statement(stmt, &mut block, ctx.reborrow())?;
self.statement(stmt, &mut block, is_inside_loop, ctx.reborrow())?;
}
Ok(block)
@ -1106,11 +1108,12 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
&mut self,
stmt: &ast::Statement<'source>,
block: &mut crate::Block,
is_inside_loop: bool,
mut ctx: StatementContext<'source, '_, '_>,
) -> Result<(), Error<'source>> {
let out = match stmt.kind {
ast::StatementKind::Block(ref block) => {
let block = self.block(block, ctx.reborrow())?;
let block = self.block(block, is_inside_loop, ctx.reborrow())?;
crate::Statement::Block(block)
}
ast::StatementKind::LocalDecl(ref decl) => match *decl {
@ -1191,11 +1194,21 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
}
};
let (const_initializer, initializer) = {
match initializer {
Some(init) if ctx.naga_expressions.is_const(init) => {
(Some(init), is_inside_loop.then_some(init))
}
Some(init) => (None, Some(init)),
None => (None, None),
}
};
let var = ctx.variables.append(
crate::LocalVariable {
name: Some(v.name.name.to_string()),
ty,
init: None,
init: const_initializer,
},
stmt.span,
);
@ -1234,8 +1247,8 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
self.expression(condition, ctx.as_expression(block, &mut emitter))?;
block.extend(emitter.finish(ctx.naga_expressions));
let accept = self.block(accept, ctx.reborrow())?;
let reject = self.block(reject, ctx.reborrow())?;
let accept = self.block(accept, is_inside_loop, ctx.reborrow())?;
let reject = self.block(reject, is_inside_loop, ctx.reborrow())?;
crate::Statement::If {
condition,
@ -1282,7 +1295,7 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
}
ast::SwitchValue::Default => crate::SwitchValue::Default,
},
body: self.block(&case.body, ctx.reborrow())?,
body: self.block(&case.body, is_inside_loop, ctx.reborrow())?,
fall_through: case.fall_through,
})
})
@ -1295,8 +1308,8 @@ impl<'source, 'temp> Lowerer<'source, 'temp> {
ref continuing,
break_if,
} => {
let body = self.block(body, ctx.reborrow())?;
let mut continuing = self.block(continuing, ctx.reborrow())?;
let body = self.block(body, true, ctx.reborrow())?;
let mut continuing = self.block(continuing, true, ctx.reborrow())?;
let mut emitter = Emitter::default();
emitter.start(ctx.naga_expressions);

View File

@ -978,9 +978,7 @@ pub struct LocalVariable {
pub name: Option<String>,
/// The type of this variable.
pub ty: Handle<Type>,
/// Initial value for this variable.
///
/// Expression handle lives in const_expressions
/// Initial value for this variable. Must be a const-expression.
pub init: Option<Handle<Expression>>,
}

View File

@ -91,6 +91,20 @@ pub enum ExprType {
// Math
// As
// TODO(teoxoy): consider accumulating this metadata instead of recursing through subexpressions
impl Arena<Expression> {
pub fn is_const(&self, handle: Handle<Expression>) -> bool {
match self[handle] {
Expression::Literal(_) | Expression::ZeroValue(_) | Expression::Constant(_) => true,
Expression::Compose { ref components, .. } => {
components.iter().all(|h| self.is_const(*h))
}
Expression::Splat { ref value, .. } => self.is_const(*value),
_ => false,
}
}
}
impl<'a, F: FnMut(&mut Arena<Expression>, Expression, Span) -> Handle<Expression>>
ConstantEvaluator<'a, F>
{

View File

@ -1041,6 +1041,12 @@ impl ModuleInfo {
}
}
for (_, expr) in fun.local_variables.iter() {
if let Some(init) = expr.init {
let _ = info.add_ref(init);
}
}
let uniformity = info.process_block(&fun.body, &self.functions, None, &fun.expressions)?;
info.uniformity = uniformity.result;
info.may_kill = uniformity.exit.contains(ExitFlags::MAY_KILL);

View File

@ -941,7 +941,7 @@ impl super::Validator {
&self,
var: &crate::LocalVariable,
gctx: crate::proc::GlobalCtx,
mod_info: &ModuleInfo,
fun_info: &FunctionInfo,
) -> Result<(), LocalVariableError> {
log::debug!("var {:?}", var);
let type_info = self
@ -954,7 +954,7 @@ impl super::Validator {
if let Some(init) = var.init {
let decl_ty = &gctx.types[var.ty].inner;
let init_ty = mod_info[init].inner_with(gctx.types);
let init_ty = fun_info[init].ty.inner_with(gctx.types);
if !decl_ty.equivalent(init_ty, gctx.types) {
return Err(LocalVariableError::InitializerType);
}
@ -975,7 +975,7 @@ impl super::Validator {
#[cfg(feature = "validate")]
for (var_handle, var) in fun.local_variables.iter() {
self.validate_local_var(var, module.to_ctx(), mod_info)
self.validate_local_var(var, module.to_ctx(), &info)
.map_err(|source| {
FunctionError::LocalVariable {
handle: var_handle,

View File

@ -131,8 +131,8 @@ impl super::Validator {
for (_handle, local_variable) in local_variables.iter() {
let &crate::LocalVariable { name: _, ty, init } = local_variable;
validate_type(ty)?;
if let Some(init_constant) = init {
validate_const_expr(init_constant)?;
if let Some(init) = init {
Self::validate_expression_handle(init, expressions)?;
}
}

View File

@ -66,7 +66,7 @@
non_uniform_result: Some(2),
requirements: (""),
),
ref_count: 15,
ref_count: 14,
assignable_global: None,
ty: Value(Pointer(
base: 3,
@ -637,7 +637,7 @@
non_uniform_result: Some(50),
requirements: (""),
),
ref_count: 8,
ref_count: 7,
assignable_global: None,
ty: Value(Pointer(
base: 16,
@ -1164,7 +1164,7 @@
non_uniform_result: Some(2),
requirements: (""),
),
ref_count: 15,
ref_count: 14,
assignable_global: None,
ty: Value(Pointer(
base: 3,
@ -1777,7 +1777,7 @@
non_uniform_result: Some(54),
requirements: (""),
),
ref_count: 9,
ref_count: 8,
assignable_global: None,
ty: Value(Pointer(
base: 20,
@ -2667,7 +2667,7 @@
non_uniform_result: Some(3),
requirements: (""),
),
ref_count: 4,
ref_count: 3,
assignable_global: None,
ty: Value(Pointer(
base: 21,
@ -3803,7 +3803,7 @@
non_uniform_result: Some(6),
requirements: (""),
),
ref_count: 2,
ref_count: 1,
assignable_global: None,
ty: Value(Pointer(
base: 28,

View File

@ -57,7 +57,7 @@
non_uniform_result: Some(4),
requirements: (""),
),
ref_count: 4,
ref_count: 3,
assignable_global: None,
ty: Value(Pointer(
base: 1,

View File

@ -625,7 +625,16 @@
),
(
uniformity: (
non_uniform_result: Some(20),
non_uniform_result: None,
requirements: (""),
),
ref_count: 1,
assignable_global: None,
ty: Handle(2),
),
(
uniformity: (
non_uniform_result: Some(21),
requirements: (""),
),
ref_count: 3,
@ -637,7 +646,16 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: None,
requirements: (""),
),
ref_count: 1,
assignable_global: None,
ty: Handle(3),
),
(
uniformity: (
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 11,
@ -649,7 +667,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -708,7 +726,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -720,7 +738,7 @@
),
(
uniformity: (
non_uniform_result: Some(20),
non_uniform_result: Some(21),
requirements: (""),
),
ref_count: 1,
@ -729,7 +747,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -752,7 +770,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -761,7 +779,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -775,7 +793,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -789,7 +807,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -807,7 +825,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -861,7 +879,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -870,7 +888,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -884,7 +902,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -898,7 +916,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -914,7 +932,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -940,7 +958,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -949,7 +967,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -963,7 +981,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -977,7 +995,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -993,7 +1011,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1019,7 +1037,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1028,7 +1046,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1042,7 +1060,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1056,7 +1074,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1072,7 +1090,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1084,7 +1102,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1180,7 +1198,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1189,7 +1207,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1242,7 +1260,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1251,7 +1269,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1265,7 +1283,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1279,7 +1297,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1295,7 +1313,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1321,7 +1339,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1330,7 +1348,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1344,7 +1362,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1358,7 +1376,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1374,7 +1392,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1400,7 +1418,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1409,7 +1427,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1423,7 +1441,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1437,7 +1455,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1453,7 +1471,7 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1465,7 +1483,16 @@
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
assignable_global: None,
ty: Handle(2),
),
(
uniformity: (
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1483,16 +1510,16 @@
),
(
uniformity: (
non_uniform_result: Some(20),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
assignable_global: None,
ty: Handle(2),
ty: Handle(3),
),
(
uniformity: (
non_uniform_result: Some(21),
non_uniform_result: Some(23),
requirements: (""),
),
ref_count: 1,
@ -1506,20 +1533,11 @@
),
ref_count: 1,
assignable_global: None,
ty: Handle(3),
),
(
uniformity: (
non_uniform_result: Some(20),
requirements: (""),
),
ref_count: 1,
assignable_global: None,
ty: Handle(2),
),
(
uniformity: (
non_uniform_result: Some(20),
non_uniform_result: Some(21),
requirements: (""),
),
ref_count: 1,
@ -1701,7 +1719,5 @@
kind: Sint,
width: 4,
)),
Handle(2),
Handle(3),
],
)

View File

@ -47,8 +47,7 @@ void main() {
}
memoryBarrierShared();
barrier();
vec4 arr[2] = vec4[2](vec4(0.0), vec4(0.0));
arr = vec4[2](vec4(6.0), vec4(7.0));
vec4 arr[2] = vec4[2](vec4(6.0), vec4(7.0));
assign_through_ptr_fn(val);
assign_array_through_ptr_fn(arr);
return;

View File

@ -34,9 +34,8 @@ uniform MatCx2InArray_block_3Vertex { MatCx2InArray _group_0_binding_3_vs; };
void test_matrix_within_struct_accesses() {
int idx = 0;
Baz t = Baz(mat3x2(0.0));
idx = 1;
int idx = 1;
Baz t = Baz(mat3x2(vec2(1.0), vec2(2.0), vec2(3.0)));
int _e3 = idx;
idx = (_e3 - 1);
mat3x2 l0_ = _group_0_binding_1_vs.m;
@ -51,7 +50,6 @@ void test_matrix_within_struct_accesses() {
int _e36 = idx;
int _e38 = idx;
float l6_ = _group_0_binding_1_vs.m[_e36][_e38];
t = Baz(mat3x2(vec2(1.0), vec2(2.0), vec2(3.0)));
int _e51 = idx;
idx = (_e51 + 1);
t.m = mat3x2(vec2(6.0), vec2(5.0), vec2(4.0));
@ -70,9 +68,8 @@ void test_matrix_within_struct_accesses() {
}
void test_matrix_within_array_within_struct_accesses() {
int idx_1 = 0;
int idx_1 = 1;
MatCx2InArray t_1 = MatCx2InArray(mat4x2[2](mat4x2(0.0), mat4x2(0.0)));
idx_1 = 1;
int _e3 = idx_1;
idx_1 = (_e3 - 1);
mat4x2 l0_1[2] = _group_0_binding_3_vs.am;
@ -88,7 +85,6 @@ void test_matrix_within_array_within_struct_accesses() {
int _e46 = idx_1;
int _e48 = idx_1;
float l7_ = _group_0_binding_3_vs.am[0][_e46][_e48];
t_1 = MatCx2InArray(mat4x2[2](mat4x2(0.0), mat4x2(0.0)));
int _e55 = idx_1;
idx_1 = (_e55 + 1);
t_1.am = mat4x2[2](mat4x2(0.0), mat4x2(0.0));
@ -130,7 +126,6 @@ void main() {
uint vi = uint(gl_VertexID);
float foo = 0.0;
int c2_[5] = int[5](0, 0, 0, 0, 0);
foo = 0.0;
float baz_1 = foo;
foo = 1.0;
test_matrix_within_struct_accesses();

View File

@ -16,15 +16,6 @@ void main() {
vec2 f2_ = vec2(0.0);
vec3 f3_ = vec3(0.0);
vec4 f4_ = vec4(0.0);
i2_ = ivec2(0);
i3_ = ivec3(0);
i4_ = ivec4(0);
u2_ = uvec2(0u);
u3_ = uvec3(0u);
u4_ = uvec4(0u);
f2_ = vec2(0.0);
f3_ = vec3(0.0);
f4_ = vec4(0.0);
ivec2 _e27 = i2_;
u2_ = uvec2(_e27);
ivec3 _e29 = i3_;

View File

@ -17,16 +17,6 @@ void main() {
uvec4 u4_ = uvec4(0u);
vec2 f2_ = vec2(0.0);
vec4 f4_ = vec4(0.0);
i = 0;
i2_ = ivec2(0);
i3_ = ivec3(0);
i4_ = ivec4(0);
u = 0u;
u2_ = uvec2(0u);
u3_ = uvec3(0u);
u4_ = uvec4(0u);
f2_ = vec2(0.0);
f4_ = vec4(0.0);
vec4 _e28 = f4_;
u = packSnorm4x8(_e28);
vec4 _e30 = f4_;

View File

@ -35,9 +35,9 @@ void main() {
uvec3 global_invocation_id = gl_GlobalInvocationID;
vec2 vPos = vec2(0.0);
vec2 vVel = vec2(0.0);
vec2 cMass = vec2(0.0);
vec2 cVel = vec2(0.0);
vec2 colVel = vec2(0.0);
vec2 cMass = vec2(0.0, 0.0);
vec2 cVel = vec2(0.0, 0.0);
vec2 colVel = vec2(0.0, 0.0);
int cMassCount = 0;
int cVelCount = 0;
vec2 pos = vec2(0.0);
@ -51,12 +51,6 @@ void main() {
vPos = _e8;
vec2 _e14 = _group_0_binding_1_cs.particles[index].vel;
vVel = _e14;
cMass = vec2(0.0, 0.0);
cVel = vec2(0.0, 0.0);
colVel = vec2(0.0, 0.0);
cMassCount = 0;
cVelCount = 0;
i = 0u;
bool loop_init = true;
while(true) {
if (!loop_init) {

View File

@ -13,10 +13,8 @@ layout(location = 0, index = 1) out vec4 _fs2p_location1;
void main() {
vec4 position = gl_FragCoord;
vec4 color = vec4(0.0);
vec4 mask = vec4(0.0);
color = vec4(0.4, 0.3, 0.2, 0.1);
mask = vec4(0.9, 0.8, 0.7, 0.6);
vec4 color = vec4(0.4, 0.3, 0.2, 0.1);
vec4 mask = vec4(0.9, 0.8, 0.7, 0.6);
vec4 _e13 = color;
vec4 _e14 = mask;
FragmentOutput _tmp_return = FragmentOutput(_e13, _e14);

View File

@ -35,9 +35,8 @@ void test_msl_packed_vec3_as_arg(vec3 arg) {
}
void test_msl_packed_vec3_() {
int idx = 0;
int idx = 1;
_group_0_binding_1_cs.v3_ = vec3(1.0);
idx = 1;
_group_0_binding_1_cs.v3_.x = 1.0;
_group_0_binding_1_cs.v3_.x = 2.0;
int _e16 = idx;
@ -59,8 +58,8 @@ void main() {
}
memoryBarrierShared();
barrier();
float Foo = 0.0;
bool at = false;
float Foo = 1.0;
bool at = true;
test_msl_packed_vec3_();
mat4x2 _e5 = _group_0_binding_7_cs[0][0];
vec4 _e10 = _group_0_binding_6_cs[0][0][0];
@ -79,8 +78,6 @@ void main() {
_group_0_binding_1_cs.v1_ = 4.0;
wg[1] = float(uint(_group_0_binding_2_cs.length()));
at_1 = 2u;
Foo = 1.0;
at = true;
return;
}

View File

@ -30,8 +30,7 @@ vec4 splat() {
}
vec2 splat_assignment() {
vec2 a = vec2(0.0);
a = vec2(2.0);
vec2 a = vec2(2.0);
vec2 _e4 = a;
a = (_e4 + vec2(1.0));
vec2 _e8 = a;
@ -151,9 +150,8 @@ void comparison() {
}
void assignment() {
int a_1 = 0;
int a_1 = 1;
ivec3 vec0_ = ivec3(0);
a_1 = 1;
int _e3 = a_1;
a_1 = (_e3 + 1);
int _e6 = a_1;
@ -180,7 +178,6 @@ void assignment() {
a_1 = (_e33 + 1);
int _e36 = a_1;
a_1 = (_e36 - 1);
vec0_ = ivec3(0);
int _e42 = vec0_.y;
vec0_.y = (_e42 + 1);
int _e46 = vec0_.y;

View File

@ -49,11 +49,9 @@ float fetch_shadow(uint light_id, vec4 homogeneous_coords) {
void main() {
VertexOutput in_ = VertexOutput(gl_FragCoord, _vs2fs_location0, _vs2fs_location1);
vec3 color = vec3(0.0);
vec3 color = c_ambient;
uint i = 0u;
vec3 normal_1 = normalize(in_.world_normal);
color = c_ambient;
i = 0u;
bool loop_init = true;
while(true) {
if (!loop_init) {

View File

@ -49,11 +49,9 @@ float fetch_shadow(uint light_id, vec4 homogeneous_coords) {
void main() {
VertexOutput in_1 = VertexOutput(gl_FragCoord, _vs2fs_location0, _vs2fs_location1);
vec3 color_1 = vec3(0.0);
vec3 color_1 = c_ambient;
uint i_1 = 0u;
vec3 normal_1 = normalize(in_1.world_normal);
color_1 = c_ambient;
i_1 = 0u;
bool loop_init = true;
while(true) {
if (!loop_init) {

View File

@ -119,10 +119,9 @@ void SetMatScalarmOnBaz(Baz obj, float scalar, uint mat_idx, uint vec_idx) {
void test_matrix_within_struct_accesses()
{
int idx = (int)0;
Baz t = (Baz)0;
int idx = 1;
Baz t = ConstructBaz(float3x2((1.0).xx, (2.0).xx, (3.0).xx));
idx = 1;
int _expr3 = idx;
idx = (_expr3 - 1);
float3x2 l0_ = GetMatmOnBaz(baz);
@ -137,7 +136,6 @@ void test_matrix_within_struct_accesses()
int _expr36 = idx;
int _expr38 = idx;
float l6_ = GetMatmOnBaz(baz)[_expr36][_expr38];
t = ConstructBaz(float3x2((1.0).xx, (2.0).xx, (3.0).xx));
int _expr51 = idx;
idx = (_expr51 + 1);
SetMatmOnBaz(t, float3x2((6.0).xx, (5.0).xx, (4.0).xx));
@ -163,10 +161,9 @@ MatCx2InArray ConstructMatCx2InArray(float4x2 arg0[2]) {
void test_matrix_within_array_within_struct_accesses()
{
int idx_1 = (int)0;
MatCx2InArray t_1 = (MatCx2InArray)0;
int idx_1 = 1;
MatCx2InArray t_1 = ConstructMatCx2InArray((float4x2[2])0);
idx_1 = 1;
int _expr3 = idx_1;
idx_1 = (_expr3 - 1);
float4x2 l0_1[2] = ((float4x2[2])nested_mat_cx2_.am);
@ -182,7 +179,6 @@ void test_matrix_within_array_within_struct_accesses()
int _expr46 = idx_1;
int _expr48 = idx_1;
float l7_ = __get_col_of_mat4x2(nested_mat_cx2_.am[0], _expr46)[_expr48];
t_1 = ConstructMatCx2InArray((float4x2[2])0);
int _expr55 = idx_1;
idx_1 = (_expr55 + 1);
t_1.am = (__mat4x2[2])(float4x2[2])0;
@ -251,10 +247,9 @@ uint NagaBufferLengthRW(RWByteAddressBuffer buffer)
float4 foo_vert(uint vi : SV_VertexID) : SV_Position
{
float foo = (float)0;
float foo = 0.0;
int c2_[5] = (int[5])0;
foo = 0.0;
float baz_1 = foo;
foo = 1.0;
test_matrix_within_struct_accesses();
@ -299,9 +294,8 @@ void assign_through_ptr(uint3 __local_invocation_id : SV_GroupThreadID)
val = (uint)0;
}
GroupMemoryBarrierWithGroupSync();
float4 arr[2] = (float4[2])0;
float4 arr[2] = Constructarray2_float4_((6.0).xxxx, (7.0).xxxx);
arr = Constructarray2_float4_((6.0).xxxx, (7.0).xxxx);
assign_through_ptr_fn(val);
assign_array_through_ptr_fn(arr);
return;

View File

@ -51,17 +51,13 @@ uint NagaMSNumSamples2D(Texture2DMS<float4> tex)
float4 main(FragmentInput_main fragmentinput_main) : SV_Target0
{
FragmentIn fragment_in = { fragmentinput_main.index };
uint u1_ = (uint)0;
uint2 u2_ = (uint2)0;
float v1_ = (float)0;
float4 v4_ = (float4)0;
uint u1_ = 0u;
uint2 u2_ = (0u).xx;
float v1_ = 0.0;
float4 v4_ = (0.0).xxxx;
uint uniform_index = uni.index;
uint non_uniform_index = fragment_in.index;
u1_ = 0u;
u2_ = (0u).xx;
v1_ = 0.0;
v4_ = (0.0).xxxx;
float2 uv = (0.0).xx;
int2 pix = (0).xx;
uint2 _expr22 = u2_;

View File

@ -1,25 +1,16 @@
[numthreads(1, 1, 1)]
void main()
{
int2 i2_ = (int2)0;
int3 i3_ = (int3)0;
int4 i4_ = (int4)0;
uint2 u2_ = (uint2)0;
uint3 u3_ = (uint3)0;
uint4 u4_ = (uint4)0;
float2 f2_ = (float2)0;
float3 f3_ = (float3)0;
float4 f4_ = (float4)0;
int2 i2_ = (0).xx;
int3 i3_ = (0).xxx;
int4 i4_ = (0).xxxx;
uint2 u2_ = (0u).xx;
uint3 u3_ = (0u).xxx;
uint4 u4_ = (0u).xxxx;
float2 f2_ = (0.0).xx;
float3 f3_ = (0.0).xxx;
float4 f4_ = (0.0).xxxx;
i2_ = (0).xx;
i3_ = (0).xxx;
i4_ = (0).xxxx;
u2_ = (0u).xx;
u3_ = (0u).xxx;
u4_ = (0u).xxxx;
f2_ = (0.0).xx;
f3_ = (0.0).xxx;
f4_ = (0.0).xxxx;
int2 _expr27 = i2_;
u2_ = asuint(_expr27);
int3 _expr29 = i3_;

View File

@ -1,27 +1,17 @@
[numthreads(1, 1, 1)]
void main()
{
int i = (int)0;
int2 i2_ = (int2)0;
int3 i3_ = (int3)0;
int4 i4_ = (int4)0;
uint u = (uint)0;
uint2 u2_ = (uint2)0;
uint3 u3_ = (uint3)0;
uint4 u4_ = (uint4)0;
float2 f2_ = (float2)0;
float4 f4_ = (float4)0;
int i = 0;
int2 i2_ = (0).xx;
int3 i3_ = (0).xxx;
int4 i4_ = (0).xxxx;
uint u = 0u;
uint2 u2_ = (0u).xx;
uint3 u3_ = (0u).xxx;
uint4 u4_ = (0u).xxxx;
float2 f2_ = (0.0).xx;
float4 f4_ = (0.0).xxxx;
i = 0;
i2_ = (0).xx;
i3_ = (0).xxx;
i4_ = (0).xxxx;
u = 0u;
u2_ = (0u).xx;
u3_ = (0u).xxx;
u4_ = (0u).xxxx;
f2_ = (0.0).xx;
f4_ = (0.0).xxxx;
float4 _expr28 = f4_;
u = uint((int(round(clamp(_expr28[0], -1.0, 1.0) * 127.0)) & 0xFF) | ((int(round(clamp(_expr28[1], -1.0, 1.0) * 127.0)) & 0xFF) << 8) | ((int(round(clamp(_expr28[2], -1.0, 1.0) * 127.0)) & 0xFF) << 16) | ((int(round(clamp(_expr28[3], -1.0, 1.0) * 127.0)) & 0xFF) << 24));
float4 _expr30 = f4_;

View File

@ -24,14 +24,14 @@ void main(uint3 global_invocation_id : SV_DispatchThreadID)
{
float2 vPos = (float2)0;
float2 vVel = (float2)0;
float2 cMass = (float2)0;
float2 cVel = (float2)0;
float2 colVel = (float2)0;
int cMassCount = (int)0;
int cVelCount = (int)0;
float2 cMass = float2(0.0, 0.0);
float2 cVel = float2(0.0, 0.0);
float2 colVel = float2(0.0, 0.0);
int cMassCount = 0;
int cVelCount = 0;
float2 pos = (float2)0;
float2 vel = (float2)0;
uint i = (uint)0;
uint i = 0u;
uint index = global_invocation_id.x;
if ((index >= NUM_PARTICLES)) {
@ -41,12 +41,6 @@ void main(uint3 global_invocation_id : SV_DispatchThreadID)
vPos = _expr8;
float2 _expr14 = asfloat(particlesSrc.Load2(8+index*16+0));
vVel = _expr14;
cMass = float2(0.0, 0.0);
cVel = float2(0.0, 0.0);
colVel = float2(0.0, 0.0);
cMassCount = 0;
cVelCount = 0;
i = 0u;
bool loop_init = true;
while(true) {
if (!loop_init) {

View File

@ -3,10 +3,9 @@ RWByteAddressBuffer v_indices : register(u0);
uint collatz_iterations(uint n_base)
{
uint n = (uint)0;
uint i = (uint)0;
uint i = 0u;
n = n_base;
i = 0u;
while(true) {
uint _expr4 = n;
if ((_expr4 > 1u)) {

View File

@ -17,11 +17,9 @@ FragmentOutput ConstructFragmentOutput(float4 arg0, float4 arg1) {
FragmentOutput main(FragmentInput_main fragmentinput_main)
{
float4 position = fragmentinput_main.position_1;
float4 color = (float4)0;
float4 mask = (float4)0;
float4 color = float4(0.4, 0.3, 0.2, 0.1);
float4 mask = float4(0.9, 0.8, 0.7, 0.6);
color = float4(0.4, 0.3, 0.2, 0.1);
mask = float4(0.9, 0.8, 0.7, 0.6);
float4 _expr13 = color;
float4 _expr14 = mask;
const FragmentOutput fragmentoutput = ConstructFragmentOutput(_expr13, _expr14);

View File

@ -80,10 +80,9 @@ FooStruct ConstructFooStruct(float3 arg0, float arg1) {
void test_msl_packed_vec3_()
{
int idx = (int)0;
int idx = 1;
alignment.Store3(0, asuint((1.0).xxx));
idx = 1;
alignment.Store(0+0, asuint(1.0));
alignment.Store(0+0, asuint(2.0));
int _expr16 = idx;
@ -113,8 +112,8 @@ void main(uint3 __local_invocation_id : SV_GroupThreadID)
at_1 = (uint)0;
}
GroupMemoryBarrierWithGroupSync();
float Foo = (float)0;
bool at = (bool)0;
float Foo = 1.0;
bool at = true;
test_msl_packed_vec3_();
float4x2 _expr5 = ((float4x2)global_nested_arrays_of_matrices_4x2_[0][0]);
@ -134,7 +133,5 @@ void main(uint3 __local_invocation_id : SV_GroupThreadID)
alignment.Store(12, asuint(4.0));
wg[1] = float(((NagaBufferLength(dummy) - 0) / 8));
at_1 = 2u;
Foo = 1.0;
at = true;
return;
}

View File

@ -1,8 +1,7 @@
float4 fs_main() : SV_Target0
{
float4 Pass_ = (float4)0;
float4 Pass_ = float4(1.0, 1.0, 1.0, 1.0);
Pass_ = float4(1.0, 1.0, 1.0, 1.0);
float4 _expr6 = Pass_;
return _expr6;
}

View File

@ -87,9 +87,8 @@ void compute(uint3 global_id : SV_DispatchThreadID, uint3 local_id : SV_GroupThr
precise float4 vertex_two_structs(Input1_ in1_, Input2_ in2_) : SV_Position
{
uint index = (uint)0;
uint index = 2u;
index = 2u;
uint _expr8 = index;
return float4(float((_NagaConstants.base_vertex + in1_.index)), float((_NagaConstants.base_instance + in2_.index)), float(_expr8), 0.0);
}

View File

@ -25,9 +25,8 @@ float4 splat()
float2 splat_assignment()
{
float2 a = (float2)0;
float2 a = (2.0).xx;
a = (2.0).xx;
float2 _expr4 = a;
a = (_expr4 + (1.0).xx);
float2 _expr8 = a;
@ -153,10 +152,9 @@ void comparison()
void assignment()
{
int a_1 = (int)0;
int a_1 = 1;
int3 vec0_ = (int3)0;
a_1 = 1;
int _expr3 = a_1;
a_1 = (_expr3 + 1);
int _expr6 = a_1;
@ -183,7 +181,6 @@ void assignment()
a_1 = (_expr33 + 1);
int _expr36 = a_1;
a_1 = (_expr36 - 1);
vec0_ = (int3)0;
int _expr42 = vec0_.y;
vec0_.y = (_expr42 + 1);
int _expr46 = vec0_.y;

View File

@ -88,12 +88,10 @@ Light ConstructLight(float4x4 arg0, float4 arg1, float4 arg2) {
float4 fs_main(FragmentInput_fs_main fragmentinput_fs_main) : SV_Target0
{
VertexOutput in_ = { fragmentinput_fs_main.proj_position_1, fragmentinput_fs_main.world_normal_1, fragmentinput_fs_main.world_position_1 };
float3 color = (float3)0;
uint i = (uint)0;
float3 color = c_ambient;
uint i = 0u;
float3 normal_1 = normalize(in_.world_normal);
color = c_ambient;
i = 0u;
bool loop_init = true;
while(true) {
if (!loop_init) {
@ -126,12 +124,10 @@ float4 fs_main(FragmentInput_fs_main fragmentinput_fs_main) : SV_Target0
float4 fs_main_without_storage(FragmentInput_fs_main_without_storage fragmentinput_fs_main_without_storage) : SV_Target0
{
VertexOutput in_1 = { fragmentinput_fs_main_without_storage.proj_position_2, fragmentinput_fs_main_without_storage.world_normal_2, fragmentinput_fs_main_without_storage.world_position_2 };
float3 color_1 = (float3)0;
uint i_1 = (uint)0;
float3 color_1 = c_ambient;
uint i_1 = 0u;
float3 normal_2 = normalize(in_1.world_normal);
color_1 = c_ambient;
i_1 = 0u;
bool loop_init_1 = true;
while(true) {
if (!loop_init_1) {

View File

@ -396,12 +396,12 @@
(
name: Some("idx"),
ty: 3,
init: None,
init: Some(1),
),
(
name: Some("t"),
ty: 16,
init: None,
init: Some(49),
),
],
expressions: [
@ -697,10 +697,6 @@
41: "l6",
},
body: [
Store(
pointer: 2,
value: 1,
),
Emit((
start: 3,
end: 5,
@ -769,10 +765,6 @@
start: 46,
end: 49,
)),
Store(
pointer: 50,
value: 49,
),
Emit((
start: 51,
end: 53,
@ -890,12 +882,12 @@
(
name: Some("idx"),
ty: 3,
init: None,
init: Some(1),
),
(
name: Some("t"),
ty: 20,
init: None,
init: Some(53),
),
],
expressions: [
@ -1245,10 +1237,6 @@
51: "l7",
},
body: [
Store(
pointer: 2,
value: 1,
),
Emit((
start: 3,
end: 5,
@ -1341,10 +1329,6 @@
start: 52,
end: 53,
)),
Store(
pointer: 54,
value: 53,
),
Emit((
start: 55,
end: 57,
@ -1675,7 +1659,7 @@
(
name: Some("foo"),
ty: 21,
init: None,
init: Some(2),
),
(
name: Some("c2"),
@ -1846,10 +1830,6 @@
46: "value",
},
body: [
Store(
pointer: 3,
value: 2,
),
Emit((
start: 3,
end: 4,
@ -2160,7 +2140,7 @@
(
name: Some("arr"),
ty: 28,
init: None,
init: Some(5),
),
],
expressions: [
@ -2194,10 +2174,6 @@
start: 3,
end: 5,
)),
Store(
pointer: 6,
value: 5,
),
Call(
function: 5,
arguments: [

View File

@ -455,12 +455,12 @@
(
name: Some("idx"),
ty: 3,
init: None,
init: Some(1),
),
(
name: Some("t"),
ty: 16,
init: None,
init: Some(54),
),
],
expressions: [
@ -766,10 +766,6 @@
46: "l6",
},
body: [
Store(
pointer: 2,
value: 1,
),
Emit((
start: 3,
end: 5,
@ -838,10 +834,6 @@
start: 51,
end: 54,
)),
Store(
pointer: 55,
value: 54,
),
Emit((
start: 56,
end: 58,
@ -959,12 +951,12 @@
(
name: Some("idx"),
ty: 3,
init: None,
init: Some(1),
),
(
name: Some("t"),
ty: 21,
init: None,
init: Some(65),
),
],
expressions: [
@ -1338,10 +1330,6 @@
63: "l7",
},
body: [
Store(
pointer: 2,
value: 1,
),
Emit((
start: 3,
end: 5,
@ -1434,10 +1422,6 @@
start: 64,
end: 65,
)),
Store(
pointer: 66,
value: 65,
),
Emit((
start: 67,
end: 69,
@ -1770,7 +1754,7 @@
(
name: Some("foo"),
ty: 22,
init: None,
init: Some(2),
),
(
name: Some("c2"),
@ -1942,10 +1926,6 @@
47: "value",
},
body: [
Store(
pointer: 3,
value: 2,
),
Emit((
start: 3,
end: 4,
@ -2258,7 +2238,7 @@
(
name: Some("arr"),
ty: 32,
init: None,
init: Some(5),
),
],
expressions: [
@ -2292,10 +2272,6 @@
start: 3,
end: 5,
)),
Store(
pointer: 6,
value: 5,
),
Call(
function: 5,
arguments: [

View File

@ -82,7 +82,7 @@
(
name: Some("i"),
ty: 1,
init: None,
init: Some(3),
),
],
expressions: [
@ -159,10 +159,6 @@
pointer: 2,
value: 1,
),
Store(
pointer: 4,
value: 3,
),
Loop(
body: [
Emit((

View File

@ -86,7 +86,7 @@
(
name: Some("i"),
ty: 1,
init: None,
init: Some(3),
),
],
expressions: [
@ -163,10 +163,6 @@
pointer: 2,
value: 1,
),
Store(
pointer: 4,
value: 3,
),
Loop(
body: [
Emit((

View File

@ -356,8 +356,6 @@
Literal(I32(0)),
Literal(I32(1)),
Literal(I32(2)),
Constant(6),
Constant(8),
],
functions: [
(
@ -558,12 +556,12 @@
(
name: Some("color"),
ty: 2,
init: Some(23),
init: Some(20),
),
(
name: Some("i"),
ty: 3,
init: Some(24),
init: Some(22),
),
],
expressions: [
@ -586,65 +584,67 @@
Constant(10),
Constant(12),
Constant(1),
Constant(6),
LocalVariable(1),
Constant(8),
LocalVariable(2),
Load(
pointer: 21,
pointer: 23,
),
AccessIndex(
base: 1,
index: 0,
),
Access(
base: 23,
base: 25,
index: 17,
),
Load(
pointer: 24,
pointer: 26,
),
Math(
fun: Min,
arg: 25,
arg: 27,
arg1: Some(13),
arg2: None,
arg3: None,
),
Binary(
op: GreaterEqual,
left: 22,
right: 26,
),
Load(
pointer: 20,
left: 24,
right: 28,
),
Load(
pointer: 21,
),
Load(
pointer: 23,
),
AccessIndex(
base: 4,
index: 0,
),
Load(
pointer: 21,
pointer: 23,
),
Access(
base: 30,
index: 31,
base: 32,
index: 33,
),
AccessIndex(
base: 32,
base: 34,
index: 0,
),
Load(
pointer: 33,
pointer: 35,
),
Load(
pointer: 3,
),
Binary(
op: Multiply,
left: 34,
right: 35,
left: 36,
right: 37,
),
CallResult(1),
Load(
@ -652,7 +652,7 @@
),
Math(
fun: Normalize,
arg: 38,
arg: 40,
arg1: None,
arg2: None,
arg3: None,
@ -662,73 +662,73 @@
index: 0,
),
Load(
pointer: 21,
pointer: 23,
),
Access(
base: 40,
index: 41,
base: 42,
index: 43,
),
AccessIndex(
base: 42,
base: 44,
index: 1,
),
Access(
base: 43,
base: 45,
index: 15,
),
Load(
pointer: 44,
pointer: 46,
),
AccessIndex(
base: 4,
index: 0,
),
Load(
pointer: 21,
pointer: 23,
),
Access(
base: 46,
index: 47,
base: 48,
index: 49,
),
AccessIndex(
base: 48,
base: 50,
index: 1,
),
Access(
base: 49,
base: 51,
index: 18,
),
Load(
pointer: 50,
pointer: 52,
),
AccessIndex(
base: 4,
index: 0,
),
Load(
pointer: 21,
pointer: 23,
),
Access(
base: 52,
index: 53,
base: 54,
index: 55,
),
AccessIndex(
base: 54,
base: 56,
index: 1,
),
Access(
base: 55,
base: 57,
index: 8,
),
Load(
pointer: 56,
pointer: 58,
),
Compose(
ty: 2,
components: [
45,
51,
57,
47,
53,
59,
],
),
Access(
@ -736,160 +736,160 @@
index: 16,
),
Load(
pointer: 59,
pointer: 61,
),
Access(
base: 3,
index: 7,
),
Load(
pointer: 61,
pointer: 63,
),
Access(
base: 3,
index: 10,
),
Load(
pointer: 63,
pointer: 65,
),
Compose(
ty: 2,
components: [
60,
62,
64,
66,
],
),
Binary(
op: Subtract,
left: 58,
right: 65,
left: 60,
right: 67,
),
Math(
fun: Normalize,
arg: 66,
arg: 68,
arg1: None,
arg2: None,
arg3: None,
),
Math(
fun: Dot,
arg: 39,
arg1: Some(67),
arg: 41,
arg1: Some(69),
arg2: None,
arg3: None,
),
Math(
fun: Max,
arg: 19,
arg1: Some(68),
arg1: Some(70),
arg2: None,
arg3: None,
),
Binary(
op: Multiply,
left: 37,
right: 69,
left: 39,
right: 71,
),
AccessIndex(
base: 4,
index: 0,
),
Load(
pointer: 21,
pointer: 23,
),
Access(
base: 71,
index: 72,
base: 73,
index: 74,
),
AccessIndex(
base: 73,
base: 75,
index: 2,
),
Access(
base: 74,
base: 76,
index: 6,
),
Load(
pointer: 75,
pointer: 77,
),
AccessIndex(
base: 4,
index: 0,
),
Load(
pointer: 21,
pointer: 23,
),
Access(
base: 77,
index: 78,
base: 79,
index: 80,
),
AccessIndex(
base: 79,
base: 81,
index: 2,
),
Access(
base: 80,
base: 82,
index: 9,
),
Load(
pointer: 81,
pointer: 83,
),
AccessIndex(
base: 4,
index: 0,
),
Load(
pointer: 21,
pointer: 23,
),
Access(
base: 83,
index: 84,
base: 85,
index: 86,
),
AccessIndex(
base: 85,
base: 87,
index: 2,
),
Access(
base: 86,
base: 88,
index: 11,
),
Load(
pointer: 87,
pointer: 89,
),
Compose(
ty: 2,
components: [
76,
82,
88,
78,
84,
90,
],
),
Binary(
op: Multiply,
left: 89,
right: 70,
left: 91,
right: 72,
),
Binary(
op: Add,
left: 28,
right: 90,
left: 30,
right: 92,
),
Load(
pointer: 23,
),
Binary(
op: Add,
left: 94,
right: 12,
),
Load(
pointer: 21,
),
Binary(
op: Add,
left: 92,
right: 12,
),
Load(
pointer: 20,
),
Compose(
ty: 4,
components: [
94,
96,
14,
],
),
@ -899,57 +899,57 @@
Loop(
body: [
Emit((
start: 21,
end: 27,
start: 23,
end: 29,
)),
If(
condition: 27,
condition: 29,
accept: [
Break,
],
reject: [],
),
Emit((
start: 27,
end: 36,
start: 29,
end: 38,
)),
Call(
function: 1,
arguments: [
29,
36,
31,
38,
],
result: Some(37),
result: Some(39),
),
Emit((
start: 37,
end: 91,
)),
Store(
pointer: 20,
value: 91,
),
Continue,
],
continuing: [
Emit((
start: 91,
start: 39,
end: 93,
)),
Store(
pointer: 21,
value: 93,
),
Continue,
],
continuing: [
Emit((
start: 93,
end: 95,
)),
Store(
pointer: 23,
value: 95,
),
],
break_if: None,
),
Emit((
start: 93,
end: 95,
start: 95,
end: 97,
)),
Store(
pointer: 5,
value: 95,
value: 97,
),
Return(
value: None,

View File

@ -591,8 +591,6 @@
Literal(I32(0)),
Literal(I32(2)),
Literal(I32(2)),
Constant(6),
Constant(8),
],
functions: [
(
@ -829,12 +827,12 @@
(
name: Some("color"),
ty: 2,
init: Some(39),
init: Some(43),
),
(
name: Some("i"),
ty: 3,
init: Some(40),
init: Some(45),
),
],
expressions: [
@ -880,65 +878,67 @@
Constant(18),
Constant(6),
Constant(1),
Constant(6),
LocalVariable(1),
Constant(8),
LocalVariable(2),
Load(
pointer: 44,
pointer: 46,
),
AccessIndex(
base: 1,
index: 0,
),
Access(
base: 46,
base: 48,
index: 37,
),
Load(
pointer: 47,
pointer: 49,
),
Math(
fun: Min,
arg: 48,
arg: 50,
arg1: Some(28),
arg2: None,
arg3: None,
),
Binary(
op: GreaterEqual,
left: 45,
right: 49,
),
Load(
pointer: 43,
left: 47,
right: 51,
),
Load(
pointer: 44,
),
Load(
pointer: 46,
),
AccessIndex(
base: 6,
index: 0,
),
Load(
pointer: 44,
pointer: 46,
),
Access(
base: 53,
index: 54,
base: 55,
index: 56,
),
AccessIndex(
base: 55,
base: 57,
index: 0,
),
Load(
pointer: 56,
pointer: 58,
),
Load(
pointer: 3,
),
Binary(
op: Multiply,
left: 57,
right: 58,
left: 59,
right: 60,
),
CallResult(1),
Load(
@ -946,7 +946,7 @@
),
Math(
fun: Normalize,
arg: 61,
arg: 63,
arg1: None,
arg2: None,
arg3: None,
@ -956,73 +956,73 @@
index: 0,
),
Load(
pointer: 44,
pointer: 46,
),
Access(
base: 63,
index: 64,
base: 65,
index: 66,
),
AccessIndex(
base: 65,
base: 67,
index: 1,
),
Access(
base: 66,
base: 68,
index: 31,
),
Load(
pointer: 67,
pointer: 69,
),
AccessIndex(
base: 6,
index: 0,
),
Load(
pointer: 44,
pointer: 46,
),
Access(
base: 69,
index: 70,
base: 71,
index: 72,
),
AccessIndex(
base: 71,
base: 73,
index: 1,
),
Access(
base: 72,
base: 74,
index: 38,
),
Load(
pointer: 73,
pointer: 75,
),
AccessIndex(
base: 6,
index: 0,
),
Load(
pointer: 44,
pointer: 46,
),
Access(
base: 75,
index: 76,
base: 77,
index: 78,
),
AccessIndex(
base: 77,
base: 79,
index: 1,
),
Access(
base: 78,
base: 80,
index: 13,
),
Load(
pointer: 79,
pointer: 81,
),
Compose(
ty: 2,
components: [
68,
74,
80,
70,
76,
82,
],
),
Access(
@ -1030,160 +1030,160 @@
index: 36,
),
Load(
pointer: 82,
pointer: 84,
),
Access(
base: 3,
index: 12,
),
Load(
pointer: 84,
pointer: 86,
),
Access(
base: 3,
index: 23,
),
Load(
pointer: 86,
pointer: 88,
),
Compose(
ty: 2,
components: [
83,
85,
87,
89,
],
),
Binary(
op: Subtract,
left: 81,
right: 88,
left: 83,
right: 90,
),
Math(
fun: Normalize,
arg: 89,
arg: 91,
arg1: None,
arg2: None,
arg3: None,
),
Math(
fun: Dot,
arg: 62,
arg1: Some(90),
arg: 64,
arg1: Some(92),
arg2: None,
arg3: None,
),
Math(
fun: Max,
arg: 42,
arg1: Some(91),
arg1: Some(93),
arg2: None,
arg3: None,
),
Binary(
op: Multiply,
left: 60,
right: 92,
left: 62,
right: 94,
),
AccessIndex(
base: 6,
index: 0,
),
Load(
pointer: 44,
pointer: 46,
),
Access(
base: 94,
index: 95,
base: 96,
index: 97,
),
AccessIndex(
base: 96,
base: 98,
index: 2,
),
Access(
base: 97,
base: 99,
index: 10,
),
Load(
pointer: 98,
pointer: 100,
),
AccessIndex(
base: 6,
index: 0,
),
Load(
pointer: 44,
pointer: 46,
),
Access(
base: 100,
index: 101,
base: 102,
index: 103,
),
AccessIndex(
base: 102,
base: 104,
index: 2,
),
Access(
base: 103,
base: 105,
index: 19,
),
Load(
pointer: 104,
pointer: 106,
),
AccessIndex(
base: 6,
index: 0,
),
Load(
pointer: 44,
pointer: 46,
),
Access(
base: 106,
index: 107,
base: 108,
index: 109,
),
AccessIndex(
base: 108,
base: 110,
index: 2,
),
Access(
base: 109,
base: 111,
index: 26,
),
Load(
pointer: 110,
pointer: 112,
),
Compose(
ty: 2,
components: [
99,
105,
111,
101,
107,
113,
],
),
Binary(
op: Multiply,
left: 112,
right: 93,
left: 114,
right: 95,
),
Binary(
op: Add,
left: 51,
right: 113,
left: 53,
right: 115,
),
Load(
pointer: 46,
),
Binary(
op: Add,
left: 117,
right: 27,
),
Load(
pointer: 44,
),
Binary(
op: Add,
left: 115,
right: 27,
),
Load(
pointer: 43,
),
Compose(
ty: 4,
components: [
117,
119,
30,
],
),
@ -1193,57 +1193,57 @@
Loop(
body: [
Emit((
start: 44,
end: 50,
start: 46,
end: 52,
)),
If(
condition: 50,
condition: 52,
accept: [
Break,
],
reject: [],
),
Emit((
start: 50,
end: 59,
start: 52,
end: 61,
)),
Call(
function: 1,
arguments: [
52,
59,
54,
61,
],
result: Some(60),
result: Some(62),
),
Emit((
start: 60,
end: 114,
)),
Store(
pointer: 43,
value: 114,
),
Continue,
],
continuing: [
Emit((
start: 114,
start: 62,
end: 116,
)),
Store(
pointer: 44,
value: 116,
),
Continue,
],
continuing: [
Emit((
start: 116,
end: 118,
)),
Store(
pointer: 46,
value: 118,
),
],
break_if: None,
),
Emit((
start: 116,
end: 118,
start: 118,
end: 120,
)),
Store(
pointer: 7,
value: 118,
value: 120,
),
Return(
value: None,

View File

@ -61,9 +61,8 @@ struct type_22 {
void test_matrix_within_struct_accesses(
constant Baz& baz
) {
int idx = {};
Baz t = {};
idx = 1;
int idx = 1;
Baz t = Baz {metal::float3x2(metal::float2(1.0), metal::float2(2.0), metal::float2(3.0))};
int _e3 = idx;
idx = _e3 - 1;
metal::float3x2 l0_ = baz.m;
@ -78,7 +77,6 @@ void test_matrix_within_struct_accesses(
int _e36 = idx;
int _e38 = idx;
float l6_ = baz.m[_e36][_e38];
t = Baz {metal::float3x2(metal::float2(1.0), metal::float2(2.0), metal::float2(3.0))};
int _e51 = idx;
idx = _e51 + 1;
t.m = metal::float3x2(metal::float2(6.0), metal::float2(5.0), metal::float2(4.0));
@ -99,9 +97,8 @@ void test_matrix_within_struct_accesses(
void test_matrix_within_array_within_struct_accesses(
constant MatCx2InArray& nested_mat_cx2_
) {
int idx_1 = {};
MatCx2InArray t_1 = {};
idx_1 = 1;
int idx_1 = 1;
MatCx2InArray t_1 = MatCx2InArray {type_14 {}};
int _e3 = idx_1;
idx_1 = _e3 - 1;
type_14 l0_1 = nested_mat_cx2_.am;
@ -117,7 +114,6 @@ void test_matrix_within_array_within_struct_accesses(
int _e46 = idx_1;
int _e48 = idx_1;
float l7_ = nested_mat_cx2_.am.inner[0][_e46][_e48];
t_1 = MatCx2InArray {type_14 {}};
int _e55 = idx_1;
idx_1 = _e55 + 1;
t_1.am = type_14 {};
@ -176,9 +172,8 @@ vertex foo_vertOutput foo_vert(
, constant MatCx2InArray& nested_mat_cx2_ [[buffer(3)]]
, constant _mslBufferSizes& _buffer_sizes [[buffer(24)]]
) {
float foo = {};
float foo = 0.0;
type_20 c2_ = {};
foo = 0.0;
float baz_1 = foo;
foo = 1.0;
test_matrix_within_struct_accesses(baz);
@ -222,8 +217,7 @@ kernel void assign_through_ptr(
val = {};
}
metal::threadgroup_barrier(metal::mem_flags::mem_threadgroup);
type_22 arr = {};
arr = type_22 {metal::float4(6.0), metal::float4(7.0)};
type_22 arr = type_22 {metal::float4(6.0), metal::float4(7.0)};
assign_through_ptr_fn(val);
assign_array_through_ptr_fn(arr);
return;

View File

@ -36,16 +36,12 @@ fragment main_Output main_(
, constant UniformIndex& uni [[user(fake0)]]
) {
const FragmentIn fragment_in = { varyings.index };
uint u1_ = {};
metal::uint2 u2_ = {};
float v1_ = {};
metal::float4 v4_ = {};
uint u1_ = 0u;
metal::uint2 u2_ = metal::uint2(0u);
float v1_ = 0.0;
metal::float4 v4_ = metal::float4(0.0);
uint uniform_index = uni.index;
uint non_uniform_index = fragment_in.index;
u1_ = 0u;
u2_ = metal::uint2(0u);
v1_ = 0.0;
v4_ = metal::float4(0.0);
metal::float2 uv = metal::float2(0.0);
metal::int2 pix = metal::int2(0);
metal::uint2 _e22 = u2_;

View File

@ -7,24 +7,15 @@ using metal::uint;
kernel void main_(
) {
metal::int2 i2_ = {};
metal::int3 i3_ = {};
metal::int4 i4_ = {};
metal::uint2 u2_ = {};
metal::uint3 u3_ = {};
metal::uint4 u4_ = {};
metal::float2 f2_ = {};
metal::float3 f3_ = {};
metal::float4 f4_ = {};
i2_ = metal::int2(0);
i3_ = metal::int3(0);
i4_ = metal::int4(0);
u2_ = metal::uint2(0u);
u3_ = metal::uint3(0u);
u4_ = metal::uint4(0u);
f2_ = metal::float2(0.0);
f3_ = metal::float3(0.0);
f4_ = metal::float4(0.0);
metal::int2 i2_ = metal::int2(0);
metal::int3 i3_ = metal::int3(0);
metal::int4 i4_ = metal::int4(0);
metal::uint2 u2_ = metal::uint2(0u);
metal::uint3 u3_ = metal::uint3(0u);
metal::uint4 u4_ = metal::uint4(0u);
metal::float2 f2_ = metal::float2(0.0);
metal::float3 f3_ = metal::float3(0.0);
metal::float4 f4_ = metal::float4(0.0);
metal::int2 _e27 = i2_;
u2_ = as_type<metal::uint2>(_e27);
metal::int3 _e29 = i3_;

View File

@ -7,26 +7,16 @@ using metal::uint;
kernel void main_(
) {
int i = {};
metal::int2 i2_ = {};
metal::int3 i3_ = {};
metal::int4 i4_ = {};
uint u = {};
metal::uint2 u2_ = {};
metal::uint3 u3_ = {};
metal::uint4 u4_ = {};
metal::float2 f2_ = {};
metal::float4 f4_ = {};
i = 0;
i2_ = metal::int2(0);
i3_ = metal::int3(0);
i4_ = metal::int4(0);
u = 0u;
u2_ = metal::uint2(0u);
u3_ = metal::uint3(0u);
u4_ = metal::uint4(0u);
f2_ = metal::float2(0.0);
f4_ = metal::float4(0.0);
int i = 0;
metal::int2 i2_ = metal::int2(0);
metal::int3 i3_ = metal::int3(0);
metal::int4 i4_ = metal::int4(0);
uint u = 0u;
metal::uint2 u2_ = metal::uint2(0u);
metal::uint3 u3_ = metal::uint3(0u);
metal::uint4 u4_ = metal::uint4(0u);
metal::float2 f2_ = metal::float2(0.0);
metal::float4 f4_ = metal::float4(0.0);
metal::float4 _e28 = f4_;
u = metal::pack_float_to_snorm4x8(_e28);
metal::float4 _e30 = f4_;

View File

@ -39,14 +39,14 @@ kernel void main_(
) {
metal::float2 vPos = {};
metal::float2 vVel = {};
metal::float2 cMass = {};
metal::float2 cVel = {};
metal::float2 colVel = {};
int cMassCount = {};
int cVelCount = {};
metal::float2 cMass = metal::float2(0.0, 0.0);
metal::float2 cVel = metal::float2(0.0, 0.0);
metal::float2 colVel = metal::float2(0.0, 0.0);
int cMassCount = 0;
int cVelCount = 0;
metal::float2 pos = {};
metal::float2 vel = {};
uint i = {};
uint i = 0u;
uint index = global_invocation_id.x;
if (index >= NUM_PARTICLES) {
return;
@ -55,12 +55,6 @@ kernel void main_(
vPos = _e8;
metal::float2 _e14 = particlesSrc.particles[index].vel;
vVel = _e14;
cMass = metal::float2(0.0, 0.0);
cVel = metal::float2(0.0, 0.0);
colVel = metal::float2(0.0, 0.0);
cMassCount = 0;
cVelCount = 0;
i = 0u;
bool loop_init = true;
while(true) {
if (!loop_init) {

View File

@ -17,9 +17,8 @@ uint collatz_iterations(
uint n_base
) {
uint n = {};
uint i = {};
uint i = 0u;
n = n_base;
i = 0u;
while(true) {
uint _e4 = n;
if (_e4 > 1u) {

View File

@ -18,10 +18,8 @@ struct main_Output {
fragment main_Output main_(
metal::float4 position [[position]]
) {
metal::float4 color = {};
metal::float4 mask = {};
color = metal::float4(0.4, 0.3, 0.2, 0.1);
mask = metal::float4(0.9, 0.8, 0.7, 0.6);
metal::float4 color = metal::float4(0.4, 0.3, 0.2, 0.1);
metal::float4 mask = metal::float4(0.9, 0.8, 0.7, 0.6);
metal::float4 _e13 = color;
metal::float4 _e14 = mask;
const auto _tmp = FragmentOutput {_e13, _e14};

View File

@ -42,9 +42,8 @@ void test_msl_packed_vec3_as_arg(
void test_msl_packed_vec3_(
device FooStruct& alignment
) {
int idx = {};
int idx = 1;
alignment.v3_ = metal::float3(1.0);
idx = 1;
alignment.v3_[0] = 1.0;
alignment.v3_[0] = 2.0;
int _e16 = idx;
@ -77,8 +76,8 @@ kernel void main_(
metal::atomic_store_explicit(&at_1, 0, metal::memory_order_relaxed);
}
metal::threadgroup_barrier(metal::mem_flags::mem_threadgroup);
float Foo = {};
bool at = {};
float Foo = 1.0;
bool at = true;
test_msl_packed_vec3_(alignment);
metal::float4x2 _e5 = global_nested_arrays_of_matrices_4x2_.inner[0].inner[0];
metal::float4 _e10 = global_nested_arrays_of_matrices_2x4_.inner[0].inner[0][0];
@ -97,7 +96,5 @@ kernel void main_(
alignment.v1_ = 4.0;
wg.inner[1] = static_cast<float>(1 + (_buffer_sizes.size3 - 0 - 8) / 8);
metal::atomic_store_explicit(&at_1, 2u, metal::memory_order_relaxed);
Foo = 1.0;
at = true;
return;
}

View File

@ -97,8 +97,7 @@ vertex vertex_two_structsOutput vertex_two_structs(
) {
const Input1_ in1_ = { index_1 };
const Input2_ in2_ = { index_2 };
uint index = {};
index = 2u;
uint index = 2u;
uint _e8 = index;
return vertex_two_structsOutput { metal::float4(static_cast<float>(in1_.index), static_cast<float>(in2_.index), static_cast<float>(_e8), 0.0), 1.0 };
}

View File

@ -31,8 +31,7 @@ metal::float4 splat(
metal::float2 splat_assignment(
) {
metal::float2 a = {};
a = metal::float2(2.0);
metal::float2 a = metal::float2(2.0);
metal::float2 _e4 = a;
a = _e4 + metal::float2(1.0);
metal::float2 _e8 = a;
@ -159,9 +158,8 @@ void comparison(
void assignment(
) {
int a_1 = {};
metal::int3 vec0_ = {};
a_1 = 1;
int a_1 = 1;
metal::int3 vec0_ = metal::int3 {};
int _e3 = a_1;
a_1 = _e3 + 1;
int _e6 = a_1;
@ -188,7 +186,6 @@ void assignment(
a_1 = _e33 + 1;
int _e36 = a_1;
a_1 = _e36 - 1;
vec0_ = metal::int3 {};
int _e42 = vec0_.y;
vec0_.y = _e42 + 1;
int _e46 = vec0_.y;

View File

@ -42,8 +42,7 @@ metal::float4 mock_function(
threadgroup type_5& in_workgroup,
thread type_6& in_private
) {
type_9 in_function = {};
in_function = type_9 {metal::float4(0.707, 0.0, 0.0, 1.0), metal::float4(0.0, 0.707, 0.0, 1.0)};
type_9 in_function = type_9 {metal::float4(0.707, 0.0, 0.0, 1.0), metal::float4(0.0, 0.707, 0.0, 1.0)};
metal::float4 _e18 = in_storage.a.inner[i];
metal::float4 _e22 = in_uniform.a.inner[i];
metal::float4 _e25 = (uint(l) < image_2d_array.get_num_mip_levels() && uint(i) < image_2d_array.get_array_size() && metal::all(metal::uint2(c) < metal::uint2(image_2d_array.get_width(l), image_2d_array.get_height(l))) ? image_2d_array.read(metal::uint2(c), i, l): DefaultConstructible());

View File

@ -97,11 +97,9 @@ fragment fs_mainOutput fs_main(
, constant _mslBufferSizes& _buffer_sizes [[user(fake0)]]
) {
const VertexOutput in = { proj_position, varyings_1.world_normal, varyings_1.world_position };
metal::float3 color = {};
uint i = {};
metal::float3 color = c_ambient;
uint i = 0u;
metal::float3 normal_1 = metal::normalize(in.world_normal);
color = c_ambient;
i = 0u;
bool loop_init = true;
while(true) {
if (!loop_init) {
@ -149,11 +147,9 @@ fragment fs_main_without_storageOutput fs_main_without_storage(
, metal::sampler sampler_shadow [[user(fake0)]]
) {
const VertexOutput in_1 = { proj_position_1, varyings_2.world_normal, varyings_2.world_position };
metal::float3 color_1 = {};
uint i_1 = {};
metal::float3 color_1 = c_ambient;
uint i_1 = 0u;
metal::float3 normal_2 = metal::normalize(in_1.world_normal);
color_1 = c_ambient;
i_1 = 0u;
bool loop_init_1 = true;
while(true) {
if (!loop_init_1) {

View File

@ -1,16 +1,16 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 322
; Bound: 313
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %232 "foo_vert" %227 %230
OpEntryPoint Fragment %282 "foo_frag" %281
OpEntryPoint GLCompute %302 "assign_through_ptr" %305
OpExecutionMode %282 OriginUpperLeft
OpExecutionMode %302 LocalSize 1 1 1
OpEntryPoint Vertex %220 "foo_vert" %215 %218
OpEntryPoint Fragment %274 "foo_frag" %273
OpEntryPoint GLCompute %292 "assign_through_ptr" %299
OpExecutionMode %274 OriginUpperLeft
OpExecutionMode %292 LocalSize 1 1 1
OpMemberName %6 0 "a"
OpMemberName %6 1 "b"
OpMemberName %6 2 "c"
@ -34,27 +34,27 @@ OpName %44 "baz"
OpName %47 "qux"
OpName %50 "nested_mat_cx2"
OpName %53 "val"
OpName %54 "idx"
OpName %57 "t"
OpName %61 "test_matrix_within_struct_accesses"
OpName %132 "idx"
OpName %133 "t"
OpName %137 "test_matrix_within_array_within_struct_accesses"
OpName %195 "foo"
OpName %196 "read_from_private"
OpName %201 "a"
OpName %202 "test_arr_as_arg"
OpName %208 "p"
OpName %209 "assign_through_ptr_fn"
OpName %214 "foo"
OpName %215 "assign_array_through_ptr_fn"
OpName %221 "foo"
OpName %223 "c2"
OpName %227 "vi"
OpName %232 "foo_vert"
OpName %282 "foo_frag"
OpName %299 "arr"
OpName %302 "assign_through_ptr"
OpName %55 "test_matrix_within_struct_accesses"
OpName %83 "idx"
OpName %85 "t"
OpName %131 "test_matrix_within_array_within_struct_accesses"
OpName %141 "idx"
OpName %142 "t"
OpName %188 "foo"
OpName %189 "read_from_private"
OpName %194 "a"
OpName %195 "test_arr_as_arg"
OpName %201 "p"
OpName %202 "assign_through_ptr_fn"
OpName %207 "foo"
OpName %208 "assign_array_through_ptr_fn"
OpName %215 "vi"
OpName %220 "foo_vert"
OpName %232 "foo"
OpName %233 "c2"
OpName %274 "foo_frag"
OpName %292 "assign_through_ptr"
OpName %296 "arr"
OpMemberDecorate %6 0 Offset 0
OpMemberDecorate %6 1 Offset 16
OpMemberDecorate %6 2 Offset 28
@ -99,10 +99,10 @@ OpDecorate %50 DescriptorSet 0
OpDecorate %50 Binding 3
OpDecorate %51 Block
OpMemberDecorate %51 0 Offset 0
OpDecorate %227 BuiltIn VertexIndex
OpDecorate %230 BuiltIn Position
OpDecorate %281 Location 0
OpDecorate %305 BuiltIn LocalInvocationId
OpDecorate %215 BuiltIn VertexIndex
OpDecorate %218 BuiltIn Position
OpDecorate %273 Location 0
OpDecorate %299 BuiltIn LocalInvocationId
%2 = OpTypeVoid
%3 = OpTypeInt 32 0
%4 = OpTypeVector %3 3
@ -155,341 +155,326 @@ OpDecorate %305 BuiltIn LocalInvocationId
%52 = OpTypePointer Uniform %51
%50 = OpVariable %52 Uniform
%53 = OpVariable %33 Workgroup
%55 = OpTypePointer Function %5
%56 = OpConstantNull %5
%58 = OpTypePointer Function %22
%59 = OpConstantNull %22
%62 = OpTypeFunction %2
%63 = OpTypePointer Uniform %22
%65 = OpConstant %5 1
%66 = OpConstant %10 1.0
%67 = OpConstant %10 2.0
%68 = OpConstant %10 3.0
%69 = OpConstant %10 6.0
%56 = OpTypeFunction %2
%57 = OpTypePointer Uniform %22
%59 = OpConstant %5 1
%60 = OpConstant %10 1.0
%61 = OpConstantComposite %12 %60 %60
%62 = OpConstant %10 2.0
%63 = OpConstantComposite %12 %62 %62
%64 = OpConstant %10 3.0
%65 = OpConstantComposite %12 %64 %64
%66 = OpConstantComposite %21 %61 %63 %65
%67 = OpConstantComposite %22 %66
%68 = OpConstant %10 6.0
%69 = OpConstantComposite %12 %68 %68
%70 = OpConstant %10 5.0
%71 = OpConstant %10 4.0
%72 = OpConstant %10 9.0
%73 = OpConstant %10 90.0
%74 = OpConstant %10 10.0
%75 = OpConstant %10 20.0
%76 = OpConstant %10 30.0
%77 = OpConstant %10 40.0
%81 = OpTypePointer Uniform %21
%84 = OpTypePointer Uniform %12
%90 = OpTypePointer Uniform %10
%91 = OpConstant %3 1
%111 = OpTypePointer Function %21
%71 = OpConstantComposite %12 %70 %70
%72 = OpConstant %10 4.0
%73 = OpConstantComposite %12 %72 %72
%74 = OpConstantComposite %21 %69 %71 %73
%75 = OpConstant %10 9.0
%76 = OpConstantComposite %12 %75 %75
%77 = OpConstant %10 90.0
%78 = OpConstantComposite %12 %77 %77
%79 = OpConstant %10 10.0
%80 = OpConstant %10 20.0
%81 = OpConstant %10 30.0
%82 = OpConstant %10 40.0
%84 = OpTypePointer Function %5
%86 = OpTypePointer Function %22
%90 = OpTypePointer Uniform %21
%93 = OpTypePointer Uniform %12
%99 = OpTypePointer Uniform %10
%100 = OpConstant %3 1
%115 = OpTypePointer Function %21
%117 = OpTypePointer Function %12
%123 = OpTypePointer Function %10
%134 = OpTypePointer Function %26
%135 = OpConstantNull %26
%138 = OpTypePointer Uniform %26
%140 = OpConstantNull %25
%141 = OpConstant %10 8.0
%142 = OpConstant %10 7.0
%146 = OpTypePointer Uniform %25
%149 = OpTypePointer Uniform %24
%121 = OpTypePointer Function %10
%132 = OpTypePointer Uniform %26
%134 = OpConstantNull %25
%135 = OpConstantComposite %26 %134
%136 = OpConstant %10 8.0
%137 = OpConstantComposite %12 %136 %136
%138 = OpConstant %10 7.0
%139 = OpConstantComposite %12 %138 %138
%140 = OpConstantComposite %24 %137 %139 %69 %71
%143 = OpTypePointer Function %26
%147 = OpTypePointer Uniform %25
%150 = OpTypePointer Uniform %24
%172 = OpTypePointer Function %25
%174 = OpTypePointer Function %24
%197 = OpTypeFunction %10 %27
%203 = OpTypeFunction %10 %29
%210 = OpTypeFunction %2 %33
%211 = OpConstant %3 42
%216 = OpTypeFunction %2 %35
%222 = OpConstantNull %10
%224 = OpTypePointer Function %32
%225 = OpConstantNull %32
%228 = OpTypePointer Input %3
%227 = OpVariable %228 Input
%231 = OpTypePointer Output %31
%230 = OpVariable %231 Output
%234 = OpTypePointer StorageBuffer %23
%237 = OpConstant %10 0.0
%238 = OpConstant %3 3
%239 = OpConstant %5 3
%240 = OpConstant %5 4
%241 = OpConstant %5 5
%242 = OpConstant %5 42
%243 = OpConstantNull %29
%248 = OpTypePointer StorageBuffer %8
%251 = OpTypePointer StorageBuffer %18
%252 = OpConstant %3 4
%255 = OpTypePointer StorageBuffer %9
%256 = OpTypePointer StorageBuffer %10
%259 = OpTypePointer StorageBuffer %19
%262 = OpTypePointer StorageBuffer %7
%263 = OpTypePointer StorageBuffer %5
%275 = OpTypeVector %5 4
%281 = OpVariable %231 Output
%190 = OpTypeFunction %10 %27
%196 = OpTypeFunction %10 %29
%203 = OpTypeFunction %2 %33
%204 = OpConstant %3 42
%209 = OpTypeFunction %2 %35
%210 = OpConstantComposite %31 %60 %60 %60 %60
%211 = OpConstantComposite %31 %62 %62 %62 %62
%212 = OpConstantComposite %34 %210 %211
%216 = OpTypePointer Input %3
%215 = OpVariable %216 Input
%219 = OpTypePointer Output %31
%218 = OpVariable %219 Output
%222 = OpTypePointer StorageBuffer %23
%225 = OpConstant %10 0.0
%226 = OpConstant %3 3
%227 = OpConstant %5 3
%228 = OpConstant %5 4
%229 = OpConstant %5 5
%230 = OpConstant %5 42
%231 = OpConstantNull %29
%234 = OpTypePointer Function %32
%235 = OpConstantNull %32
%240 = OpTypePointer StorageBuffer %8
%243 = OpTypePointer StorageBuffer %18
%244 = OpConstant %3 4
%247 = OpTypePointer StorageBuffer %9
%248 = OpTypePointer StorageBuffer %10
%251 = OpTypePointer StorageBuffer %19
%254 = OpTypePointer StorageBuffer %7
%255 = OpTypePointer StorageBuffer %5
%267 = OpTypeVector %5 4
%273 = OpVariable %219 Output
%276 = OpConstantComposite %9 %225 %225 %225
%277 = OpConstantComposite %9 %60 %60 %60
%278 = OpConstantComposite %9 %62 %62 %62
%279 = OpConstantComposite %9 %64 %64 %64
%280 = OpConstantComposite %8 %276 %277 %278 %279
%281 = OpConstantComposite %17 %36 %36
%282 = OpConstantComposite %17 %100 %100
%283 = OpConstantComposite %18 %281 %282
%284 = OpConstantNull %23
%300 = OpConstantNull %34
%304 = OpConstantNull %3
%306 = OpTypePointer Input %4
%305 = OpVariable %306 Input
%308 = OpConstantNull %4
%310 = OpTypeBool
%309 = OpTypeVector %310 3
%315 = OpConstant %3 264
%61 = OpFunction %2 None %62
%60 = OpLabel
%54 = OpVariable %55 Function %56
%57 = OpVariable %58 Function %59
%64 = OpAccessChain %63 %44 %36
OpBranch %78
%78 = OpLabel
OpStore %54 %65
%79 = OpLoad %5 %54
%80 = OpISub %5 %79 %65
OpStore %54 %80
%82 = OpAccessChain %81 %64 %36
%83 = OpLoad %21 %82
%85 = OpAccessChain %84 %64 %36 %36
%86 = OpLoad %12 %85
%87 = OpLoad %5 %54
%88 = OpAccessChain %84 %64 %36 %87
%89 = OpLoad %12 %88
%92 = OpAccessChain %90 %64 %36 %36 %91
%93 = OpLoad %10 %92
%94 = OpLoad %5 %54
%95 = OpAccessChain %90 %64 %36 %36 %94
%96 = OpLoad %10 %95
%97 = OpLoad %5 %54
%98 = OpAccessChain %90 %64 %36 %97 %91
%99 = OpLoad %10 %98
%100 = OpLoad %5 %54
%101 = OpLoad %5 %54
%102 = OpAccessChain %90 %64 %36 %100 %101
%103 = OpLoad %10 %102
%104 = OpCompositeConstruct %12 %66 %66
%105 = OpCompositeConstruct %12 %67 %67
%106 = OpCompositeConstruct %12 %68 %68
%107 = OpCompositeConstruct %21 %104 %105 %106
%108 = OpCompositeConstruct %22 %107
OpStore %57 %108
%109 = OpLoad %5 %54
%110 = OpIAdd %5 %109 %65
OpStore %54 %110
%112 = OpCompositeConstruct %12 %69 %69
%113 = OpCompositeConstruct %12 %70 %70
%114 = OpCompositeConstruct %12 %71 %71
%115 = OpCompositeConstruct %21 %112 %113 %114
%116 = OpAccessChain %111 %57 %36
OpStore %116 %115
%118 = OpCompositeConstruct %12 %72 %72
%119 = OpAccessChain %117 %57 %36 %36
OpStore %119 %118
%120 = OpLoad %5 %54
%121 = OpCompositeConstruct %12 %73 %73
%122 = OpAccessChain %117 %57 %36 %120
OpStore %122 %121
%124 = OpAccessChain %123 %57 %36 %36 %91
OpStore %124 %74
%125 = OpLoad %5 %54
%126 = OpAccessChain %123 %57 %36 %36 %125
OpStore %126 %75
%127 = OpLoad %5 %54
%128 = OpAccessChain %123 %57 %36 %127 %91
OpStore %128 %76
%129 = OpLoad %5 %54
%130 = OpLoad %5 %54
%131 = OpAccessChain %123 %57 %36 %129 %130
OpStore %131 %77
%285 = OpConstantComposite %31 %225 %225 %225 %225
%293 = OpConstantComposite %31 %68 %68 %68 %68
%294 = OpConstantComposite %31 %138 %138 %138 %138
%295 = OpConstantComposite %34 %293 %294
%298 = OpConstantNull %3
%300 = OpTypePointer Input %4
%299 = OpVariable %300 Input
%302 = OpConstantNull %4
%304 = OpTypeBool
%303 = OpTypeVector %304 3
%309 = OpConstant %3 264
%55 = OpFunction %2 None %56
%54 = OpLabel
%83 = OpVariable %84 Function %59
%85 = OpVariable %86 Function %67
%58 = OpAccessChain %57 %44 %36
OpBranch %87
%87 = OpLabel
%88 = OpLoad %5 %83
%89 = OpISub %5 %88 %59
OpStore %83 %89
%91 = OpAccessChain %90 %58 %36
%92 = OpLoad %21 %91
%94 = OpAccessChain %93 %58 %36 %36
%95 = OpLoad %12 %94
%96 = OpLoad %5 %83
%97 = OpAccessChain %93 %58 %36 %96
%98 = OpLoad %12 %97
%101 = OpAccessChain %99 %58 %36 %36 %100
%102 = OpLoad %10 %101
%103 = OpLoad %5 %83
%104 = OpAccessChain %99 %58 %36 %36 %103
%105 = OpLoad %10 %104
%106 = OpLoad %5 %83
%107 = OpAccessChain %99 %58 %36 %106 %100
%108 = OpLoad %10 %107
%109 = OpLoad %5 %83
%110 = OpLoad %5 %83
%111 = OpAccessChain %99 %58 %36 %109 %110
%112 = OpLoad %10 %111
%113 = OpLoad %5 %83
%114 = OpIAdd %5 %113 %59
OpStore %83 %114
%116 = OpAccessChain %115 %85 %36
OpStore %116 %74
%118 = OpAccessChain %117 %85 %36 %36
OpStore %118 %76
%119 = OpLoad %5 %83
%120 = OpAccessChain %117 %85 %36 %119
OpStore %120 %78
%122 = OpAccessChain %121 %85 %36 %36 %100
OpStore %122 %79
%123 = OpLoad %5 %83
%124 = OpAccessChain %121 %85 %36 %36 %123
OpStore %124 %80
%125 = OpLoad %5 %83
%126 = OpAccessChain %121 %85 %36 %125 %100
OpStore %126 %81
%127 = OpLoad %5 %83
%128 = OpLoad %5 %83
%129 = OpAccessChain %121 %85 %36 %127 %128
OpStore %129 %82
OpReturn
OpFunctionEnd
%137 = OpFunction %2 None %62
%136 = OpLabel
%132 = OpVariable %55 Function %56
%133 = OpVariable %134 Function %135
%139 = OpAccessChain %138 %50 %36
OpBranch %143
%143 = OpLabel
OpStore %132 %65
%144 = OpLoad %5 %132
%145 = OpISub %5 %144 %65
OpStore %132 %145
%147 = OpAccessChain %146 %139 %36
%148 = OpLoad %25 %147
%150 = OpAccessChain %149 %139 %36 %36
%151 = OpLoad %24 %150
%152 = OpAccessChain %84 %139 %36 %36 %36
%153 = OpLoad %12 %152
%154 = OpLoad %5 %132
%155 = OpAccessChain %84 %139 %36 %36 %154
%156 = OpLoad %12 %155
%157 = OpAccessChain %90 %139 %36 %36 %36 %91
%158 = OpLoad %10 %157
%159 = OpLoad %5 %132
%160 = OpAccessChain %90 %139 %36 %36 %36 %159
%161 = OpLoad %10 %160
%162 = OpLoad %5 %132
%163 = OpAccessChain %90 %139 %36 %36 %162 %91
%164 = OpLoad %10 %163
%165 = OpLoad %5 %132
%166 = OpLoad %5 %132
%167 = OpAccessChain %90 %139 %36 %36 %165 %166
%168 = OpLoad %10 %167
%169 = OpCompositeConstruct %26 %140
OpStore %133 %169
%170 = OpLoad %5 %132
%171 = OpIAdd %5 %170 %65
OpStore %132 %171
%173 = OpAccessChain %172 %133 %36
OpStore %173 %140
%175 = OpCompositeConstruct %12 %141 %141
%176 = OpCompositeConstruct %12 %142 %142
%177 = OpCompositeConstruct %12 %69 %69
%178 = OpCompositeConstruct %12 %70 %70
%179 = OpCompositeConstruct %24 %175 %176 %177 %178
%180 = OpAccessChain %174 %133 %36 %36
OpStore %180 %179
%181 = OpCompositeConstruct %12 %72 %72
%182 = OpAccessChain %117 %133 %36 %36 %36
OpStore %182 %181
%183 = OpLoad %5 %132
%184 = OpCompositeConstruct %12 %73 %73
%185 = OpAccessChain %117 %133 %36 %36 %183
OpStore %185 %184
%186 = OpAccessChain %123 %133 %36 %36 %36 %91
OpStore %186 %74
%187 = OpLoad %5 %132
%188 = OpAccessChain %123 %133 %36 %36 %36 %187
OpStore %188 %75
%189 = OpLoad %5 %132
%190 = OpAccessChain %123 %133 %36 %36 %189 %91
OpStore %190 %76
%191 = OpLoad %5 %132
%192 = OpLoad %5 %132
%193 = OpAccessChain %123 %133 %36 %36 %191 %192
OpStore %193 %77
%131 = OpFunction %2 None %56
%130 = OpLabel
%141 = OpVariable %84 Function %59
%142 = OpVariable %143 Function %135
%133 = OpAccessChain %132 %50 %36
OpBranch %144
%144 = OpLabel
%145 = OpLoad %5 %141
%146 = OpISub %5 %145 %59
OpStore %141 %146
%148 = OpAccessChain %147 %133 %36
%149 = OpLoad %25 %148
%151 = OpAccessChain %150 %133 %36 %36
%152 = OpLoad %24 %151
%153 = OpAccessChain %93 %133 %36 %36 %36
%154 = OpLoad %12 %153
%155 = OpLoad %5 %141
%156 = OpAccessChain %93 %133 %36 %36 %155
%157 = OpLoad %12 %156
%158 = OpAccessChain %99 %133 %36 %36 %36 %100
%159 = OpLoad %10 %158
%160 = OpLoad %5 %141
%161 = OpAccessChain %99 %133 %36 %36 %36 %160
%162 = OpLoad %10 %161
%163 = OpLoad %5 %141
%164 = OpAccessChain %99 %133 %36 %36 %163 %100
%165 = OpLoad %10 %164
%166 = OpLoad %5 %141
%167 = OpLoad %5 %141
%168 = OpAccessChain %99 %133 %36 %36 %166 %167
%169 = OpLoad %10 %168
%170 = OpLoad %5 %141
%171 = OpIAdd %5 %170 %59
OpStore %141 %171
%173 = OpAccessChain %172 %142 %36
OpStore %173 %134
%175 = OpAccessChain %174 %142 %36 %36
OpStore %175 %140
%176 = OpAccessChain %117 %142 %36 %36 %36
OpStore %176 %76
%177 = OpLoad %5 %141
%178 = OpAccessChain %117 %142 %36 %36 %177
OpStore %178 %78
%179 = OpAccessChain %121 %142 %36 %36 %36 %100
OpStore %179 %79
%180 = OpLoad %5 %141
%181 = OpAccessChain %121 %142 %36 %36 %36 %180
OpStore %181 %80
%182 = OpLoad %5 %141
%183 = OpAccessChain %121 %142 %36 %36 %182 %100
OpStore %183 %81
%184 = OpLoad %5 %141
%185 = OpLoad %5 %141
%186 = OpAccessChain %121 %142 %36 %36 %184 %185
OpStore %186 %82
OpReturn
OpFunctionEnd
%196 = OpFunction %10 None %197
%195 = OpFunctionParameter %27
%194 = OpLabel
OpBranch %198
%198 = OpLabel
%199 = OpLoad %10 %195
%189 = OpFunction %10 None %190
%188 = OpFunctionParameter %27
%187 = OpLabel
OpBranch %191
%191 = OpLabel
%192 = OpLoad %10 %188
OpReturnValue %192
OpFunctionEnd
%195 = OpFunction %10 None %196
%194 = OpFunctionParameter %29
%193 = OpLabel
OpBranch %197
%197 = OpLabel
%198 = OpCompositeExtract %28 %194 4
%199 = OpCompositeExtract %10 %198 9
OpReturnValue %199
OpFunctionEnd
%202 = OpFunction %10 None %203
%201 = OpFunctionParameter %29
%202 = OpFunction %2 None %203
%201 = OpFunctionParameter %33
%200 = OpLabel
OpBranch %204
%204 = OpLabel
%205 = OpCompositeExtract %28 %201 4
%206 = OpCompositeExtract %10 %205 9
OpReturnValue %206
OpFunctionEnd
%209 = OpFunction %2 None %210
%208 = OpFunctionParameter %33
%207 = OpLabel
OpBranch %212
%212 = OpLabel
OpStore %208 %211
OpBranch %205
%205 = OpLabel
OpStore %201 %204
OpReturn
OpFunctionEnd
%215 = OpFunction %2 None %216
%214 = OpFunctionParameter %35
%208 = OpFunction %2 None %209
%207 = OpFunctionParameter %35
%206 = OpLabel
OpBranch %213
%213 = OpLabel
OpBranch %217
%217 = OpLabel
%218 = OpCompositeConstruct %31 %66 %66 %66 %66
%219 = OpCompositeConstruct %31 %67 %67 %67 %67
%220 = OpCompositeConstruct %34 %218 %219
OpStore %214 %220
OpStore %207 %212
OpReturn
OpFunctionEnd
%232 = OpFunction %2 None %62
%226 = OpLabel
%221 = OpVariable %27 Function %222
%223 = OpVariable %224 Function %225
%229 = OpLoad %3 %227
%233 = OpAccessChain %63 %44 %36
%235 = OpAccessChain %234 %47 %36
%236 = OpAccessChain %138 %50 %36
OpBranch %244
%244 = OpLabel
OpStore %221 %237
%245 = OpLoad %10 %221
OpStore %221 %66
%246 = OpFunctionCall %2 %61
%247 = OpFunctionCall %2 %137
%249 = OpAccessChain %248 %42 %36
%250 = OpLoad %8 %249
%253 = OpAccessChain %251 %42 %252
%254 = OpLoad %18 %253
%257 = OpAccessChain %256 %42 %36 %238 %36
%258 = OpLoad %10 %257
%260 = OpArrayLength %3 %42 5
%261 = OpISub %3 %260 %14
%264 = OpAccessChain %263 %42 %30 %261 %36
%220 = OpFunction %2 None %56
%214 = OpLabel
%232 = OpVariable %27 Function %225
%233 = OpVariable %234 Function %235
%217 = OpLoad %3 %215
%221 = OpAccessChain %57 %44 %36
%223 = OpAccessChain %222 %47 %36
%224 = OpAccessChain %132 %50 %36
OpBranch %236
%236 = OpLabel
%237 = OpLoad %10 %232
OpStore %232 %60
%238 = OpFunctionCall %2 %55
%239 = OpFunctionCall %2 %131
%241 = OpAccessChain %240 %42 %36
%242 = OpLoad %8 %241
%245 = OpAccessChain %243 %42 %244
%246 = OpLoad %18 %245
%249 = OpAccessChain %248 %42 %36 %226 %36
%250 = OpLoad %10 %249
%252 = OpArrayLength %3 %42 5
%253 = OpISub %3 %252 %14
%256 = OpAccessChain %255 %42 %30 %253 %36
%257 = OpLoad %5 %256
%258 = OpLoad %23 %223
%259 = OpFunctionCall %10 %189 %232
%260 = OpConvertFToS %5 %250
%261 = OpCompositeConstruct %32 %257 %260 %227 %228 %229
OpStore %233 %261
%262 = OpIAdd %3 %217 %100
%263 = OpAccessChain %84 %233 %262
OpStore %263 %230
%264 = OpAccessChain %84 %233 %217
%265 = OpLoad %5 %264
%266 = OpLoad %23 %235
%267 = OpFunctionCall %10 %196 %221
%268 = OpConvertFToS %5 %258
%269 = OpCompositeConstruct %32 %265 %268 %239 %240 %241
OpStore %223 %269
%270 = OpIAdd %3 %229 %91
%271 = OpAccessChain %55 %223 %270
OpStore %271 %242
%272 = OpAccessChain %55 %223 %229
%273 = OpLoad %5 %272
%274 = OpFunctionCall %10 %202 %243
%276 = OpCompositeConstruct %275 %273 %273 %273 %273
%277 = OpConvertSToF %31 %276
%278 = OpMatrixTimesVector %9 %250 %277
%279 = OpCompositeConstruct %31 %278 %67
OpStore %230 %279
%266 = OpFunctionCall %10 %195 %231
%268 = OpCompositeConstruct %267 %265 %265 %265 %265
%269 = OpConvertSToF %31 %268
%270 = OpMatrixTimesVector %9 %242 %269
%271 = OpCompositeConstruct %31 %270 %62
OpStore %218 %271
OpReturn
OpFunctionEnd
%282 = OpFunction %2 None %62
%280 = OpLabel
%283 = OpAccessChain %234 %47 %36
OpBranch %285
%285 = OpLabel
%286 = OpAccessChain %256 %42 %36 %91 %14
OpStore %286 %66
%287 = OpCompositeConstruct %9 %237 %237 %237
%288 = OpCompositeConstruct %9 %66 %66 %66
%289 = OpCompositeConstruct %9 %67 %67 %67
%290 = OpCompositeConstruct %9 %68 %68 %68
%291 = OpCompositeConstruct %8 %287 %288 %289 %290
%292 = OpAccessChain %248 %42 %36
OpStore %292 %291
%293 = OpCompositeConstruct %17 %36 %36
%294 = OpCompositeConstruct %17 %91 %91
%295 = OpCompositeConstruct %18 %293 %294
%296 = OpAccessChain %251 %42 %252
OpStore %296 %295
%297 = OpAccessChain %263 %42 %30 %91 %36
OpStore %297 %65
OpStore %283 %284
%298 = OpCompositeConstruct %31 %237 %237 %237 %237
OpStore %281 %298
%274 = OpFunction %2 None %56
%272 = OpLabel
%275 = OpAccessChain %222 %47 %36
OpBranch %286
%286 = OpLabel
%287 = OpAccessChain %248 %42 %36 %100 %14
OpStore %287 %60
%288 = OpAccessChain %240 %42 %36
OpStore %288 %280
%289 = OpAccessChain %243 %42 %244
OpStore %289 %283
%290 = OpAccessChain %255 %42 %30 %100 %36
OpStore %290 %59
OpStore %275 %284
OpStore %273 %285
OpReturn
OpFunctionEnd
%302 = OpFunction %2 None %62
%301 = OpLabel
%299 = OpVariable %35 Function %300
OpBranch %303
%303 = OpLabel
%307 = OpLoad %4 %305
%311 = OpIEqual %309 %307 %308
%312 = OpAll %310 %311
OpSelectionMerge %313 None
OpBranchConditional %312 %314 %313
%314 = OpLabel
OpStore %53 %304
OpBranch %313
%313 = OpLabel
OpControlBarrier %14 %14 %315
OpBranch %316
%316 = OpLabel
%317 = OpCompositeConstruct %31 %69 %69 %69 %69
%318 = OpCompositeConstruct %31 %142 %142 %142 %142
%319 = OpCompositeConstruct %34 %317 %318
OpStore %299 %319
%320 = OpFunctionCall %2 %209 %53
%321 = OpFunctionCall %2 %215 %299
%292 = OpFunction %2 None %56
%291 = OpLabel
%296 = OpVariable %35 Function %295
OpBranch %297
%297 = OpLabel
%301 = OpLoad %4 %299
%305 = OpIEqual %303 %301 %302
%306 = OpAll %304 %305
OpSelectionMerge %307 None
OpBranchConditional %306 %308 %307
%308 = OpLabel
OpStore %53 %298
OpBranch %307
%307 = OpLabel
OpControlBarrier %14 %14 %309
OpBranch %310
%310 = OpLabel
%311 = OpFunctionCall %2 %202 %53
%312 = OpFunctionCall %2 %208 %296
OpReturn
OpFunctionEnd

View File

@ -18,16 +18,16 @@ OpDecorate %16 Location 0
%10 = OpTypeFunction %4
%11 = OpConstant %3 1.0
%12 = OpConstant %3 2.0
%13 = OpConstantComposite %4 %11 %12
%17 = OpTypePointer Output %7
%16 = OpVariable %17 Output
%19 = OpTypeFunction %2
%20 = OpConstant %3 0.0
%9 = OpFunction %4 None %10
%8 = OpLabel
OpBranch %13
%13 = OpLabel
%14 = OpCompositeConstruct %4 %11 %12
OpReturnValue %14
OpBranch %14
%14 = OpLabel
OpReturnValue %13
OpFunctionEnd
%18 = OpFunction %2 None %19
%15 = OpLabel

View File

@ -1,15 +1,15 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 123
; Bound: 122
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %27 "test_atomic_compare_exchange_i32"
OpEntryPoint GLCompute %81 "test_atomic_compare_exchange_u32"
OpExecutionMode %27 LocalSize 1 1 1
OpExecutionMode %81 LocalSize 1 1 1
OpEntryPoint GLCompute %18 "test_atomic_compare_exchange_i32"
OpEntryPoint GLCompute %76 "test_atomic_compare_exchange_u32"
OpExecutionMode %18 LocalSize 1 1 1
OpExecutionMode %76 LocalSize 1 1 1
OpDecorate %5 ArrayStride 4
OpDecorate %7 ArrayStride 4
OpMemberDecorate %9 0 Offset 0
@ -39,167 +39,164 @@ OpMemberDecorate %15 0 Offset 0
%15 = OpTypeStruct %7
%16 = OpTypePointer StorageBuffer %15
%14 = OpVariable %16 StorageBuffer
%18 = OpTypePointer Function %3
%19 = OpConstantNull %3
%21 = OpTypePointer Function %4
%22 = OpConstantNull %4
%24 = OpTypePointer Function %8
%25 = OpConstantNull %8
%28 = OpTypeFunction %2
%29 = OpTypePointer StorageBuffer %5
%30 = OpConstant %3 0
%32 = OpConstantFalse %8
%33 = OpTypeFloat 32
%34 = OpConstant %33 1.0
%35 = OpConstant %3 1
%48 = OpTypePointer StorageBuffer %4
%51 = OpConstant %4 1
%52 = OpConstant %3 64
%82 = OpTypePointer StorageBuffer %7
%96 = OpTypePointer StorageBuffer %3
%27 = OpFunction %2 None %28
%26 = OpLabel
%17 = OpVariable %18 Function %19
%20 = OpVariable %21 Function %22
%23 = OpVariable %24 Function %25
%31 = OpAccessChain %29 %11 %30
OpBranch %36
%36 = OpLabel
OpStore %17 %30
%19 = OpTypeFunction %2
%20 = OpTypePointer StorageBuffer %5
%21 = OpConstant %3 0
%23 = OpConstantFalse %8
%24 = OpTypeFloat 32
%25 = OpConstant %24 1.0
%26 = OpConstant %3 1
%28 = OpTypePointer Function %3
%30 = OpTypePointer Function %4
%31 = OpConstantNull %4
%33 = OpTypePointer Function %8
%46 = OpTypePointer StorageBuffer %4
%49 = OpConstant %4 1
%50 = OpConstant %3 64
%77 = OpTypePointer StorageBuffer %7
%81 = OpConstantNull %3
%95 = OpTypePointer StorageBuffer %3
%18 = OpFunction %2 None %19
%17 = OpLabel
%27 = OpVariable %28 Function %21
%29 = OpVariable %30 Function %31
%32 = OpVariable %33 Function %23
%22 = OpAccessChain %20 %11 %21
OpBranch %34
%34 = OpLabel
OpBranch %35
%35 = OpLabel
OpLoopMerge %36 %38 None
OpBranch %37
%37 = OpLabel
OpLoopMerge %38 %40 None
OpBranch %39
%39 = OpLabel
%41 = OpLoad %3 %17
%42 = OpULessThan %8 %41 %6
OpSelectionMerge %43 None
OpBranchConditional %42 %43 %44
%44 = OpLabel
OpBranch %38
%39 = OpLoad %3 %27
%40 = OpULessThan %8 %39 %6
OpSelectionMerge %41 None
OpBranchConditional %40 %41 %42
%42 = OpLabel
OpBranch %36
%41 = OpLabel
OpBranch %43
%43 = OpLabel
OpBranch %45
%45 = OpLabel
%47 = OpLoad %3 %17
%49 = OpAccessChain %48 %31 %47
%50 = OpAtomicLoad %4 %49 %51 %52
OpStore %20 %50
OpStore %23 %32
%45 = OpLoad %3 %27
%47 = OpAccessChain %46 %22 %45
%48 = OpAtomicLoad %4 %47 %49 %50
OpStore %29 %48
OpStore %32 %23
OpBranch %51
%51 = OpLabel
OpLoopMerge %52 %54 None
OpBranch %53
%53 = OpLabel
OpLoopMerge %54 %56 None
OpBranch %55
%55 = OpLabel
%57 = OpLoad %8 %23
%58 = OpLogicalNot %8 %57
OpSelectionMerge %59 None
OpBranchConditional %58 %59 %60
%55 = OpLoad %8 %32
%56 = OpLogicalNot %8 %55
OpSelectionMerge %57 None
OpBranchConditional %56 %57 %58
%58 = OpLabel
OpBranch %52
%57 = OpLabel
OpBranch %59
%59 = OpLabel
%61 = OpLoad %4 %29
%62 = OpBitcast %24 %61
%63 = OpFAdd %24 %62 %25
%64 = OpBitcast %4 %63
%65 = OpLoad %3 %27
%66 = OpLoad %4 %29
%68 = OpAccessChain %46 %22 %65
%69 = OpAtomicCompareExchange %4 %68 %49 %50 %50 %64 %66
%70 = OpIEqual %8 %69 %66
%67 = OpCompositeConstruct %9 %69 %70
%71 = OpCompositeExtract %4 %67 0
OpStore %29 %71
%72 = OpCompositeExtract %8 %67 1
OpStore %32 %72
OpBranch %60
%60 = OpLabel
OpBranch %54
%59 = OpLabel
OpBranch %61
%61 = OpLabel
%63 = OpLoad %4 %20
%64 = OpBitcast %33 %63
%65 = OpFAdd %33 %64 %34
%66 = OpBitcast %4 %65
%67 = OpLoad %3 %17
%68 = OpLoad %4 %20
%70 = OpAccessChain %48 %31 %67
%71 = OpAtomicCompareExchange %4 %70 %51 %52 %52 %66 %68
%72 = OpIEqual %8 %71 %68
%69 = OpCompositeConstruct %9 %71 %72
%73 = OpCompositeExtract %4 %69 0
OpStore %20 %73
%74 = OpCompositeExtract %8 %69 1
OpStore %23 %74
OpBranch %62
%62 = OpLabel
OpBranch %56
%56 = OpLabel
OpBranch %53
%54 = OpLabel
OpBranch %46
%46 = OpLabel
OpBranch %40
%40 = OpLabel
%75 = OpLoad %3 %17
%76 = OpIAdd %3 %75 %35
OpStore %17 %76
OpBranch %37
OpBranch %51
%52 = OpLabel
OpBranch %44
%44 = OpLabel
OpBranch %38
%38 = OpLabel
%73 = OpLoad %3 %27
%74 = OpIAdd %3 %73 %26
OpStore %27 %74
OpBranch %35
%36 = OpLabel
OpReturn
OpFunctionEnd
%81 = OpFunction %2 None %28
%80 = OpLabel
%77 = OpVariable %18 Function %19
%78 = OpVariable %18 Function %19
%79 = OpVariable %24 Function %25
%83 = OpAccessChain %82 %14 %30
%76 = OpFunction %2 None %19
%75 = OpLabel
%79 = OpVariable %28 Function %21
%80 = OpVariable %28 Function %81
%82 = OpVariable %33 Function %23
%78 = OpAccessChain %77 %14 %21
OpBranch %83
%83 = OpLabel
OpBranch %84
%84 = OpLabel
OpStore %77 %30
OpBranch %85
%85 = OpLabel
OpLoopMerge %86 %88 None
OpBranch %87
%87 = OpLabel
%89 = OpLoad %3 %77
%90 = OpULessThan %8 %89 %6
OpSelectionMerge %91 None
OpBranchConditional %90 %91 %92
%92 = OpLabel
OpLoopMerge %85 %87 None
OpBranch %86
%86 = OpLabel
%88 = OpLoad %3 %79
%89 = OpULessThan %8 %88 %6
OpSelectionMerge %90 None
OpBranchConditional %89 %90 %91
%91 = OpLabel
OpBranch %93
%93 = OpLabel
%95 = OpLoad %3 %77
%97 = OpAccessChain %96 %83 %95
%98 = OpAtomicLoad %3 %97 %51 %52
OpStore %78 %98
OpStore %79 %32
OpBranch %99
%99 = OpLabel
OpLoopMerge %100 %102 None
OpBranch %101
%101 = OpLabel
%103 = OpLoad %8 %79
%104 = OpLogicalNot %8 %103
OpSelectionMerge %105 None
OpBranchConditional %104 %105 %106
%106 = OpLabel
OpBranch %85
%90 = OpLabel
OpBranch %92
%92 = OpLabel
%94 = OpLoad %3 %79
%96 = OpAccessChain %95 %78 %94
%97 = OpAtomicLoad %3 %96 %49 %50
OpStore %80 %97
OpStore %82 %23
OpBranch %98
%98 = OpLabel
OpLoopMerge %99 %101 None
OpBranch %100
%100 = OpLabel
%102 = OpLoad %8 %82
%103 = OpLogicalNot %8 %102
OpSelectionMerge %104 None
OpBranchConditional %103 %104 %105
%105 = OpLabel
OpBranch %99
%104 = OpLabel
OpBranch %106
%106 = OpLabel
%108 = OpLoad %3 %80
%109 = OpBitcast %24 %108
%110 = OpFAdd %24 %109 %25
%111 = OpBitcast %3 %110
%112 = OpLoad %3 %79
%113 = OpLoad %3 %80
%115 = OpAccessChain %95 %78 %112
%116 = OpAtomicCompareExchange %3 %115 %49 %50 %50 %111 %113
%117 = OpIEqual %8 %116 %113
%114 = OpCompositeConstruct %10 %116 %117
%118 = OpCompositeExtract %3 %114 0
OpStore %80 %118
%119 = OpCompositeExtract %8 %114 1
OpStore %82 %119
OpBranch %107
%107 = OpLabel
%109 = OpLoad %3 %78
%110 = OpBitcast %33 %109
%111 = OpFAdd %33 %110 %34
%112 = OpBitcast %3 %111
%113 = OpLoad %3 %77
%114 = OpLoad %3 %78
%116 = OpAccessChain %96 %83 %113
%117 = OpAtomicCompareExchange %3 %116 %51 %52 %52 %112 %114
%118 = OpIEqual %8 %117 %114
%115 = OpCompositeConstruct %10 %117 %118
%119 = OpCompositeExtract %3 %115 0
OpStore %78 %119
%120 = OpCompositeExtract %8 %115 1
OpStore %79 %120
OpBranch %108
%108 = OpLabel
OpBranch %102
%102 = OpLabel
OpBranch %99
%100 = OpLabel
OpBranch %94
%94 = OpLabel
OpBranch %88
%88 = OpLabel
%121 = OpLoad %3 %77
%122 = OpIAdd %3 %121 %35
OpStore %77 %122
OpBranch %85
%86 = OpLabel
OpBranch %101
%101 = OpLabel
OpBranch %98
%99 = OpLabel
OpBranch %93
%93 = OpLabel
OpBranch %87
%87 = OpLabel
%120 = OpLoad %3 %79
%121 = OpIAdd %3 %120 %26
OpStore %79 %121
OpBranch %84
%85 = OpLabel
OpReturn
OpFunctionEnd

View File

@ -1,15 +1,15 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 431
; Bound: 428
OpCapability Shader
OpCapability ImageQuery
OpCapability ShaderNonUniform
OpExtension "SPV_EXT_descriptor_indexing"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %64 "main" %59 %62
OpExecutionMode %64 OriginUpperLeft
OpEntryPoint Fragment %52 "main" %47 %50
OpExecutionMode %52 OriginUpperLeft
OpMemberDecorate %4 0 Offset 0
OpMemberDecorate %21 0 Offset 0
OpDecorate %24 DescriptorSet 0
@ -32,31 +32,31 @@ OpDecorate %42 DescriptorSet 0
OpDecorate %42 Binding 8
OpDecorate %43 Block
OpMemberDecorate %43 0 Offset 0
OpDecorate %59 Location 0
OpDecorate %59 Flat
OpDecorate %62 Location 0
OpDecorate %95 NonUniform
OpDecorate %118 NonUniform
OpDecorate %120 NonUniform
OpDecorate %145 NonUniform
OpDecorate %147 NonUniform
OpDecorate %183 NonUniform
OpDecorate %211 NonUniform
OpDecorate %227 NonUniform
OpDecorate %243 NonUniform
OpDecorate %264 NonUniform
OpDecorate %266 NonUniform
OpDecorate %288 NonUniform
OpDecorate %290 NonUniform
OpDecorate %312 NonUniform
OpDecorate %314 NonUniform
OpDecorate %336 NonUniform
OpDecorate %338 NonUniform
OpDecorate %360 NonUniform
OpDecorate %362 NonUniform
OpDecorate %384 NonUniform
OpDecorate %386 NonUniform
OpDecorate %409 NonUniform
OpDecorate %47 Location 0
OpDecorate %47 Flat
OpDecorate %50 Location 0
OpDecorate %91 NonUniform
OpDecorate %114 NonUniform
OpDecorate %116 NonUniform
OpDecorate %141 NonUniform
OpDecorate %143 NonUniform
OpDecorate %180 NonUniform
OpDecorate %208 NonUniform
OpDecorate %224 NonUniform
OpDecorate %240 NonUniform
OpDecorate %261 NonUniform
OpDecorate %263 NonUniform
OpDecorate %285 NonUniform
OpDecorate %287 NonUniform
OpDecorate %309 NonUniform
OpDecorate %311 NonUniform
OpDecorate %333 NonUniform
OpDecorate %335 NonUniform
OpDecorate %357 NonUniform
OpDecorate %359 NonUniform
OpDecorate %381 NonUniform
OpDecorate %383 NonUniform
OpDecorate %406 NonUniform
%2 = OpTypeVoid
%3 = OpTypeInt 32 0
%4 = OpTypeStruct %3
@ -100,460 +100,453 @@ OpDecorate %409 NonUniform
%43 = OpTypeStruct %4
%44 = OpTypePointer Uniform %43
%42 = OpVariable %44 Uniform
%46 = OpTypePointer Function %3
%47 = OpConstantNull %3
%49 = OpTypePointer Function %23
%50 = OpConstantNull %23
%52 = OpTypePointer Function %6
%53 = OpConstantNull %6
%55 = OpTypePointer Function %22
%56 = OpConstantNull %22
%60 = OpTypePointer Input %3
%59 = OpVariable %60 Input
%63 = OpTypePointer Output %22
%62 = OpVariable %63 Output
%65 = OpTypeFunction %2
%66 = OpTypePointer Uniform %4
%67 = OpConstant %3 0
%69 = OpConstant %6 0.0
%70 = OpTypeInt 32 1
%71 = OpConstant %70 0
%73 = OpTypePointer Uniform %3
%79 = OpTypeVector %6 2
%81 = OpTypeVector %70 2
%83 = OpTypePointer UniformConstant %5
%101 = OpTypePointer UniformConstant %18
%104 = OpTypeSampledImage %5
%125 = OpTypePointer UniformConstant %14
%128 = OpTypePointer UniformConstant %18
%131 = OpTypeSampledImage %14
%154 = OpTypeBool
%160 = OpTypeVector %154 2
%196 = OpTypePointer UniformConstant %10
%199 = OpTypeVector %3 3
%231 = OpTypePointer UniformConstant %12
%391 = OpTypePointer UniformConstant %16
%64 = OpFunction %2 None %65
%57 = OpLabel
%48 = OpVariable %49 Function %50
%54 = OpVariable %55 Function %56
%45 = OpVariable %46 Function %47
%51 = OpVariable %52 Function %53
%61 = OpLoad %3 %59
%58 = OpCompositeConstruct %21 %61
%68 = OpAccessChain %66 %42 %67
OpBranch %72
%72 = OpLabel
%74 = OpAccessChain %73 %68 %67
%75 = OpLoad %3 %74
%76 = OpCompositeExtract %3 %58 0
OpStore %45 %67
%77 = OpCompositeConstruct %23 %67 %67
OpStore %48 %77
OpStore %51 %69
%78 = OpCompositeConstruct %22 %69 %69 %69 %69
OpStore %54 %78
%80 = OpCompositeConstruct %79 %69 %69
%82 = OpCompositeConstruct %81 %71 %71
%84 = OpAccessChain %83 %24 %67
%85 = OpLoad %5 %84
%86 = OpImageQuerySizeLod %23 %85 %67
%87 = OpLoad %23 %48
%88 = OpIAdd %23 %87 %86
OpStore %48 %88
%89 = OpAccessChain %83 %24 %75
%90 = OpLoad %5 %89
%91 = OpImageQuerySizeLod %23 %90 %67
%92 = OpLoad %23 %48
%93 = OpIAdd %23 %92 %91
OpStore %48 %93
%94 = OpAccessChain %83 %24 %76
%95 = OpLoad %5 %94
%96 = OpImageQuerySizeLod %23 %95 %67
%97 = OpLoad %23 %48
%98 = OpIAdd %23 %97 %96
OpStore %48 %98
%99 = OpAccessChain %83 %28 %67
%100 = OpLoad %5 %99
%102 = OpAccessChain %101 %38 %67
%103 = OpLoad %18 %102
%105 = OpSampledImage %104 %100 %103
%106 = OpImageGather %22 %105 %80 %67
%107 = OpLoad %22 %54
%108 = OpFAdd %22 %107 %106
OpStore %54 %108
%109 = OpAccessChain %83 %28 %75
%110 = OpLoad %5 %109
%111 = OpAccessChain %101 %38 %75
%112 = OpLoad %18 %111
%113 = OpSampledImage %104 %110 %112
%114 = OpImageGather %22 %113 %80 %67
%115 = OpLoad %22 %54
%116 = OpFAdd %22 %115 %114
OpStore %54 %116
%117 = OpAccessChain %83 %28 %76
%118 = OpLoad %5 %117
%119 = OpAccessChain %101 %38 %76
%120 = OpLoad %18 %119
%121 = OpSampledImage %104 %118 %120
%122 = OpImageGather %22 %121 %80 %67
%123 = OpLoad %22 %54
%124 = OpFAdd %22 %123 %122
OpStore %54 %124
%126 = OpAccessChain %125 %34 %67
%127 = OpLoad %14 %126
%129 = OpAccessChain %128 %40 %67
%130 = OpLoad %18 %129
%132 = OpSampledImage %131 %127 %130
%133 = OpImageDrefGather %22 %132 %80 %69
%134 = OpLoad %22 %54
%135 = OpFAdd %22 %134 %133
OpStore %54 %135
%136 = OpAccessChain %125 %34 %75
%137 = OpLoad %14 %136
%138 = OpAccessChain %128 %40 %75
%139 = OpLoad %18 %138
%140 = OpSampledImage %131 %137 %139
%141 = OpImageDrefGather %22 %140 %80 %69
%142 = OpLoad %22 %54
%143 = OpFAdd %22 %142 %141
OpStore %54 %143
%144 = OpAccessChain %125 %34 %76
%145 = OpLoad %14 %144
%146 = OpAccessChain %128 %40 %76
%147 = OpLoad %18 %146
%148 = OpSampledImage %131 %145 %147
%149 = OpImageDrefGather %22 %148 %80 %69
%150 = OpLoad %22 %54
%151 = OpFAdd %22 %150 %149
OpStore %54 %151
%152 = OpAccessChain %83 %24 %67
%153 = OpLoad %5 %152
%155 = OpImageQueryLevels %70 %153
%156 = OpULessThan %154 %71 %155
OpSelectionMerge %157 None
OpBranchConditional %156 %158 %157
%158 = OpLabel
%159 = OpImageQuerySizeLod %81 %153 %71
%161 = OpULessThan %160 %82 %159
%162 = OpAll %154 %161
OpBranchConditional %162 %163 %157
%163 = OpLabel
%164 = OpImageFetch %22 %153 %82 Lod %71
OpBranch %157
%157 = OpLabel
%165 = OpPhi %22 %56 %72 %56 %158 %164 %163
%166 = OpLoad %22 %54
%167 = OpFAdd %22 %166 %165
OpStore %54 %167
%168 = OpAccessChain %83 %24 %75
%169 = OpLoad %5 %168
%170 = OpImageQueryLevels %70 %169
%171 = OpULessThan %154 %71 %170
OpSelectionMerge %172 None
OpBranchConditional %171 %173 %172
%173 = OpLabel
%174 = OpImageQuerySizeLod %81 %169 %71
%175 = OpULessThan %160 %82 %174
%176 = OpAll %154 %175
OpBranchConditional %176 %177 %172
%177 = OpLabel
%178 = OpImageFetch %22 %169 %82 Lod %71
OpBranch %172
%172 = OpLabel
%179 = OpPhi %22 %56 %157 %56 %173 %178 %177
%180 = OpLoad %22 %54
%181 = OpFAdd %22 %180 %179
OpStore %54 %181
%182 = OpAccessChain %83 %24 %76
%183 = OpLoad %5 %182
%184 = OpImageQueryLevels %70 %183
%185 = OpULessThan %154 %71 %184
OpSelectionMerge %186 None
OpBranchConditional %185 %187 %186
%187 = OpLabel
%188 = OpImageQuerySizeLod %81 %183 %71
%189 = OpULessThan %160 %82 %188
%190 = OpAll %154 %189
OpBranchConditional %190 %191 %186
%191 = OpLabel
%192 = OpImageFetch %22 %183 %82 Lod %71
OpBranch %186
%186 = OpLabel
%193 = OpPhi %22 %56 %172 %56 %187 %192 %191
%194 = OpLoad %22 %54
%195 = OpFAdd %22 %194 %193
OpStore %54 %195
%197 = OpAccessChain %196 %30 %67
%198 = OpLoad %10 %197
%200 = OpImageQuerySizeLod %199 %198 %67
%201 = OpCompositeExtract %3 %200 2
%202 = OpLoad %3 %45
%203 = OpIAdd %3 %202 %201
OpStore %45 %203
%204 = OpAccessChain %196 %30 %75
%205 = OpLoad %10 %204
%206 = OpImageQuerySizeLod %199 %205 %67
%207 = OpCompositeExtract %3 %206 2
%208 = OpLoad %3 %45
%209 = OpIAdd %3 %208 %207
OpStore %45 %209
%210 = OpAccessChain %196 %30 %76
%211 = OpLoad %10 %210
%212 = OpImageQuerySizeLod %199 %211 %67
%213 = OpCompositeExtract %3 %212 2
%214 = OpLoad %3 %45
%215 = OpIAdd %3 %214 %213
OpStore %45 %215
%216 = OpAccessChain %83 %28 %67
%217 = OpLoad %5 %216
%218 = OpImageQueryLevels %3 %217
%219 = OpLoad %3 %45
%220 = OpIAdd %3 %219 %218
OpStore %45 %220
%221 = OpAccessChain %83 %28 %75
%222 = OpLoad %5 %221
%223 = OpImageQueryLevels %3 %222
%224 = OpLoad %3 %45
%225 = OpIAdd %3 %224 %223
OpStore %45 %225
%226 = OpAccessChain %83 %28 %76
%227 = OpLoad %5 %226
%228 = OpImageQueryLevels %3 %227
%229 = OpLoad %3 %45
%230 = OpIAdd %3 %229 %228
OpStore %45 %230
%232 = OpAccessChain %231 %32 %67
%233 = OpLoad %12 %232
%234 = OpImageQuerySamples %3 %233
%235 = OpLoad %3 %45
%236 = OpIAdd %3 %235 %234
OpStore %45 %236
%237 = OpAccessChain %231 %32 %75
%238 = OpLoad %12 %237
%239 = OpImageQuerySamples %3 %238
%240 = OpLoad %3 %45
%241 = OpIAdd %3 %240 %239
OpStore %45 %241
%242 = OpAccessChain %231 %32 %76
%243 = OpLoad %12 %242
%244 = OpImageQuerySamples %3 %243
%245 = OpLoad %3 %45
%246 = OpIAdd %3 %245 %244
OpStore %45 %246
%247 = OpAccessChain %83 %28 %67
%248 = OpLoad %5 %247
%249 = OpAccessChain %101 %38 %67
%250 = OpLoad %18 %249
%251 = OpSampledImage %104 %248 %250
%252 = OpImageSampleImplicitLod %22 %251 %80
%253 = OpLoad %22 %54
%254 = OpFAdd %22 %253 %252
OpStore %54 %254
%255 = OpAccessChain %83 %28 %75
%256 = OpLoad %5 %255
%257 = OpAccessChain %101 %38 %75
%258 = OpLoad %18 %257
%259 = OpSampledImage %104 %256 %258
%260 = OpImageSampleImplicitLod %22 %259 %80
%261 = OpLoad %22 %54
%262 = OpFAdd %22 %261 %260
OpStore %54 %262
%263 = OpAccessChain %83 %28 %76
%264 = OpLoad %5 %263
%265 = OpAccessChain %101 %38 %76
%266 = OpLoad %18 %265
%267 = OpSampledImage %104 %264 %266
%268 = OpImageSampleImplicitLod %22 %267 %80
%269 = OpLoad %22 %54
%270 = OpFAdd %22 %269 %268
OpStore %54 %270
%271 = OpAccessChain %83 %28 %67
%272 = OpLoad %5 %271
%273 = OpAccessChain %101 %38 %67
%274 = OpLoad %18 %273
%275 = OpSampledImage %104 %272 %274
%276 = OpImageSampleImplicitLod %22 %275 %80 Bias %69
%277 = OpLoad %22 %54
%278 = OpFAdd %22 %277 %276
OpStore %54 %278
%279 = OpAccessChain %83 %28 %75
%280 = OpLoad %5 %279
%281 = OpAccessChain %101 %38 %75
%282 = OpLoad %18 %281
%283 = OpSampledImage %104 %280 %282
%284 = OpImageSampleImplicitLod %22 %283 %80 Bias %69
%285 = OpLoad %22 %54
%286 = OpFAdd %22 %285 %284
OpStore %54 %286
%287 = OpAccessChain %83 %28 %76
%288 = OpLoad %5 %287
%289 = OpAccessChain %101 %38 %76
%290 = OpLoad %18 %289
%291 = OpSampledImage %104 %288 %290
%292 = OpImageSampleImplicitLod %22 %291 %80 Bias %69
%293 = OpLoad %22 %54
%294 = OpFAdd %22 %293 %292
OpStore %54 %294
%295 = OpAccessChain %125 %34 %67
%296 = OpLoad %14 %295
%297 = OpAccessChain %128 %40 %67
%298 = OpLoad %18 %297
%299 = OpSampledImage %131 %296 %298
%300 = OpImageSampleDrefImplicitLod %6 %299 %80 %69
%301 = OpLoad %6 %51
%302 = OpFAdd %6 %301 %300
OpStore %51 %302
%303 = OpAccessChain %125 %34 %75
%304 = OpLoad %14 %303
%305 = OpAccessChain %128 %40 %75
%306 = OpLoad %18 %305
%307 = OpSampledImage %131 %304 %306
%308 = OpImageSampleDrefImplicitLod %6 %307 %80 %69
%309 = OpLoad %6 %51
%310 = OpFAdd %6 %309 %308
OpStore %51 %310
%311 = OpAccessChain %125 %34 %76
%312 = OpLoad %14 %311
%313 = OpAccessChain %128 %40 %76
%314 = OpLoad %18 %313
%315 = OpSampledImage %131 %312 %314
%316 = OpImageSampleDrefImplicitLod %6 %315 %80 %69
%317 = OpLoad %6 %51
%318 = OpFAdd %6 %317 %316
OpStore %51 %318
%319 = OpAccessChain %125 %34 %67
%320 = OpLoad %14 %319
%321 = OpAccessChain %128 %40 %67
%322 = OpLoad %18 %321
%323 = OpSampledImage %131 %320 %322
%324 = OpImageSampleDrefExplicitLod %6 %323 %80 %69 Lod %69
%325 = OpLoad %6 %51
%326 = OpFAdd %6 %325 %324
OpStore %51 %326
%327 = OpAccessChain %125 %34 %75
%328 = OpLoad %14 %327
%329 = OpAccessChain %128 %40 %75
%330 = OpLoad %18 %329
%331 = OpSampledImage %131 %328 %330
%332 = OpImageSampleDrefExplicitLod %6 %331 %80 %69 Lod %69
%333 = OpLoad %6 %51
%334 = OpFAdd %6 %333 %332
OpStore %51 %334
%335 = OpAccessChain %125 %34 %76
%336 = OpLoad %14 %335
%337 = OpAccessChain %128 %40 %76
%338 = OpLoad %18 %337
%339 = OpSampledImage %131 %336 %338
%340 = OpImageSampleDrefExplicitLod %6 %339 %80 %69 Lod %69
%341 = OpLoad %6 %51
%342 = OpFAdd %6 %341 %340
OpStore %51 %342
%343 = OpAccessChain %83 %28 %67
%344 = OpLoad %5 %343
%345 = OpAccessChain %101 %38 %67
%346 = OpLoad %18 %345
%347 = OpSampledImage %104 %344 %346
%348 = OpImageSampleExplicitLod %22 %347 %80 Grad %80 %80
%349 = OpLoad %22 %54
%350 = OpFAdd %22 %349 %348
OpStore %54 %350
%351 = OpAccessChain %83 %28 %75
%352 = OpLoad %5 %351
%353 = OpAccessChain %101 %38 %75
%354 = OpLoad %18 %353
%355 = OpSampledImage %104 %352 %354
%356 = OpImageSampleExplicitLod %22 %355 %80 Grad %80 %80
%357 = OpLoad %22 %54
%358 = OpFAdd %22 %357 %356
OpStore %54 %358
%359 = OpAccessChain %83 %28 %76
%360 = OpLoad %5 %359
%361 = OpAccessChain %101 %38 %76
%362 = OpLoad %18 %361
%363 = OpSampledImage %104 %360 %362
%364 = OpImageSampleExplicitLod %22 %363 %80 Grad %80 %80
%365 = OpLoad %22 %54
%366 = OpFAdd %22 %365 %364
OpStore %54 %366
%367 = OpAccessChain %83 %28 %67
%368 = OpLoad %5 %367
%369 = OpAccessChain %101 %38 %67
%370 = OpLoad %18 %369
%371 = OpSampledImage %104 %368 %370
%372 = OpImageSampleExplicitLod %22 %371 %80 Lod %69
%373 = OpLoad %22 %54
%374 = OpFAdd %22 %373 %372
OpStore %54 %374
%375 = OpAccessChain %83 %28 %75
%376 = OpLoad %5 %375
%377 = OpAccessChain %101 %38 %75
%378 = OpLoad %18 %377
%379 = OpSampledImage %104 %376 %378
%380 = OpImageSampleExplicitLod %22 %379 %80 Lod %69
%381 = OpLoad %22 %54
%382 = OpFAdd %22 %381 %380
OpStore %54 %382
%383 = OpAccessChain %83 %28 %76
%384 = OpLoad %5 %383
%385 = OpAccessChain %101 %38 %76
%386 = OpLoad %18 %385
%387 = OpSampledImage %104 %384 %386
%388 = OpImageSampleExplicitLod %22 %387 %80 Lod %69
%389 = OpLoad %22 %54
%390 = OpFAdd %22 %389 %388
OpStore %54 %390
%392 = OpAccessChain %391 %36 %67
%393 = OpLoad %16 %392
%394 = OpLoad %22 %54
%395 = OpImageQuerySize %81 %393
%396 = OpULessThan %160 %82 %395
%397 = OpAll %154 %396
OpSelectionMerge %398 None
OpBranchConditional %397 %399 %398
%399 = OpLabel
OpImageWrite %393 %82 %394
OpBranch %398
%398 = OpLabel
%400 = OpAccessChain %391 %36 %75
%401 = OpLoad %16 %400
%402 = OpLoad %22 %54
%403 = OpImageQuerySize %81 %401
%404 = OpULessThan %160 %82 %403
%405 = OpAll %154 %404
OpSelectionMerge %406 None
OpBranchConditional %405 %407 %406
%407 = OpLabel
OpImageWrite %401 %82 %402
OpBranch %406
%406 = OpLabel
%408 = OpAccessChain %391 %36 %76
%409 = OpLoad %16 %408
%410 = OpLoad %22 %54
%411 = OpImageQuerySize %81 %409
%412 = OpULessThan %160 %82 %411
%413 = OpAll %154 %412
OpSelectionMerge %414 None
OpBranchConditional %413 %415 %414
%415 = OpLabel
OpImageWrite %409 %82 %410
OpBranch %414
%414 = OpLabel
%416 = OpLoad %23 %48
%417 = OpLoad %3 %45
%418 = OpCompositeConstruct %23 %417 %417
%419 = OpIAdd %23 %416 %418
%420 = OpConvertUToF %79 %419
%421 = OpLoad %22 %54
%422 = OpCompositeExtract %6 %420 0
%423 = OpCompositeExtract %6 %420 1
%424 = OpCompositeExtract %6 %420 0
%425 = OpCompositeExtract %6 %420 1
%426 = OpCompositeConstruct %22 %422 %423 %424 %425
%427 = OpFAdd %22 %421 %426
%428 = OpLoad %6 %51
%429 = OpCompositeConstruct %22 %428 %428 %428 %428
%430 = OpFAdd %22 %427 %429
OpStore %62 %430
%48 = OpTypePointer Input %3
%47 = OpVariable %48 Input
%51 = OpTypePointer Output %22
%50 = OpVariable %51 Output
%53 = OpTypeFunction %2
%54 = OpTypePointer Uniform %4
%55 = OpConstant %3 0
%57 = OpConstantComposite %23 %55 %55
%58 = OpConstant %6 0.0
%59 = OpConstantComposite %22 %58 %58 %58 %58
%60 = OpTypeVector %6 2
%61 = OpConstantComposite %60 %58 %58
%62 = OpTypeInt 32 1
%63 = OpConstant %62 0
%64 = OpTypeVector %62 2
%65 = OpConstantComposite %64 %63 %63
%67 = OpTypePointer Function %3
%69 = OpTypePointer Function %23
%71 = OpTypePointer Function %6
%73 = OpTypePointer Function %22
%75 = OpTypePointer Uniform %3
%79 = OpTypePointer UniformConstant %5
%97 = OpTypePointer UniformConstant %18
%100 = OpTypeSampledImage %5
%121 = OpTypePointer UniformConstant %14
%124 = OpTypePointer UniformConstant %18
%127 = OpTypeSampledImage %14
%150 = OpTypeBool
%151 = OpConstantNull %22
%157 = OpTypeVector %150 2
%193 = OpTypePointer UniformConstant %10
%196 = OpTypeVector %3 3
%228 = OpTypePointer UniformConstant %12
%388 = OpTypePointer UniformConstant %16
%52 = OpFunction %2 None %53
%45 = OpLabel
%68 = OpVariable %69 Function %57
%72 = OpVariable %73 Function %59
%66 = OpVariable %67 Function %55
%70 = OpVariable %71 Function %58
%49 = OpLoad %3 %47
%46 = OpCompositeConstruct %21 %49
%56 = OpAccessChain %54 %42 %55
OpBranch %74
%74 = OpLabel
%76 = OpAccessChain %75 %56 %55
%77 = OpLoad %3 %76
%78 = OpCompositeExtract %3 %46 0
%80 = OpAccessChain %79 %24 %55
%81 = OpLoad %5 %80
%82 = OpImageQuerySizeLod %23 %81 %55
%83 = OpLoad %23 %68
%84 = OpIAdd %23 %83 %82
OpStore %68 %84
%85 = OpAccessChain %79 %24 %77
%86 = OpLoad %5 %85
%87 = OpImageQuerySizeLod %23 %86 %55
%88 = OpLoad %23 %68
%89 = OpIAdd %23 %88 %87
OpStore %68 %89
%90 = OpAccessChain %79 %24 %78
%91 = OpLoad %5 %90
%92 = OpImageQuerySizeLod %23 %91 %55
%93 = OpLoad %23 %68
%94 = OpIAdd %23 %93 %92
OpStore %68 %94
%95 = OpAccessChain %79 %28 %55
%96 = OpLoad %5 %95
%98 = OpAccessChain %97 %38 %55
%99 = OpLoad %18 %98
%101 = OpSampledImage %100 %96 %99
%102 = OpImageGather %22 %101 %61 %55
%103 = OpLoad %22 %72
%104 = OpFAdd %22 %103 %102
OpStore %72 %104
%105 = OpAccessChain %79 %28 %77
%106 = OpLoad %5 %105
%107 = OpAccessChain %97 %38 %77
%108 = OpLoad %18 %107
%109 = OpSampledImage %100 %106 %108
%110 = OpImageGather %22 %109 %61 %55
%111 = OpLoad %22 %72
%112 = OpFAdd %22 %111 %110
OpStore %72 %112
%113 = OpAccessChain %79 %28 %78
%114 = OpLoad %5 %113
%115 = OpAccessChain %97 %38 %78
%116 = OpLoad %18 %115
%117 = OpSampledImage %100 %114 %116
%118 = OpImageGather %22 %117 %61 %55
%119 = OpLoad %22 %72
%120 = OpFAdd %22 %119 %118
OpStore %72 %120
%122 = OpAccessChain %121 %34 %55
%123 = OpLoad %14 %122
%125 = OpAccessChain %124 %40 %55
%126 = OpLoad %18 %125
%128 = OpSampledImage %127 %123 %126
%129 = OpImageDrefGather %22 %128 %61 %58
%130 = OpLoad %22 %72
%131 = OpFAdd %22 %130 %129
OpStore %72 %131
%132 = OpAccessChain %121 %34 %77
%133 = OpLoad %14 %132
%134 = OpAccessChain %124 %40 %77
%135 = OpLoad %18 %134
%136 = OpSampledImage %127 %133 %135
%137 = OpImageDrefGather %22 %136 %61 %58
%138 = OpLoad %22 %72
%139 = OpFAdd %22 %138 %137
OpStore %72 %139
%140 = OpAccessChain %121 %34 %78
%141 = OpLoad %14 %140
%142 = OpAccessChain %124 %40 %78
%143 = OpLoad %18 %142
%144 = OpSampledImage %127 %141 %143
%145 = OpImageDrefGather %22 %144 %61 %58
%146 = OpLoad %22 %72
%147 = OpFAdd %22 %146 %145
OpStore %72 %147
%148 = OpAccessChain %79 %24 %55
%149 = OpLoad %5 %148
%152 = OpImageQueryLevels %62 %149
%153 = OpULessThan %150 %63 %152
OpSelectionMerge %154 None
OpBranchConditional %153 %155 %154
%155 = OpLabel
%156 = OpImageQuerySizeLod %64 %149 %63
%158 = OpULessThan %157 %65 %156
%159 = OpAll %150 %158
OpBranchConditional %159 %160 %154
%160 = OpLabel
%161 = OpImageFetch %22 %149 %65 Lod %63
OpBranch %154
%154 = OpLabel
%162 = OpPhi %22 %151 %74 %151 %155 %161 %160
%163 = OpLoad %22 %72
%164 = OpFAdd %22 %163 %162
OpStore %72 %164
%165 = OpAccessChain %79 %24 %77
%166 = OpLoad %5 %165
%167 = OpImageQueryLevels %62 %166
%168 = OpULessThan %150 %63 %167
OpSelectionMerge %169 None
OpBranchConditional %168 %170 %169
%170 = OpLabel
%171 = OpImageQuerySizeLod %64 %166 %63
%172 = OpULessThan %157 %65 %171
%173 = OpAll %150 %172
OpBranchConditional %173 %174 %169
%174 = OpLabel
%175 = OpImageFetch %22 %166 %65 Lod %63
OpBranch %169
%169 = OpLabel
%176 = OpPhi %22 %151 %154 %151 %170 %175 %174
%177 = OpLoad %22 %72
%178 = OpFAdd %22 %177 %176
OpStore %72 %178
%179 = OpAccessChain %79 %24 %78
%180 = OpLoad %5 %179
%181 = OpImageQueryLevels %62 %180
%182 = OpULessThan %150 %63 %181
OpSelectionMerge %183 None
OpBranchConditional %182 %184 %183
%184 = OpLabel
%185 = OpImageQuerySizeLod %64 %180 %63
%186 = OpULessThan %157 %65 %185
%187 = OpAll %150 %186
OpBranchConditional %187 %188 %183
%188 = OpLabel
%189 = OpImageFetch %22 %180 %65 Lod %63
OpBranch %183
%183 = OpLabel
%190 = OpPhi %22 %151 %169 %151 %184 %189 %188
%191 = OpLoad %22 %72
%192 = OpFAdd %22 %191 %190
OpStore %72 %192
%194 = OpAccessChain %193 %30 %55
%195 = OpLoad %10 %194
%197 = OpImageQuerySizeLod %196 %195 %55
%198 = OpCompositeExtract %3 %197 2
%199 = OpLoad %3 %66
%200 = OpIAdd %3 %199 %198
OpStore %66 %200
%201 = OpAccessChain %193 %30 %77
%202 = OpLoad %10 %201
%203 = OpImageQuerySizeLod %196 %202 %55
%204 = OpCompositeExtract %3 %203 2
%205 = OpLoad %3 %66
%206 = OpIAdd %3 %205 %204
OpStore %66 %206
%207 = OpAccessChain %193 %30 %78
%208 = OpLoad %10 %207
%209 = OpImageQuerySizeLod %196 %208 %55
%210 = OpCompositeExtract %3 %209 2
%211 = OpLoad %3 %66
%212 = OpIAdd %3 %211 %210
OpStore %66 %212
%213 = OpAccessChain %79 %28 %55
%214 = OpLoad %5 %213
%215 = OpImageQueryLevels %3 %214
%216 = OpLoad %3 %66
%217 = OpIAdd %3 %216 %215
OpStore %66 %217
%218 = OpAccessChain %79 %28 %77
%219 = OpLoad %5 %218
%220 = OpImageQueryLevels %3 %219
%221 = OpLoad %3 %66
%222 = OpIAdd %3 %221 %220
OpStore %66 %222
%223 = OpAccessChain %79 %28 %78
%224 = OpLoad %5 %223
%225 = OpImageQueryLevels %3 %224
%226 = OpLoad %3 %66
%227 = OpIAdd %3 %226 %225
OpStore %66 %227
%229 = OpAccessChain %228 %32 %55
%230 = OpLoad %12 %229
%231 = OpImageQuerySamples %3 %230
%232 = OpLoad %3 %66
%233 = OpIAdd %3 %232 %231
OpStore %66 %233
%234 = OpAccessChain %228 %32 %77
%235 = OpLoad %12 %234
%236 = OpImageQuerySamples %3 %235
%237 = OpLoad %3 %66
%238 = OpIAdd %3 %237 %236
OpStore %66 %238
%239 = OpAccessChain %228 %32 %78
%240 = OpLoad %12 %239
%241 = OpImageQuerySamples %3 %240
%242 = OpLoad %3 %66
%243 = OpIAdd %3 %242 %241
OpStore %66 %243
%244 = OpAccessChain %79 %28 %55
%245 = OpLoad %5 %244
%246 = OpAccessChain %97 %38 %55
%247 = OpLoad %18 %246
%248 = OpSampledImage %100 %245 %247
%249 = OpImageSampleImplicitLod %22 %248 %61
%250 = OpLoad %22 %72
%251 = OpFAdd %22 %250 %249
OpStore %72 %251
%252 = OpAccessChain %79 %28 %77
%253 = OpLoad %5 %252
%254 = OpAccessChain %97 %38 %77
%255 = OpLoad %18 %254
%256 = OpSampledImage %100 %253 %255
%257 = OpImageSampleImplicitLod %22 %256 %61
%258 = OpLoad %22 %72
%259 = OpFAdd %22 %258 %257
OpStore %72 %259
%260 = OpAccessChain %79 %28 %78
%261 = OpLoad %5 %260
%262 = OpAccessChain %97 %38 %78
%263 = OpLoad %18 %262
%264 = OpSampledImage %100 %261 %263
%265 = OpImageSampleImplicitLod %22 %264 %61
%266 = OpLoad %22 %72
%267 = OpFAdd %22 %266 %265
OpStore %72 %267
%268 = OpAccessChain %79 %28 %55
%269 = OpLoad %5 %268
%270 = OpAccessChain %97 %38 %55
%271 = OpLoad %18 %270
%272 = OpSampledImage %100 %269 %271
%273 = OpImageSampleImplicitLod %22 %272 %61 Bias %58
%274 = OpLoad %22 %72
%275 = OpFAdd %22 %274 %273
OpStore %72 %275
%276 = OpAccessChain %79 %28 %77
%277 = OpLoad %5 %276
%278 = OpAccessChain %97 %38 %77
%279 = OpLoad %18 %278
%280 = OpSampledImage %100 %277 %279
%281 = OpImageSampleImplicitLod %22 %280 %61 Bias %58
%282 = OpLoad %22 %72
%283 = OpFAdd %22 %282 %281
OpStore %72 %283
%284 = OpAccessChain %79 %28 %78
%285 = OpLoad %5 %284
%286 = OpAccessChain %97 %38 %78
%287 = OpLoad %18 %286
%288 = OpSampledImage %100 %285 %287
%289 = OpImageSampleImplicitLod %22 %288 %61 Bias %58
%290 = OpLoad %22 %72
%291 = OpFAdd %22 %290 %289
OpStore %72 %291
%292 = OpAccessChain %121 %34 %55
%293 = OpLoad %14 %292
%294 = OpAccessChain %124 %40 %55
%295 = OpLoad %18 %294
%296 = OpSampledImage %127 %293 %295
%297 = OpImageSampleDrefImplicitLod %6 %296 %61 %58
%298 = OpLoad %6 %70
%299 = OpFAdd %6 %298 %297
OpStore %70 %299
%300 = OpAccessChain %121 %34 %77
%301 = OpLoad %14 %300
%302 = OpAccessChain %124 %40 %77
%303 = OpLoad %18 %302
%304 = OpSampledImage %127 %301 %303
%305 = OpImageSampleDrefImplicitLod %6 %304 %61 %58
%306 = OpLoad %6 %70
%307 = OpFAdd %6 %306 %305
OpStore %70 %307
%308 = OpAccessChain %121 %34 %78
%309 = OpLoad %14 %308
%310 = OpAccessChain %124 %40 %78
%311 = OpLoad %18 %310
%312 = OpSampledImage %127 %309 %311
%313 = OpImageSampleDrefImplicitLod %6 %312 %61 %58
%314 = OpLoad %6 %70
%315 = OpFAdd %6 %314 %313
OpStore %70 %315
%316 = OpAccessChain %121 %34 %55
%317 = OpLoad %14 %316
%318 = OpAccessChain %124 %40 %55
%319 = OpLoad %18 %318
%320 = OpSampledImage %127 %317 %319
%321 = OpImageSampleDrefExplicitLod %6 %320 %61 %58 Lod %58
%322 = OpLoad %6 %70
%323 = OpFAdd %6 %322 %321
OpStore %70 %323
%324 = OpAccessChain %121 %34 %77
%325 = OpLoad %14 %324
%326 = OpAccessChain %124 %40 %77
%327 = OpLoad %18 %326
%328 = OpSampledImage %127 %325 %327
%329 = OpImageSampleDrefExplicitLod %6 %328 %61 %58 Lod %58
%330 = OpLoad %6 %70
%331 = OpFAdd %6 %330 %329
OpStore %70 %331
%332 = OpAccessChain %121 %34 %78
%333 = OpLoad %14 %332
%334 = OpAccessChain %124 %40 %78
%335 = OpLoad %18 %334
%336 = OpSampledImage %127 %333 %335
%337 = OpImageSampleDrefExplicitLod %6 %336 %61 %58 Lod %58
%338 = OpLoad %6 %70
%339 = OpFAdd %6 %338 %337
OpStore %70 %339
%340 = OpAccessChain %79 %28 %55
%341 = OpLoad %5 %340
%342 = OpAccessChain %97 %38 %55
%343 = OpLoad %18 %342
%344 = OpSampledImage %100 %341 %343
%345 = OpImageSampleExplicitLod %22 %344 %61 Grad %61 %61
%346 = OpLoad %22 %72
%347 = OpFAdd %22 %346 %345
OpStore %72 %347
%348 = OpAccessChain %79 %28 %77
%349 = OpLoad %5 %348
%350 = OpAccessChain %97 %38 %77
%351 = OpLoad %18 %350
%352 = OpSampledImage %100 %349 %351
%353 = OpImageSampleExplicitLod %22 %352 %61 Grad %61 %61
%354 = OpLoad %22 %72
%355 = OpFAdd %22 %354 %353
OpStore %72 %355
%356 = OpAccessChain %79 %28 %78
%357 = OpLoad %5 %356
%358 = OpAccessChain %97 %38 %78
%359 = OpLoad %18 %358
%360 = OpSampledImage %100 %357 %359
%361 = OpImageSampleExplicitLod %22 %360 %61 Grad %61 %61
%362 = OpLoad %22 %72
%363 = OpFAdd %22 %362 %361
OpStore %72 %363
%364 = OpAccessChain %79 %28 %55
%365 = OpLoad %5 %364
%366 = OpAccessChain %97 %38 %55
%367 = OpLoad %18 %366
%368 = OpSampledImage %100 %365 %367
%369 = OpImageSampleExplicitLod %22 %368 %61 Lod %58
%370 = OpLoad %22 %72
%371 = OpFAdd %22 %370 %369
OpStore %72 %371
%372 = OpAccessChain %79 %28 %77
%373 = OpLoad %5 %372
%374 = OpAccessChain %97 %38 %77
%375 = OpLoad %18 %374
%376 = OpSampledImage %100 %373 %375
%377 = OpImageSampleExplicitLod %22 %376 %61 Lod %58
%378 = OpLoad %22 %72
%379 = OpFAdd %22 %378 %377
OpStore %72 %379
%380 = OpAccessChain %79 %28 %78
%381 = OpLoad %5 %380
%382 = OpAccessChain %97 %38 %78
%383 = OpLoad %18 %382
%384 = OpSampledImage %100 %381 %383
%385 = OpImageSampleExplicitLod %22 %384 %61 Lod %58
%386 = OpLoad %22 %72
%387 = OpFAdd %22 %386 %385
OpStore %72 %387
%389 = OpAccessChain %388 %36 %55
%390 = OpLoad %16 %389
%391 = OpLoad %22 %72
%392 = OpImageQuerySize %64 %390
%393 = OpULessThan %157 %65 %392
%394 = OpAll %150 %393
OpSelectionMerge %395 None
OpBranchConditional %394 %396 %395
%396 = OpLabel
OpImageWrite %390 %65 %391
OpBranch %395
%395 = OpLabel
%397 = OpAccessChain %388 %36 %77
%398 = OpLoad %16 %397
%399 = OpLoad %22 %72
%400 = OpImageQuerySize %64 %398
%401 = OpULessThan %157 %65 %400
%402 = OpAll %150 %401
OpSelectionMerge %403 None
OpBranchConditional %402 %404 %403
%404 = OpLabel
OpImageWrite %398 %65 %399
OpBranch %403
%403 = OpLabel
%405 = OpAccessChain %388 %36 %78
%406 = OpLoad %16 %405
%407 = OpLoad %22 %72
%408 = OpImageQuerySize %64 %406
%409 = OpULessThan %157 %65 %408
%410 = OpAll %150 %409
OpSelectionMerge %411 None
OpBranchConditional %410 %412 %411
%412 = OpLabel
OpImageWrite %406 %65 %407
OpBranch %411
%411 = OpLabel
%413 = OpLoad %23 %68
%414 = OpLoad %3 %66
%415 = OpCompositeConstruct %23 %414 %414
%416 = OpIAdd %23 %413 %415
%417 = OpConvertUToF %60 %416
%418 = OpLoad %22 %72
%419 = OpCompositeExtract %6 %417 0
%420 = OpCompositeExtract %6 %417 1
%421 = OpCompositeExtract %6 %417 0
%422 = OpCompositeExtract %6 %417 1
%423 = OpCompositeConstruct %22 %419 %420 %421 %422
%424 = OpFAdd %22 %418 %423
%425 = OpLoad %6 %70
%426 = OpCompositeConstruct %22 %425 %425 %425 %425
%427 = OpFAdd %22 %424 %426
OpStore %50 %427
OpReturn
OpFunctionEnd

View File

@ -8,8 +8,8 @@ OpExtension "SPV_KHR_storage_buffer_storage_class"
OpExtension "SPV_EXT_descriptor_indexing"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %26 "main" %21 %24
OpExecutionMode %26 OriginUpperLeft
OpEntryPoint Fragment %23 "main" %18 %21
OpExecutionMode %23 OriginUpperLeft
OpMemberDecorate %4 0 Offset 0
OpMemberDecorate %5 0 Offset 0
OpMemberDecorate %8 0 Offset 0
@ -21,9 +21,9 @@ OpDecorate %13 DescriptorSet 0
OpDecorate %13 Binding 10
OpDecorate %14 Block
OpMemberDecorate %14 0 Offset 0
OpDecorate %18 Location 0
OpDecorate %18 Flat
OpDecorate %21 Location 0
OpDecorate %21 Flat
OpDecorate %24 Location 0
OpDecorate %53 NonUniform
%2 = OpTypeVoid
%3 = OpTypeInt 32 0
@ -39,62 +39,61 @@ OpDecorate %53 NonUniform
%14 = OpTypeStruct %4
%15 = OpTypePointer Uniform %14
%13 = OpVariable %15 Uniform
%17 = OpTypePointer Function %3
%18 = OpConstantNull %3
%22 = OpTypePointer Input %3
%21 = OpVariable %22 Input
%25 = OpTypePointer Output %3
%24 = OpVariable %25 Output
%27 = OpTypeFunction %2
%28 = OpTypePointer Uniform %4
%29 = OpConstant %3 0
%31 = OpTypePointer StorageBuffer %6
%33 = OpTypePointer Uniform %3
%37 = OpTypePointer StorageBuffer %5
%38 = OpTypePointer StorageBuffer %3
%44 = OpTypeBool
%26 = OpFunction %2 None %27
%19 = OpLabel
%16 = OpVariable %17 Function %18
%23 = OpLoad %3 %21
%20 = OpCompositeConstruct %8 %23
%30 = OpAccessChain %28 %13 %29
OpBranch %32
%32 = OpLabel
%34 = OpAccessChain %33 %30 %29
%35 = OpLoad %3 %34
%36 = OpCompositeExtract %3 %20 0
OpStore %16 %29
%39 = OpAccessChain %38 %9 %29 %29
%40 = OpLoad %3 %39
%41 = OpLoad %3 %16
%42 = OpIAdd %3 %41 %40
OpStore %16 %42
%43 = OpULessThan %44 %35 %7
%19 = OpTypePointer Input %3
%18 = OpVariable %19 Input
%22 = OpTypePointer Output %3
%21 = OpVariable %22 Output
%24 = OpTypeFunction %2
%25 = OpTypePointer Uniform %4
%26 = OpConstant %3 0
%28 = OpTypePointer StorageBuffer %6
%30 = OpTypePointer Function %3
%32 = OpTypePointer Uniform %3
%36 = OpTypePointer StorageBuffer %5
%37 = OpTypePointer StorageBuffer %3
%43 = OpTypeBool
%45 = OpConstantNull %3
%23 = OpFunction %2 None %24
%16 = OpLabel
%29 = OpVariable %30 Function %26
%20 = OpLoad %3 %18
%17 = OpCompositeConstruct %8 %20
%27 = OpAccessChain %25 %13 %26
OpBranch %31
%31 = OpLabel
%33 = OpAccessChain %32 %27 %26
%34 = OpLoad %3 %33
%35 = OpCompositeExtract %3 %17 0
%38 = OpAccessChain %37 %9 %26 %26
%39 = OpLoad %3 %38
%40 = OpLoad %3 %29
%41 = OpIAdd %3 %40 %39
OpStore %29 %41
%42 = OpULessThan %43 %34 %7
OpSelectionMerge %46 None
OpBranchConditional %43 %47 %46
OpBranchConditional %42 %47 %46
%47 = OpLabel
%45 = OpAccessChain %38 %9 %35 %29
%48 = OpLoad %3 %45
%44 = OpAccessChain %37 %9 %34 %26
%48 = OpLoad %3 %44
OpBranch %46
%46 = OpLabel
%49 = OpPhi %3 %18 %32 %48 %47
%50 = OpLoad %3 %16
%49 = OpPhi %3 %45 %31 %48 %47
%50 = OpLoad %3 %29
%51 = OpIAdd %3 %50 %49
OpStore %16 %51
%52 = OpULessThan %44 %36 %7
OpStore %29 %51
%52 = OpULessThan %43 %35 %7
OpSelectionMerge %54 None
OpBranchConditional %52 %55 %54
%55 = OpLabel
%53 = OpAccessChain %38 %9 %36 %29
%53 = OpAccessChain %37 %9 %35 %26
%56 = OpLoad %3 %53
OpBranch %54
%54 = OpLabel
%57 = OpPhi %3 %18 %46 %56 %55
%58 = OpLoad %3 %16
%57 = OpPhi %3 %45 %46 %56 %55
%58 = OpLoad %3 %29
%59 = OpIAdd %3 %58 %57
OpStore %16 %59
%60 = OpLoad %3 %16
OpStore %24 %60
OpStore %29 %59
%60 = OpLoad %3 %29
OpStore %21 %60
OpReturn
OpFunctionEnd

View File

@ -1,12 +1,12 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 76
; Bound: 67
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %43 "main"
OpExecutionMode %43 LocalSize 1 1 1
OpEntryPoint GLCompute %16 "main"
OpExecutionMode %16 LocalSize 1 1 1
%2 = OpTypeVoid
%4 = OpTypeInt 32 1
%3 = OpTypeVector %4 2
@ -20,85 +20,67 @@ OpExecutionMode %43 LocalSize 1 1 1
%11 = OpTypeVector %12 2
%13 = OpTypeVector %12 3
%14 = OpTypeVector %12 4
%16 = OpTypePointer Function %3
%17 = OpConstantNull %3
%19 = OpTypePointer Function %5
%20 = OpConstantNull %5
%22 = OpTypePointer Function %6
%23 = OpConstantNull %6
%25 = OpTypePointer Function %7
%26 = OpConstantNull %7
%28 = OpTypePointer Function %9
%29 = OpConstantNull %9
%31 = OpTypePointer Function %10
%32 = OpConstantNull %10
%34 = OpTypePointer Function %11
%35 = OpConstantNull %11
%37 = OpTypePointer Function %13
%38 = OpConstantNull %13
%40 = OpTypePointer Function %14
%41 = OpConstantNull %14
%44 = OpTypeFunction %2
%45 = OpConstant %4 0
%46 = OpConstant %8 0
%47 = OpConstant %12 0.0
%43 = OpFunction %2 None %44
%42 = OpLabel
%33 = OpVariable %34 Function %35
%24 = OpVariable %25 Function %26
%15 = OpVariable %16 Function %17
%36 = OpVariable %37 Function %38
%27 = OpVariable %28 Function %29
%18 = OpVariable %19 Function %20
%39 = OpVariable %40 Function %41
%30 = OpVariable %31 Function %32
%21 = OpVariable %22 Function %23
%17 = OpTypeFunction %2
%18 = OpConstant %4 0
%19 = OpConstantComposite %3 %18 %18
%20 = OpConstantComposite %5 %18 %18 %18
%21 = OpConstantComposite %6 %18 %18 %18 %18
%22 = OpConstant %8 0
%23 = OpConstantComposite %7 %22 %22
%24 = OpConstantComposite %9 %22 %22 %22
%25 = OpConstantComposite %10 %22 %22 %22 %22
%26 = OpConstant %12 0.0
%27 = OpConstantComposite %11 %26 %26
%28 = OpConstantComposite %13 %26 %26 %26
%29 = OpConstantComposite %14 %26 %26 %26 %26
%31 = OpTypePointer Function %3
%33 = OpTypePointer Function %5
%35 = OpTypePointer Function %6
%37 = OpTypePointer Function %7
%39 = OpTypePointer Function %9
%41 = OpTypePointer Function %10
%43 = OpTypePointer Function %11
%45 = OpTypePointer Function %13
%47 = OpTypePointer Function %14
%16 = OpFunction %2 None %17
%15 = OpLabel
%42 = OpVariable %43 Function %27
%36 = OpVariable %37 Function %23
%30 = OpVariable %31 Function %19
%44 = OpVariable %45 Function %28
%38 = OpVariable %39 Function %24
%32 = OpVariable %33 Function %20
%46 = OpVariable %47 Function %29
%40 = OpVariable %41 Function %25
%34 = OpVariable %35 Function %21
OpBranch %48
%48 = OpLabel
%49 = OpCompositeConstruct %3 %45 %45
OpStore %15 %49
%50 = OpCompositeConstruct %5 %45 %45 %45
OpStore %18 %50
%51 = OpCompositeConstruct %6 %45 %45 %45 %45
OpStore %21 %51
%52 = OpCompositeConstruct %7 %46 %46
OpStore %24 %52
%53 = OpCompositeConstruct %9 %46 %46 %46
OpStore %27 %53
%54 = OpCompositeConstruct %10 %46 %46 %46 %46
OpStore %30 %54
%55 = OpCompositeConstruct %11 %47 %47
OpStore %33 %55
%56 = OpCompositeConstruct %13 %47 %47 %47
OpStore %36 %56
%57 = OpCompositeConstruct %14 %47 %47 %47 %47
OpStore %39 %57
%58 = OpLoad %3 %15
%59 = OpBitcast %7 %58
OpStore %24 %59
%60 = OpLoad %5 %18
%61 = OpBitcast %9 %60
OpStore %27 %61
%62 = OpLoad %6 %21
%63 = OpBitcast %10 %62
OpStore %30 %63
%64 = OpLoad %7 %24
%65 = OpBitcast %3 %64
OpStore %15 %65
%66 = OpLoad %9 %27
%67 = OpBitcast %5 %66
OpStore %18 %67
%68 = OpLoad %10 %30
%69 = OpBitcast %6 %68
OpStore %21 %69
%70 = OpLoad %3 %15
%71 = OpBitcast %11 %70
OpStore %33 %71
%72 = OpLoad %5 %18
%73 = OpBitcast %13 %72
OpStore %36 %73
%74 = OpLoad %6 %21
%75 = OpBitcast %14 %74
OpStore %39 %75
%49 = OpLoad %3 %30
%50 = OpBitcast %7 %49
OpStore %36 %50
%51 = OpLoad %5 %32
%52 = OpBitcast %9 %51
OpStore %38 %52
%53 = OpLoad %6 %34
%54 = OpBitcast %10 %53
OpStore %40 %54
%55 = OpLoad %7 %36
%56 = OpBitcast %3 %55
OpStore %30 %56
%57 = OpLoad %9 %38
%58 = OpBitcast %5 %57
OpStore %32 %58
%59 = OpLoad %10 %40
%60 = OpBitcast %6 %59
OpStore %34 %60
%61 = OpLoad %3 %30
%62 = OpBitcast %11 %61
OpStore %42 %62
%63 = OpLoad %5 %32
%64 = OpBitcast %13 %63
OpStore %44 %64
%65 = OpLoad %6 %34
%66 = OpBitcast %14 %65
OpStore %46 %66
OpReturn
OpFunctionEnd

View File

@ -1,12 +1,12 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 165
; Bound: 155
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %45 "main"
OpExecutionMode %45 LocalSize 1 1 1
OpEntryPoint GLCompute %15 "main"
OpExecutionMode %15 LocalSize 1 1 1
%2 = OpTypeVoid
%3 = OpTypeInt 32 1
%4 = OpTypeVector %3 2
@ -19,215 +19,195 @@ OpExecutionMode %45 LocalSize 1 1 1
%12 = OpTypeFloat 32
%11 = OpTypeVector %12 2
%13 = OpTypeVector %12 4
%15 = OpTypePointer Function %3
%16 = OpConstantNull %3
%18 = OpTypePointer Function %4
%19 = OpConstantNull %4
%21 = OpTypePointer Function %5
%22 = OpConstantNull %5
%24 = OpTypePointer Function %6
%25 = OpConstantNull %6
%27 = OpTypePointer Function %7
%28 = OpConstantNull %7
%30 = OpTypePointer Function %8
%31 = OpConstantNull %8
%33 = OpTypePointer Function %9
%34 = OpConstantNull %9
%36 = OpTypePointer Function %10
%37 = OpConstantNull %10
%39 = OpTypePointer Function %11
%40 = OpConstantNull %11
%42 = OpTypePointer Function %13
%43 = OpConstantNull %13
%46 = OpTypeFunction %2
%47 = OpConstant %3 0
%48 = OpConstant %7 0
%49 = OpConstant %12 0.0
%50 = OpConstant %7 5
%51 = OpConstant %7 10
%45 = OpFunction %2 None %46
%44 = OpLabel
%41 = OpVariable %42 Function %43
%32 = OpVariable %33 Function %34
%23 = OpVariable %24 Function %25
%14 = OpVariable %15 Function %16
%35 = OpVariable %36 Function %37
%26 = OpVariable %27 Function %28
%17 = OpVariable %18 Function %19
%38 = OpVariable %39 Function %40
%29 = OpVariable %30 Function %31
%20 = OpVariable %21 Function %22
OpBranch %52
%52 = OpLabel
OpStore %14 %47
%53 = OpCompositeConstruct %4 %47 %47
OpStore %17 %53
%54 = OpCompositeConstruct %5 %47 %47 %47
OpStore %20 %54
%55 = OpCompositeConstruct %6 %47 %47 %47 %47
OpStore %23 %55
OpStore %26 %48
%56 = OpCompositeConstruct %8 %48 %48
OpStore %29 %56
%57 = OpCompositeConstruct %9 %48 %48 %48
OpStore %32 %57
%58 = OpCompositeConstruct %10 %48 %48 %48 %48
OpStore %35 %58
%59 = OpCompositeConstruct %11 %49 %49
OpStore %38 %59
%60 = OpCompositeConstruct %13 %49 %49 %49 %49
OpStore %41 %60
%61 = OpLoad %13 %41
%62 = OpExtInst %7 %1 PackSnorm4x8 %61
OpStore %26 %62
%63 = OpLoad %13 %41
%64 = OpExtInst %7 %1 PackUnorm4x8 %63
OpStore %26 %64
%65 = OpLoad %11 %38
%66 = OpExtInst %7 %1 PackSnorm2x16 %65
OpStore %26 %66
%67 = OpLoad %11 %38
%68 = OpExtInst %7 %1 PackUnorm2x16 %67
OpStore %26 %68
%69 = OpLoad %11 %38
%70 = OpExtInst %7 %1 PackHalf2x16 %69
OpStore %26 %70
%71 = OpLoad %7 %26
%72 = OpExtInst %13 %1 UnpackSnorm4x8 %71
OpStore %41 %72
%73 = OpLoad %7 %26
%74 = OpExtInst %13 %1 UnpackUnorm4x8 %73
OpStore %41 %74
%75 = OpLoad %7 %26
%76 = OpExtInst %11 %1 UnpackSnorm2x16 %75
OpStore %38 %76
%77 = OpLoad %7 %26
%78 = OpExtInst %11 %1 UnpackUnorm2x16 %77
OpStore %38 %78
%79 = OpLoad %7 %26
%80 = OpExtInst %11 %1 UnpackHalf2x16 %79
OpStore %38 %80
%81 = OpLoad %3 %14
%82 = OpLoad %3 %14
%83 = OpBitFieldInsert %3 %81 %82 %50 %51
OpStore %14 %83
%84 = OpLoad %4 %17
%85 = OpLoad %4 %17
%86 = OpBitFieldInsert %4 %84 %85 %50 %51
OpStore %17 %86
%87 = OpLoad %5 %20
%88 = OpLoad %5 %20
%89 = OpBitFieldInsert %5 %87 %88 %50 %51
OpStore %20 %89
%90 = OpLoad %6 %23
%91 = OpLoad %6 %23
%92 = OpBitFieldInsert %6 %90 %91 %50 %51
OpStore %23 %92
%93 = OpLoad %7 %26
%94 = OpLoad %7 %26
%95 = OpBitFieldInsert %7 %93 %94 %50 %51
OpStore %26 %95
%96 = OpLoad %8 %29
%97 = OpLoad %8 %29
%98 = OpBitFieldInsert %8 %96 %97 %50 %51
OpStore %29 %98
%99 = OpLoad %9 %32
%100 = OpLoad %9 %32
%101 = OpBitFieldInsert %9 %99 %100 %50 %51
OpStore %32 %101
%102 = OpLoad %10 %35
%103 = OpLoad %10 %35
%104 = OpBitFieldInsert %10 %102 %103 %50 %51
OpStore %35 %104
%105 = OpLoad %3 %14
%106 = OpBitFieldSExtract %3 %105 %50 %51
OpStore %14 %106
%107 = OpLoad %4 %17
%108 = OpBitFieldSExtract %4 %107 %50 %51
OpStore %17 %108
%109 = OpLoad %5 %20
%110 = OpBitFieldSExtract %5 %109 %50 %51
OpStore %20 %110
%111 = OpLoad %6 %23
%112 = OpBitFieldSExtract %6 %111 %50 %51
OpStore %23 %112
%113 = OpLoad %7 %26
%114 = OpBitFieldUExtract %7 %113 %50 %51
OpStore %26 %114
%115 = OpLoad %8 %29
%116 = OpBitFieldUExtract %8 %115 %50 %51
OpStore %29 %116
%117 = OpLoad %9 %32
%118 = OpBitFieldUExtract %9 %117 %50 %51
OpStore %32 %118
%119 = OpLoad %10 %35
%120 = OpBitFieldUExtract %10 %119 %50 %51
OpStore %35 %120
%121 = OpLoad %3 %14
%122 = OpExtInst %3 %1 FindILsb %121
OpStore %14 %122
%123 = OpLoad %8 %29
%124 = OpExtInst %8 %1 FindILsb %123
OpStore %29 %124
%125 = OpLoad %5 %20
%126 = OpExtInst %5 %1 FindSMsb %125
OpStore %20 %126
%127 = OpLoad %9 %32
%128 = OpExtInst %9 %1 FindUMsb %127
OpStore %32 %128
%129 = OpLoad %3 %14
%130 = OpExtInst %3 %1 FindSMsb %129
OpStore %14 %130
%131 = OpLoad %7 %26
%132 = OpExtInst %7 %1 FindUMsb %131
OpStore %26 %132
%133 = OpLoad %3 %14
%134 = OpBitCount %3 %133
OpStore %14 %134
%135 = OpLoad %4 %17
%136 = OpBitCount %4 %135
OpStore %17 %136
%137 = OpLoad %5 %20
%138 = OpBitCount %5 %137
OpStore %20 %138
%139 = OpLoad %6 %23
%140 = OpBitCount %6 %139
OpStore %23 %140
%141 = OpLoad %7 %26
%142 = OpBitCount %7 %141
OpStore %26 %142
%143 = OpLoad %8 %29
%144 = OpBitCount %8 %143
OpStore %29 %144
%145 = OpLoad %9 %32
%146 = OpBitCount %9 %145
OpStore %32 %146
%147 = OpLoad %10 %35
%148 = OpBitCount %10 %147
OpStore %35 %148
%149 = OpLoad %3 %14
%150 = OpBitReverse %3 %149
OpStore %14 %150
%151 = OpLoad %4 %17
%152 = OpBitReverse %4 %151
OpStore %17 %152
%153 = OpLoad %5 %20
%154 = OpBitReverse %5 %153
OpStore %20 %154
%155 = OpLoad %6 %23
%156 = OpBitReverse %6 %155
OpStore %23 %156
%157 = OpLoad %7 %26
%158 = OpBitReverse %7 %157
OpStore %26 %158
%159 = OpLoad %8 %29
%160 = OpBitReverse %8 %159
OpStore %29 %160
%161 = OpLoad %9 %32
%162 = OpBitReverse %9 %161
OpStore %32 %162
%163 = OpLoad %10 %35
%164 = OpBitReverse %10 %163
OpStore %35 %164
%16 = OpTypeFunction %2
%17 = OpConstant %3 0
%18 = OpConstantComposite %4 %17 %17
%19 = OpConstantComposite %5 %17 %17 %17
%20 = OpConstantComposite %6 %17 %17 %17 %17
%21 = OpConstant %7 0
%22 = OpConstantComposite %8 %21 %21
%23 = OpConstantComposite %9 %21 %21 %21
%24 = OpConstantComposite %10 %21 %21 %21 %21
%25 = OpConstant %12 0.0
%26 = OpConstantComposite %11 %25 %25
%27 = OpConstantComposite %13 %25 %25 %25 %25
%28 = OpConstant %7 5
%29 = OpConstant %7 10
%31 = OpTypePointer Function %3
%33 = OpTypePointer Function %4
%35 = OpTypePointer Function %5
%37 = OpTypePointer Function %6
%39 = OpTypePointer Function %7
%41 = OpTypePointer Function %8
%43 = OpTypePointer Function %9
%45 = OpTypePointer Function %10
%47 = OpTypePointer Function %11
%49 = OpTypePointer Function %13
%15 = OpFunction %2 None %16
%14 = OpLabel
%48 = OpVariable %49 Function %27
%42 = OpVariable %43 Function %23
%36 = OpVariable %37 Function %20
%30 = OpVariable %31 Function %17
%44 = OpVariable %45 Function %24
%38 = OpVariable %39 Function %21
%32 = OpVariable %33 Function %18
%46 = OpVariable %47 Function %26
%40 = OpVariable %41 Function %22
%34 = OpVariable %35 Function %19
OpBranch %50
%50 = OpLabel
%51 = OpLoad %13 %48
%52 = OpExtInst %7 %1 PackSnorm4x8 %51
OpStore %38 %52
%53 = OpLoad %13 %48
%54 = OpExtInst %7 %1 PackUnorm4x8 %53
OpStore %38 %54
%55 = OpLoad %11 %46
%56 = OpExtInst %7 %1 PackSnorm2x16 %55
OpStore %38 %56
%57 = OpLoad %11 %46
%58 = OpExtInst %7 %1 PackUnorm2x16 %57
OpStore %38 %58
%59 = OpLoad %11 %46
%60 = OpExtInst %7 %1 PackHalf2x16 %59
OpStore %38 %60
%61 = OpLoad %7 %38
%62 = OpExtInst %13 %1 UnpackSnorm4x8 %61
OpStore %48 %62
%63 = OpLoad %7 %38
%64 = OpExtInst %13 %1 UnpackUnorm4x8 %63
OpStore %48 %64
%65 = OpLoad %7 %38
%66 = OpExtInst %11 %1 UnpackSnorm2x16 %65
OpStore %46 %66
%67 = OpLoad %7 %38
%68 = OpExtInst %11 %1 UnpackUnorm2x16 %67
OpStore %46 %68
%69 = OpLoad %7 %38
%70 = OpExtInst %11 %1 UnpackHalf2x16 %69
OpStore %46 %70
%71 = OpLoad %3 %30
%72 = OpLoad %3 %30
%73 = OpBitFieldInsert %3 %71 %72 %28 %29
OpStore %30 %73
%74 = OpLoad %4 %32
%75 = OpLoad %4 %32
%76 = OpBitFieldInsert %4 %74 %75 %28 %29
OpStore %32 %76
%77 = OpLoad %5 %34
%78 = OpLoad %5 %34
%79 = OpBitFieldInsert %5 %77 %78 %28 %29
OpStore %34 %79
%80 = OpLoad %6 %36
%81 = OpLoad %6 %36
%82 = OpBitFieldInsert %6 %80 %81 %28 %29
OpStore %36 %82
%83 = OpLoad %7 %38
%84 = OpLoad %7 %38
%85 = OpBitFieldInsert %7 %83 %84 %28 %29
OpStore %38 %85
%86 = OpLoad %8 %40
%87 = OpLoad %8 %40
%88 = OpBitFieldInsert %8 %86 %87 %28 %29
OpStore %40 %88
%89 = OpLoad %9 %42
%90 = OpLoad %9 %42
%91 = OpBitFieldInsert %9 %89 %90 %28 %29
OpStore %42 %91
%92 = OpLoad %10 %44
%93 = OpLoad %10 %44
%94 = OpBitFieldInsert %10 %92 %93 %28 %29
OpStore %44 %94
%95 = OpLoad %3 %30
%96 = OpBitFieldSExtract %3 %95 %28 %29
OpStore %30 %96
%97 = OpLoad %4 %32
%98 = OpBitFieldSExtract %4 %97 %28 %29
OpStore %32 %98
%99 = OpLoad %5 %34
%100 = OpBitFieldSExtract %5 %99 %28 %29
OpStore %34 %100
%101 = OpLoad %6 %36
%102 = OpBitFieldSExtract %6 %101 %28 %29
OpStore %36 %102
%103 = OpLoad %7 %38
%104 = OpBitFieldUExtract %7 %103 %28 %29
OpStore %38 %104
%105 = OpLoad %8 %40
%106 = OpBitFieldUExtract %8 %105 %28 %29
OpStore %40 %106
%107 = OpLoad %9 %42
%108 = OpBitFieldUExtract %9 %107 %28 %29
OpStore %42 %108
%109 = OpLoad %10 %44
%110 = OpBitFieldUExtract %10 %109 %28 %29
OpStore %44 %110
%111 = OpLoad %3 %30
%112 = OpExtInst %3 %1 FindILsb %111
OpStore %30 %112
%113 = OpLoad %8 %40
%114 = OpExtInst %8 %1 FindILsb %113
OpStore %40 %114
%115 = OpLoad %5 %34
%116 = OpExtInst %5 %1 FindSMsb %115
OpStore %34 %116
%117 = OpLoad %9 %42
%118 = OpExtInst %9 %1 FindUMsb %117
OpStore %42 %118
%119 = OpLoad %3 %30
%120 = OpExtInst %3 %1 FindSMsb %119
OpStore %30 %120
%121 = OpLoad %7 %38
%122 = OpExtInst %7 %1 FindUMsb %121
OpStore %38 %122
%123 = OpLoad %3 %30
%124 = OpBitCount %3 %123
OpStore %30 %124
%125 = OpLoad %4 %32
%126 = OpBitCount %4 %125
OpStore %32 %126
%127 = OpLoad %5 %34
%128 = OpBitCount %5 %127
OpStore %34 %128
%129 = OpLoad %6 %36
%130 = OpBitCount %6 %129
OpStore %36 %130
%131 = OpLoad %7 %38
%132 = OpBitCount %7 %131
OpStore %38 %132
%133 = OpLoad %8 %40
%134 = OpBitCount %8 %133
OpStore %40 %134
%135 = OpLoad %9 %42
%136 = OpBitCount %9 %135
OpStore %42 %136
%137 = OpLoad %10 %44
%138 = OpBitCount %10 %137
OpStore %44 %138
%139 = OpLoad %3 %30
%140 = OpBitReverse %3 %139
OpStore %30 %140
%141 = OpLoad %4 %32
%142 = OpBitReverse %4 %141
OpStore %32 %142
%143 = OpLoad %5 %34
%144 = OpBitReverse %5 %143
OpStore %34 %144
%145 = OpLoad %6 %36
%146 = OpBitReverse %6 %145
OpStore %36 %146
%147 = OpLoad %7 %38
%148 = OpBitReverse %7 %147
OpStore %38 %148
%149 = OpLoad %8 %40
%150 = OpBitReverse %8 %149
OpStore %40 %150
%151 = OpLoad %9 %42
%152 = OpBitReverse %9 %151
OpStore %42 %152
%153 = OpLoad %10 %44
%154 = OpBitReverse %10 %153
OpStore %44 %154
OpReturn
OpFunctionEnd

View File

@ -1,13 +1,13 @@
; SPIR-V
; Version: 1.0
; Generator: rspirv
; Bound: 209
; Bound: 208
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %39 "main" %36
OpExecutionMode %39 LocalSize 64 1 1
OpEntryPoint GLCompute %23 "main" %20
OpExecutionMode %23 LocalSize 64 1 1
OpMemberName %6 0 "pos"
OpMemberName %6 1 "vel"
OpName %6 "Particle"
@ -25,18 +25,18 @@ OpName %12 "NUM_PARTICLES"
OpName %13 "params"
OpName %16 "particlesSrc"
OpName %18 "particlesDst"
OpName %19 "vPos"
OpName %22 "vVel"
OpName %23 "cMass"
OpName %24 "cVel"
OpName %25 "colVel"
OpName %26 "cMassCount"
OpName %29 "cVelCount"
OpName %30 "pos"
OpName %31 "vel"
OpName %32 "i"
OpName %36 "global_invocation_id"
OpName %39 "main"
OpName %20 "global_invocation_id"
OpName %23 "main"
OpName %36 "vPos"
OpName %39 "vVel"
OpName %41 "cMass"
OpName %42 "cVel"
OpName %43 "colVel"
OpName %44 "cMassCount"
OpName %46 "cVelCount"
OpName %47 "pos"
OpName %49 "vel"
OpName %51 "i"
OpMemberDecorate %6 0 Offset 0
OpMemberDecorate %6 1 Offset 8
OpMemberDecorate %7 0 Offset 0
@ -58,7 +58,7 @@ OpDecorate %16 DescriptorSet 0
OpDecorate %16 Binding 1
OpDecorate %18 DescriptorSet 0
OpDecorate %18 Binding 2
OpDecorate %36 BuiltIn GlobalInvocationId
OpDecorate %20 BuiltIn GlobalInvocationId
%2 = OpTypeVoid
%3 = OpTypeInt 32 0
%5 = OpTypeFloat 32
@ -76,264 +76,257 @@ OpDecorate %36 BuiltIn GlobalInvocationId
%17 = OpTypePointer StorageBuffer %9
%16 = OpVariable %17 StorageBuffer
%18 = OpVariable %17 StorageBuffer
%20 = OpTypePointer Function %4
%21 = OpConstantNull %4
%27 = OpTypePointer Function %11
%28 = OpConstantNull %11
%33 = OpTypePointer Function %3
%34 = OpConstantNull %3
%37 = OpTypePointer Input %10
%36 = OpVariable %37 Input
%40 = OpTypeFunction %2
%41 = OpTypePointer Uniform %7
%42 = OpConstant %3 0
%44 = OpConstant %5 0.0
%45 = OpConstant %11 0
%46 = OpConstant %11 1
%47 = OpConstant %3 1
%48 = OpConstant %5 0.1
%49 = OpConstant %5 -1.0
%50 = OpConstant %5 1.0
%53 = OpTypeBool
%57 = OpTypePointer StorageBuffer %8
%58 = OpTypePointer StorageBuffer %6
%59 = OpTypePointer StorageBuffer %4
%88 = OpTypePointer Uniform %5
%102 = OpConstant %3 2
%116 = OpConstant %3 3
%151 = OpConstant %3 4
%157 = OpConstant %3 5
%163 = OpConstant %3 6
%180 = OpTypePointer Function %5
%39 = OpFunction %2 None %40
%35 = OpLabel
%32 = OpVariable %33 Function %34
%29 = OpVariable %27 Function %28
%24 = OpVariable %20 Function %21
%19 = OpVariable %20 Function %21
%30 = OpVariable %20 Function %21
%25 = OpVariable %20 Function %21
%22 = OpVariable %20 Function %21
%31 = OpVariable %20 Function %21
%26 = OpVariable %27 Function %28
%23 = OpVariable %20 Function %21
%38 = OpLoad %10 %36
%43 = OpAccessChain %41 %13 %42
OpBranch %51
%51 = OpLabel
%52 = OpCompositeExtract %3 %38 0
%54 = OpUGreaterThanEqual %53 %52 %12
OpSelectionMerge %55 None
OpBranchConditional %54 %56 %55
%56 = OpLabel
%21 = OpTypePointer Input %10
%20 = OpVariable %21 Input
%24 = OpTypeFunction %2
%25 = OpTypePointer Uniform %7
%26 = OpConstant %3 0
%28 = OpConstant %5 0.0
%29 = OpConstantComposite %4 %28 %28
%30 = OpConstant %11 0
%31 = OpConstant %11 1
%32 = OpConstant %3 1
%33 = OpConstant %5 0.1
%34 = OpConstant %5 -1.0
%35 = OpConstant %5 1.0
%37 = OpTypePointer Function %4
%38 = OpConstantNull %4
%40 = OpConstantNull %4
%45 = OpTypePointer Function %11
%48 = OpConstantNull %4
%50 = OpConstantNull %4
%52 = OpTypePointer Function %3
%55 = OpTypeBool
%59 = OpTypePointer StorageBuffer %8
%60 = OpTypePointer StorageBuffer %6
%61 = OpTypePointer StorageBuffer %4
%87 = OpTypePointer Uniform %5
%101 = OpConstant %3 2
%115 = OpConstant %3 3
%150 = OpConstant %3 4
%156 = OpConstant %3 5
%162 = OpConstant %3 6
%179 = OpTypePointer Function %5
%23 = OpFunction %2 None %24
%19 = OpLabel
%51 = OpVariable %52 Function %26
%46 = OpVariable %45 Function %30
%42 = OpVariable %37 Function %29
%36 = OpVariable %37 Function %38
%47 = OpVariable %37 Function %48
%43 = OpVariable %37 Function %29
%39 = OpVariable %37 Function %40
%49 = OpVariable %37 Function %50
%44 = OpVariable %45 Function %30
%41 = OpVariable %37 Function %29
%22 = OpLoad %10 %20
%27 = OpAccessChain %25 %13 %26
OpBranch %53
%53 = OpLabel
%54 = OpCompositeExtract %3 %22 0
%56 = OpUGreaterThanEqual %55 %54 %12
OpSelectionMerge %57 None
OpBranchConditional %56 %58 %57
%58 = OpLabel
OpReturn
%55 = OpLabel
%60 = OpAccessChain %59 %16 %42 %52 %42
%61 = OpLoad %4 %60
OpStore %19 %61
%62 = OpAccessChain %59 %16 %42 %52 %47
%57 = OpLabel
%62 = OpAccessChain %61 %16 %26 %54 %26
%63 = OpLoad %4 %62
OpStore %22 %63
%64 = OpCompositeConstruct %4 %44 %44
OpStore %23 %64
%65 = OpCompositeConstruct %4 %44 %44
OpStore %24 %65
%66 = OpCompositeConstruct %4 %44 %44
OpStore %25 %66
OpStore %26 %45
OpStore %29 %45
OpStore %32 %42
OpStore %36 %63
%64 = OpAccessChain %61 %16 %26 %54 %32
%65 = OpLoad %4 %64
OpStore %39 %65
OpBranch %66
%66 = OpLabel
OpLoopMerge %67 %69 None
OpBranch %68
%68 = OpLabel
%70 = OpLoad %3 %51
%71 = OpUGreaterThanEqual %55 %70 %12
OpSelectionMerge %72 None
OpBranchConditional %71 %73 %72
%73 = OpLabel
OpBranch %67
%67 = OpLabel
OpLoopMerge %68 %70 None
%72 = OpLabel
%74 = OpLoad %3 %51
%75 = OpIEqual %55 %74 %54
OpSelectionMerge %76 None
OpBranchConditional %75 %77 %76
%77 = OpLabel
OpBranch %69
%76 = OpLabel
%78 = OpLoad %3 %51
%79 = OpAccessChain %61 %16 %26 %78 %26
%80 = OpLoad %4 %79
OpStore %47 %80
%81 = OpLoad %3 %51
%82 = OpAccessChain %61 %16 %26 %81 %32
%83 = OpLoad %4 %82
OpStore %49 %83
%84 = OpLoad %4 %47
%85 = OpLoad %4 %36
%86 = OpExtInst %5 %1 Distance %84 %85
%88 = OpAccessChain %87 %27 %32
%89 = OpLoad %5 %88
%90 = OpFOrdLessThan %55 %86 %89
OpSelectionMerge %91 None
OpBranchConditional %90 %92 %91
%92 = OpLabel
%93 = OpLoad %4 %41
%94 = OpLoad %4 %47
%95 = OpFAdd %4 %93 %94
OpStore %41 %95
%96 = OpLoad %11 %44
%97 = OpIAdd %11 %96 %31
OpStore %44 %97
OpBranch %91
%91 = OpLabel
%98 = OpLoad %4 %47
%99 = OpLoad %4 %36
%100 = OpExtInst %5 %1 Distance %98 %99
%102 = OpAccessChain %87 %27 %101
%103 = OpLoad %5 %102
%104 = OpFOrdLessThan %55 %100 %103
OpSelectionMerge %105 None
OpBranchConditional %104 %106 %105
%106 = OpLabel
%107 = OpLoad %4 %43
%108 = OpLoad %4 %47
%109 = OpLoad %4 %36
%110 = OpFSub %4 %108 %109
%111 = OpFSub %4 %107 %110
OpStore %43 %111
OpBranch %105
%105 = OpLabel
%112 = OpLoad %4 %47
%113 = OpLoad %4 %36
%114 = OpExtInst %5 %1 Distance %112 %113
%116 = OpAccessChain %87 %27 %115
%117 = OpLoad %5 %116
%118 = OpFOrdLessThan %55 %114 %117
OpSelectionMerge %119 None
OpBranchConditional %118 %120 %119
%120 = OpLabel
%121 = OpLoad %4 %42
%122 = OpLoad %4 %49
%123 = OpFAdd %4 %121 %122
OpStore %42 %123
%124 = OpLoad %11 %46
%125 = OpIAdd %11 %124 %31
OpStore %46 %125
OpBranch %119
%119 = OpLabel
OpBranch %69
%69 = OpLabel
%71 = OpLoad %3 %32
%72 = OpUGreaterThanEqual %53 %71 %12
OpSelectionMerge %73 None
OpBranchConditional %72 %74 %73
%74 = OpLabel
OpBranch %68
%73 = OpLabel
%75 = OpLoad %3 %32
%76 = OpIEqual %53 %75 %52
OpSelectionMerge %77 None
OpBranchConditional %76 %78 %77
%78 = OpLabel
OpBranch %70
%77 = OpLabel
%79 = OpLoad %3 %32
%80 = OpAccessChain %59 %16 %42 %79 %42
%81 = OpLoad %4 %80
OpStore %30 %81
%82 = OpLoad %3 %32
%83 = OpAccessChain %59 %16 %42 %82 %47
%84 = OpLoad %4 %83
OpStore %31 %84
%85 = OpLoad %4 %30
%86 = OpLoad %4 %19
%87 = OpExtInst %5 %1 Distance %85 %86
%89 = OpAccessChain %88 %43 %47
%90 = OpLoad %5 %89
%91 = OpFOrdLessThan %53 %87 %90
OpSelectionMerge %92 None
OpBranchConditional %91 %93 %92
%93 = OpLabel
%94 = OpLoad %4 %23
%95 = OpLoad %4 %30
%96 = OpFAdd %4 %94 %95
OpStore %23 %96
%97 = OpLoad %11 %26
%98 = OpIAdd %11 %97 %46
OpStore %26 %98
OpBranch %92
%92 = OpLabel
%99 = OpLoad %4 %30
%100 = OpLoad %4 %19
%101 = OpExtInst %5 %1 Distance %99 %100
%103 = OpAccessChain %88 %43 %102
%104 = OpLoad %5 %103
%105 = OpFOrdLessThan %53 %101 %104
OpSelectionMerge %106 None
OpBranchConditional %105 %107 %106
%107 = OpLabel
%108 = OpLoad %4 %25
%109 = OpLoad %4 %30
%110 = OpLoad %4 %19
%111 = OpFSub %4 %109 %110
%112 = OpFSub %4 %108 %111
OpStore %25 %112
OpBranch %106
%106 = OpLabel
%113 = OpLoad %4 %30
%114 = OpLoad %4 %19
%115 = OpExtInst %5 %1 Distance %113 %114
%117 = OpAccessChain %88 %43 %116
%118 = OpLoad %5 %117
%119 = OpFOrdLessThan %53 %115 %118
OpSelectionMerge %120 None
OpBranchConditional %119 %121 %120
%121 = OpLabel
%122 = OpLoad %4 %24
%123 = OpLoad %4 %31
%124 = OpFAdd %4 %122 %123
OpStore %24 %124
%125 = OpLoad %11 %29
%126 = OpIAdd %11 %125 %46
OpStore %29 %126
OpBranch %120
%120 = OpLabel
OpBranch %70
%70 = OpLabel
%127 = OpLoad %3 %32
%128 = OpIAdd %3 %127 %47
OpStore %32 %128
OpBranch %67
%68 = OpLabel
%129 = OpLoad %11 %26
%130 = OpSGreaterThan %53 %129 %45
OpSelectionMerge %131 None
OpBranchConditional %130 %132 %131
%132 = OpLabel
%133 = OpLoad %4 %23
%134 = OpLoad %11 %26
%135 = OpConvertSToF %5 %134
%136 = OpCompositeConstruct %4 %135 %135
%137 = OpFDiv %4 %133 %136
%138 = OpLoad %4 %19
%139 = OpFSub %4 %137 %138
OpStore %23 %139
OpBranch %131
%126 = OpLoad %3 %51
%127 = OpIAdd %3 %126 %32
OpStore %51 %127
OpBranch %66
%67 = OpLabel
%128 = OpLoad %11 %44
%129 = OpSGreaterThan %55 %128 %30
OpSelectionMerge %130 None
OpBranchConditional %129 %131 %130
%131 = OpLabel
%140 = OpLoad %11 %29
%141 = OpSGreaterThan %53 %140 %45
OpSelectionMerge %142 None
OpBranchConditional %141 %143 %142
%143 = OpLabel
%144 = OpLoad %4 %24
%145 = OpLoad %11 %29
%146 = OpConvertSToF %5 %145
%147 = OpCompositeConstruct %4 %146 %146
%148 = OpFDiv %4 %144 %147
OpStore %24 %148
OpBranch %142
%132 = OpLoad %4 %41
%133 = OpLoad %11 %44
%134 = OpConvertSToF %5 %133
%135 = OpCompositeConstruct %4 %134 %134
%136 = OpFDiv %4 %132 %135
%137 = OpLoad %4 %36
%138 = OpFSub %4 %136 %137
OpStore %41 %138
OpBranch %130
%130 = OpLabel
%139 = OpLoad %11 %46
%140 = OpSGreaterThan %55 %139 %30
OpSelectionMerge %141 None
OpBranchConditional %140 %142 %141
%142 = OpLabel
%149 = OpLoad %4 %22
%150 = OpLoad %4 %23
%152 = OpAccessChain %88 %43 %151
%153 = OpLoad %5 %152
%154 = OpVectorTimesScalar %4 %150 %153
%155 = OpFAdd %4 %149 %154
%156 = OpLoad %4 %25
%158 = OpAccessChain %88 %43 %157
%159 = OpLoad %5 %158
%160 = OpVectorTimesScalar %4 %156 %159
%161 = OpFAdd %4 %155 %160
%162 = OpLoad %4 %24
%164 = OpAccessChain %88 %43 %163
%165 = OpLoad %5 %164
%166 = OpVectorTimesScalar %4 %162 %165
%167 = OpFAdd %4 %161 %166
OpStore %22 %167
%168 = OpLoad %4 %22
%169 = OpExtInst %4 %1 Normalize %168
%170 = OpLoad %4 %22
%171 = OpExtInst %5 %1 Length %170
%172 = OpExtInst %5 %1 FClamp %171 %44 %48
%173 = OpVectorTimesScalar %4 %169 %172
OpStore %22 %173
%174 = OpLoad %4 %19
%175 = OpLoad %4 %22
%176 = OpAccessChain %88 %43 %42
%177 = OpLoad %5 %176
%178 = OpVectorTimesScalar %4 %175 %177
%179 = OpFAdd %4 %174 %178
OpStore %19 %179
%181 = OpAccessChain %180 %19 %42
%182 = OpLoad %5 %181
%183 = OpFOrdLessThan %53 %182 %49
OpSelectionMerge %184 None
OpBranchConditional %183 %185 %184
%185 = OpLabel
%186 = OpAccessChain %180 %19 %42
OpStore %186 %50
OpBranch %184
%143 = OpLoad %4 %42
%144 = OpLoad %11 %46
%145 = OpConvertSToF %5 %144
%146 = OpCompositeConstruct %4 %145 %145
%147 = OpFDiv %4 %143 %146
OpStore %42 %147
OpBranch %141
%141 = OpLabel
%148 = OpLoad %4 %39
%149 = OpLoad %4 %41
%151 = OpAccessChain %87 %27 %150
%152 = OpLoad %5 %151
%153 = OpVectorTimesScalar %4 %149 %152
%154 = OpFAdd %4 %148 %153
%155 = OpLoad %4 %43
%157 = OpAccessChain %87 %27 %156
%158 = OpLoad %5 %157
%159 = OpVectorTimesScalar %4 %155 %158
%160 = OpFAdd %4 %154 %159
%161 = OpLoad %4 %42
%163 = OpAccessChain %87 %27 %162
%164 = OpLoad %5 %163
%165 = OpVectorTimesScalar %4 %161 %164
%166 = OpFAdd %4 %160 %165
OpStore %39 %166
%167 = OpLoad %4 %39
%168 = OpExtInst %4 %1 Normalize %167
%169 = OpLoad %4 %39
%170 = OpExtInst %5 %1 Length %169
%171 = OpExtInst %5 %1 FClamp %170 %28 %33
%172 = OpVectorTimesScalar %4 %168 %171
OpStore %39 %172
%173 = OpLoad %4 %36
%174 = OpLoad %4 %39
%175 = OpAccessChain %87 %27 %26
%176 = OpLoad %5 %175
%177 = OpVectorTimesScalar %4 %174 %176
%178 = OpFAdd %4 %173 %177
OpStore %36 %178
%180 = OpAccessChain %179 %36 %26
%181 = OpLoad %5 %180
%182 = OpFOrdLessThan %55 %181 %34
OpSelectionMerge %183 None
OpBranchConditional %182 %184 %183
%184 = OpLabel
%187 = OpAccessChain %180 %19 %42
%188 = OpLoad %5 %187
%189 = OpFOrdGreaterThan %53 %188 %50
OpSelectionMerge %190 None
OpBranchConditional %189 %191 %190
%191 = OpLabel
%192 = OpAccessChain %180 %19 %42
OpStore %192 %49
OpBranch %190
%185 = OpAccessChain %179 %36 %26
OpStore %185 %35
OpBranch %183
%183 = OpLabel
%186 = OpAccessChain %179 %36 %26
%187 = OpLoad %5 %186
%188 = OpFOrdGreaterThan %55 %187 %35
OpSelectionMerge %189 None
OpBranchConditional %188 %190 %189
%190 = OpLabel
%193 = OpAccessChain %180 %19 %47
%194 = OpLoad %5 %193
%195 = OpFOrdLessThan %53 %194 %49
OpSelectionMerge %196 None
OpBranchConditional %195 %197 %196
%197 = OpLabel
%198 = OpAccessChain %180 %19 %47
OpStore %198 %50
OpBranch %196
%191 = OpAccessChain %179 %36 %26
OpStore %191 %34
OpBranch %189
%189 = OpLabel
%192 = OpAccessChain %179 %36 %32
%193 = OpLoad %5 %192
%194 = OpFOrdLessThan %55 %193 %34
OpSelectionMerge %195 None
OpBranchConditional %194 %196 %195
%196 = OpLabel
%199 = OpAccessChain %180 %19 %47
%200 = OpLoad %5 %199
%201 = OpFOrdGreaterThan %53 %200 %50
OpSelectionMerge %202 None
OpBranchConditional %201 %203 %202
%203 = OpLabel
%204 = OpAccessChain %180 %19 %47
OpStore %204 %49
OpBranch %202
%197 = OpAccessChain %179 %36 %32
OpStore %197 %35
OpBranch %195
%195 = OpLabel
%198 = OpAccessChain %179 %36 %32
%199 = OpLoad %5 %198
%200 = OpFOrdGreaterThan %55 %199 %35
OpSelectionMerge %201 None
OpBranchConditional %200 %202 %201
%202 = OpLabel
%205 = OpLoad %4 %19
%206 = OpAccessChain %59 %18 %42 %52 %42
OpStore %206 %205
%207 = OpLoad %4 %22
%208 = OpAccessChain %59 %18 %42 %52 %47
OpStore %208 %207
%203 = OpAccessChain %179 %36 %32
OpStore %203 %34
OpBranch %201
%201 = OpLabel
%204 = OpLoad %4 %36
%205 = OpAccessChain %61 %18 %26 %54 %26
OpStore %205 %204
%206 = OpLoad %4 %39
%207 = OpAccessChain %61 %18 %26 %54 %32
OpStore %207 %206
OpReturn
OpFunctionEnd

View File

@ -182,6 +182,7 @@ OpDecorate %267 Location 0
%283 = OpConstantNull %12
%284 = OpConstantNull %6
%285 = OpConstant %4 0.0
%286 = OpConstantComposite %6 %285 %285 %285 %285
%48 = OpFunction %6 None %49
%46 = OpFunctionParameter %5
%47 = OpFunctionParameter %5
@ -437,20 +438,19 @@ OpFunctionEnd
%277 = OpLoad %18 %39
%278 = OpLoad %19 %41
%279 = OpLoad %20 %43
OpBranch %286
%286 = OpLabel
%287 = OpFunctionCall %6 %48 %280 %280
%288 = OpFunctionCall %6 %63 %281 %280
%289 = OpFunctionCall %6 %79 %281 %282 %280
%290 = OpFunctionCall %6 %97 %281 %280 %280
%291 = OpFunctionCall %6 %113 %283 %280
%292 = OpFunctionCall %6 %128 %281 %280
%293 = OpFunctionCall %2 %210 %280 %284
%294 = OpFunctionCall %2 %220 %281 %284
%295 = OpFunctionCall %2 %232 %281 %282 %284
%296 = OpFunctionCall %2 %246 %281 %280 %284
%297 = OpFunctionCall %2 %258 %283 %284
%298 = OpCompositeConstruct %6 %285 %285 %285 %285
OpStore %267 %298
OpBranch %287
%287 = OpLabel
%288 = OpFunctionCall %6 %48 %280 %280
%289 = OpFunctionCall %6 %63 %281 %280
%290 = OpFunctionCall %6 %79 %281 %282 %280
%291 = OpFunctionCall %6 %97 %281 %280 %280
%292 = OpFunctionCall %6 %113 %283 %280
%293 = OpFunctionCall %6 %128 %281 %280
%294 = OpFunctionCall %2 %210 %280 %284
%295 = OpFunctionCall %2 %220 %281 %284
%296 = OpFunctionCall %2 %232 %281 %282 %284
%297 = OpFunctionCall %2 %246 %281 %280 %284
%298 = OpFunctionCall %2 %258 %283 %284
OpStore %267 %286
OpReturn
OpFunctionEnd

View File

@ -171,6 +171,7 @@ OpDecorate %295 Location 0
%310 = OpConstant %10 0
%311 = OpConstantNull %12
%312 = OpConstant %4 0.0
%313 = OpConstantComposite %6 %312 %312 %312 %312
%48 = OpFunction %6 None %49
%46 = OpFunctionParameter %5
%47 = OpFunctionParameter %5
@ -519,20 +520,19 @@ OpFunctionEnd
%305 = OpLoad %18 %39
%306 = OpLoad %19 %41
%307 = OpLoad %20 %43
OpBranch %313
%313 = OpLabel
%314 = OpFunctionCall %6 %48 %308 %308
%315 = OpFunctionCall %6 %66 %309 %308
%316 = OpFunctionCall %6 %85 %309 %310 %308
%317 = OpFunctionCall %6 %106 %309 %308 %308
%318 = OpFunctionCall %6 %124 %311 %308
%319 = OpFunctionCall %6 %141 %309 %308
%320 = OpFunctionCall %2 %233 %308 %53
%321 = OpFunctionCall %2 %244 %309 %53
%322 = OpFunctionCall %2 %257 %309 %310 %53
%323 = OpFunctionCall %2 %272 %309 %308 %53
%324 = OpFunctionCall %2 %285 %311 %53
%325 = OpCompositeConstruct %6 %312 %312 %312 %312
OpStore %295 %325
OpBranch %314
%314 = OpLabel
%315 = OpFunctionCall %6 %48 %308 %308
%316 = OpFunctionCall %6 %66 %309 %308
%317 = OpFunctionCall %6 %85 %309 %310 %308
%318 = OpFunctionCall %6 %106 %309 %308 %308
%319 = OpFunctionCall %6 %124 %311 %308
%320 = OpFunctionCall %6 %141 %309 %308
%321 = OpFunctionCall %2 %233 %308 %53
%322 = OpFunctionCall %2 %244 %309 %53
%323 = OpFunctionCall %2 %257 %309 %310 %53
%324 = OpFunctionCall %2 %272 %309 %308 %53
%325 = OpFunctionCall %2 %285 %311 %53
OpStore %295 %313
OpReturn
OpFunctionEnd

View File

@ -1,19 +1,22 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 47
; Bound: 50
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %45 "main"
OpExecutionMode %45 LocalSize 1 1 1
OpEntryPoint GLCompute %48 "main"
OpExecutionMode %48 LocalSize 1 1 1
%2 = OpTypeVoid
%3 = OpTypeBool
%6 = OpTypeFunction %2
%7 = OpConstantTrue %3
%14 = OpTypePointer Function %3
%15 = OpConstantNull %3
%20 = OpTypeFunction %2 %3
%16 = OpTypeFunction %2 %3
%18 = OpTypePointer Function %3
%19 = OpConstantNull %3
%21 = OpConstantNull %3
%35 = OpConstantNull %3
%37 = OpConstantNull %3
%5 = OpFunction %2 None %6
%4 = OpLabel
OpBranch %8
@ -29,57 +32,57 @@ OpBranchConditional %7 %10 %9
%10 = OpLabel
OpReturn
OpFunctionEnd
%19 = OpFunction %2 None %20
%18 = OpFunctionParameter %3
%17 = OpLabel
%13 = OpVariable %14 Function %15
%16 = OpVariable %14 Function %15
OpBranch %21
%21 = OpLabel
%15 = OpFunction %2 None %16
%14 = OpFunctionParameter %3
%13 = OpLabel
%17 = OpVariable %18 Function %19
%20 = OpVariable %18 Function %21
OpBranch %22
%22 = OpLabel
OpLoopMerge %23 %25 None
OpBranch %24
%24 = OpLabel
OpBranch %23
%23 = OpLabel
OpLoopMerge %24 %26 None
OpBranch %25
%25 = OpLabel
OpStore %13 %18
%26 = OpLoad %3 %13
%27 = OpLogicalNotEqual %3 %18 %26
OpStore %16 %27
%28 = OpLoad %3 %16
%29 = OpLogicalEqual %3 %18 %28
OpBranchConditional %29 %23 %22
%23 = OpLabel
OpBranch %26
%26 = OpLabel
OpStore %17 %14
%27 = OpLoad %3 %17
%28 = OpLogicalNotEqual %3 %14 %27
OpStore %20 %28
%29 = OpLoad %3 %20
%30 = OpLogicalEqual %3 %14 %29
OpBranchConditional %30 %24 %23
%24 = OpLabel
OpReturn
OpFunctionEnd
%34 = OpFunction %2 None %20
%33 = OpFunctionParameter %3
%32 = OpLabel
%30 = OpVariable %14 Function %15
%31 = OpVariable %14 Function %15
OpBranch %35
%35 = OpLabel
OpBranch %36
%36 = OpLabel
OpLoopMerge %37 %39 None
%33 = OpFunction %2 None %16
%32 = OpFunctionParameter %3
%31 = OpLabel
%34 = OpVariable %18 Function %35
%36 = OpVariable %18 Function %37
OpBranch %38
%38 = OpLabel
OpStore %30 %33
%40 = OpLoad %3 %30
%41 = OpLogicalNotEqual %3 %33 %40
OpStore %31 %41
OpBranch %39
%39 = OpLabel
%42 = OpLoad %3 %31
%43 = OpLogicalEqual %3 %33 %42
OpBranchConditional %43 %37 %36
%37 = OpLabel
OpLoopMerge %40 %42 None
OpBranch %41
%41 = OpLabel
OpStore %34 %32
%43 = OpLoad %3 %34
%44 = OpLogicalNotEqual %3 %32 %43
OpStore %36 %44
OpBranch %42
%42 = OpLabel
%45 = OpLoad %3 %36
%46 = OpLogicalEqual %3 %32 %45
OpBranchConditional %46 %40 %39
%40 = OpLabel
OpReturn
OpFunctionEnd
%45 = OpFunction %2 None %6
%44 = OpLabel
OpBranch %46
%46 = OpLabel
%48 = OpFunction %2 None %6
%47 = OpLabel
OpBranch %49
%49 = OpLabel
OpReturn
OpFunctionEnd

View File

@ -11,10 +11,10 @@ OpExecutionMode %51 LocalSize 1 1 1
OpMemberName %5 0 "data"
OpName %5 "PrimeIndices"
OpName %7 "v_indices"
OpName %9 "n"
OpName %12 "i"
OpName %14 "n_base"
OpName %15 "collatz_iterations"
OpName %10 "n_base"
OpName %11 "collatz_iterations"
OpName %17 "n"
OpName %20 "i"
OpName %48 "global_id"
OpName %51 "main"
OpDecorate %4 ArrayStride 4
@ -30,35 +30,34 @@ OpDecorate %48 BuiltIn GlobalInvocationId
%6 = OpTypeVector %3 3
%8 = OpTypePointer StorageBuffer %5
%7 = OpVariable %8 StorageBuffer
%10 = OpTypePointer Function %3
%11 = OpConstantNull %3
%16 = OpTypeFunction %3 %3
%17 = OpConstant %3 0
%18 = OpConstant %3 1
%19 = OpConstant %3 2
%20 = OpConstant %3 3
%12 = OpTypeFunction %3 %3
%13 = OpConstant %3 0
%14 = OpConstant %3 1
%15 = OpConstant %3 2
%16 = OpConstant %3 3
%18 = OpTypePointer Function %3
%19 = OpConstantNull %3
%27 = OpTypeBool
%49 = OpTypePointer Input %6
%48 = OpVariable %49 Input
%52 = OpTypeFunction %2
%54 = OpTypePointer StorageBuffer %4
%56 = OpTypePointer StorageBuffer %3
%15 = OpFunction %3 None %16
%14 = OpFunctionParameter %3
%13 = OpLabel
%9 = OpVariable %10 Function %11
%12 = OpVariable %10 Function %11
%11 = OpFunction %3 None %12
%10 = OpFunctionParameter %3
%9 = OpLabel
%17 = OpVariable %18 Function %19
%20 = OpVariable %18 Function %13
OpBranch %21
%21 = OpLabel
OpStore %9 %14
OpStore %12 %17
OpStore %17 %10
OpBranch %22
%22 = OpLabel
OpLoopMerge %23 %25 None
OpBranch %24
%24 = OpLabel
%26 = OpLoad %3 %9
%28 = OpUGreaterThan %27 %26 %18
%26 = OpLoad %3 %17
%28 = OpUGreaterThan %27 %26 %14
OpSelectionMerge %29 None
OpBranchConditional %28 %29 %30
%30 = OpLabel
@ -66,33 +65,33 @@ OpBranch %23
%29 = OpLabel
OpBranch %31
%31 = OpLabel
%33 = OpLoad %3 %9
%34 = OpUMod %3 %33 %19
%35 = OpIEqual %27 %34 %17
%33 = OpLoad %3 %17
%34 = OpUMod %3 %33 %15
%35 = OpIEqual %27 %34 %13
OpSelectionMerge %36 None
OpBranchConditional %35 %37 %38
%37 = OpLabel
%39 = OpLoad %3 %9
%40 = OpUDiv %3 %39 %19
OpStore %9 %40
%39 = OpLoad %3 %17
%40 = OpUDiv %3 %39 %15
OpStore %17 %40
OpBranch %36
%38 = OpLabel
%41 = OpLoad %3 %9
%42 = OpIMul %3 %20 %41
%43 = OpIAdd %3 %42 %18
OpStore %9 %43
%41 = OpLoad %3 %17
%42 = OpIMul %3 %16 %41
%43 = OpIAdd %3 %42 %14
OpStore %17 %43
OpBranch %36
%36 = OpLabel
%44 = OpLoad %3 %12
%45 = OpIAdd %3 %44 %18
OpStore %12 %45
%44 = OpLoad %3 %20
%45 = OpIAdd %3 %44 %14
OpStore %20 %45
OpBranch %32
%32 = OpLabel
OpBranch %25
%25 = OpLabel
OpBranch %22
%23 = OpLabel
%46 = OpLoad %3 %12
%46 = OpLoad %3 %20
OpReturnValue %46
OpFunctionEnd
%51 = OpFunction %2 None %52
@ -102,10 +101,10 @@ OpBranch %53
%53 = OpLabel
%55 = OpCompositeExtract %3 %50 0
%57 = OpCompositeExtract %3 %50 0
%58 = OpAccessChain %56 %7 %17 %57
%58 = OpAccessChain %56 %7 %13 %57
%59 = OpLoad %3 %58
%60 = OpFunctionCall %3 %15 %59
%61 = OpAccessChain %56 %7 %17 %55
%60 = OpFunctionCall %3 %11 %59
%61 = OpAccessChain %56 %7 %13 %55
OpStore %61 %60
OpReturn
OpFunctionEnd

View File

@ -1,12 +1,12 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 73
; Bound: 70
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %46 "main"
OpExecutionMode %46 LocalSize 1 1 1
OpEntryPoint GLCompute %44 "main"
OpExecutionMode %44 LocalSize 1 1 1
OpMemberDecorate %6 0 Offset 0
OpMemberDecorate %6 1 Offset 16
OpDecorate %10 ArrayStride 16
@ -53,35 +53,32 @@ OpDecorate %17 ArrayStride 4
%40 = OpConstant %5 2
%41 = OpConstant %5 3
%42 = OpConstantComposite %17 %38 %39 %40 %41
%44 = OpTypePointer Function %6
%47 = OpTypeFunction %2
%48 = OpConstant %12 0
%49 = OpConstantNull %20
%46 = OpFunction %2 None %47
%45 = OpLabel
%43 = OpVariable %44 Function %37
OpBranch %50
%50 = OpLabel
%51 = OpCompositeConstruct %3 %22 %22 %22 %22
%52 = OpCompositeConstruct %6 %51 %39
OpStore %43 %52
%53 = OpCompositeConstruct %9 %22 %21
%54 = OpCompositeConstruct %9 %21 %22
%55 = OpCompositeConstruct %8 %53 %54
%56 = OpCompositeConstruct %3 %22 %21 %21 %21
%57 = OpCompositeConstruct %3 %21 %22 %21 %21
%58 = OpCompositeConstruct %3 %21 %21 %22 %21
%59 = OpCompositeConstruct %3 %21 %21 %21 %22
%60 = OpCompositeConstruct %19 %56 %57 %58 %59
%61 = OpCompositeConstruct %14 %48 %48
%62 = OpCompositeConstruct %9 %21 %21
%63 = OpCompositeConstruct %9 %21 %21
%64 = OpCompositeConstruct %8 %62 %63
%65 = OpCompositeConstruct %17 %38 %39 %40 %41
%67 = OpCompositeConstruct %14 %48 %48
%68 = OpCompositeConstruct %7 %21 %21 %21
%69 = OpCompositeConstruct %7 %21 %21 %21
%70 = OpCompositeConstruct %20 %68 %69
%72 = OpCopyObject %20 %49
%45 = OpTypeFunction %2
%46 = OpConstantComposite %3 %22 %22 %22 %22
%47 = OpConstantComposite %6 %46 %39
%48 = OpConstantComposite %9 %22 %21
%49 = OpConstantComposite %8 %48 %26
%50 = OpConstantComposite %3 %22 %21 %21 %21
%51 = OpConstantComposite %3 %21 %22 %21 %21
%52 = OpConstantComposite %3 %21 %21 %22 %21
%53 = OpConstantComposite %3 %21 %21 %21 %22
%54 = OpConstantComposite %19 %50 %51 %52 %53
%55 = OpConstant %12 0
%56 = OpConstantComposite %14 %55 %55
%57 = OpConstantComposite %9 %21 %21
%58 = OpConstantComposite %8 %57 %57
%59 = OpConstantComposite %14 %55 %55
%60 = OpConstantComposite %7 %21 %21 %21
%61 = OpConstantComposite %20 %60 %60
%62 = OpConstantNull %20
%64 = OpTypePointer Function %6
%65 = OpConstantNull %6
%44 = OpFunction %2 None %45
%43 = OpLabel
%63 = OpVariable %64 Function %65
OpBranch %66
%66 = OpLabel
OpStore %63 %47
%69 = OpCopyObject %20 %62
OpReturn
OpFunctionEnd

View File

@ -5,9 +5,9 @@
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %39 "main" %36
OpExecutionMode %39 LocalSize 1 1 1
OpDecorate %36 BuiltIn GlobalInvocationId
OpEntryPoint GLCompute %36 "main" %33
OpExecutionMode %36 LocalSize 1 1 1
OpDecorate %33 BuiltIn GlobalInvocationId
%2 = OpTypeVoid
%4 = OpTypeInt 32 0
%3 = OpTypeVector %4 3
@ -15,15 +15,15 @@ OpDecorate %36 BuiltIn GlobalInvocationId
%9 = OpTypeFunction %2 %5
%15 = OpTypeFunction %2
%16 = OpConstant %5 0
%33 = OpTypePointer Function %5
%34 = OpConstantNull %5
%37 = OpTypePointer Input %3
%36 = OpVariable %37 Input
%40 = OpConstant %5 1
%41 = OpConstant %5 2
%42 = OpConstant %5 3
%43 = OpConstant %5 4
%44 = OpConstant %4 0
%34 = OpTypePointer Input %3
%33 = OpVariable %34 Input
%37 = OpConstant %5 1
%38 = OpConstant %5 2
%39 = OpConstant %5 3
%40 = OpConstant %5 4
%41 = OpConstant %4 0
%43 = OpTypePointer Function %5
%44 = OpConstantNull %5
%46 = OpConstant %4 2
%47 = OpConstant %4 1
%48 = OpConstant %4 72
@ -76,62 +76,62 @@ OpBranch %25
%26 = OpLabel
OpReturn
OpFunctionEnd
%39 = OpFunction %2 None %15
%35 = OpLabel
%32 = OpVariable %33 Function %34
%38 = OpLoad %3 %36
%36 = OpFunction %2 None %15
%32 = OpLabel
%42 = OpVariable %43 Function %44
%35 = OpLoad %3 %33
OpBranch %45
%45 = OpLabel
OpControlBarrier %46 %47 %48
OpControlBarrier %46 %46 %49
OpSelectionMerge %50 None
OpSwitch %40 %51
OpSwitch %37 %51
%51 = OpLabel
OpStore %32 %40
OpStore %42 %37
OpBranch %50
%50 = OpLabel
%52 = OpLoad %5 %32
%52 = OpLoad %5 %42
OpSelectionMerge %53 None
OpSwitch %52 %58 1 %54 2 %55 3 %56 4 %56 5 %57 6 %58
%54 = OpLabel
OpStore %32 %16
OpStore %42 %16
OpBranch %53
%55 = OpLabel
OpStore %32 %40
OpStore %42 %37
OpBranch %53
%56 = OpLabel
OpStore %32 %41
OpStore %42 %38
OpBranch %53
%57 = OpLabel
OpStore %32 %42
OpStore %42 %39
OpBranch %53
%58 = OpLabel
OpStore %32 %43
OpStore %42 %40
OpBranch %53
%53 = OpLabel
OpSelectionMerge %59 None
OpSwitch %44 %61 0 %60
OpSwitch %41 %61 0 %60
%60 = OpLabel
OpBranch %59
%61 = OpLabel
OpBranch %59
%59 = OpLabel
%62 = OpLoad %5 %32
%62 = OpLoad %5 %42
OpSelectionMerge %63 None
OpSwitch %62 %68 1 %64 2 %65 3 %66 4 %67
%64 = OpLabel
OpStore %32 %16
OpStore %42 %16
OpBranch %63
%65 = OpLabel
OpStore %32 %40
OpStore %42 %37
OpReturn
%66 = OpLabel
OpStore %32 %41
OpStore %42 %38
OpReturn
%67 = OpLabel
OpReturn
%68 = OpLabel
OpStore %32 %42
OpStore %42 %39
OpReturn
%63 = OpLabel
OpReturn

View File

@ -1,13 +1,13 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 95
; Bound: 94
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %24 "vs_main" %15 %18 %20 %22
OpEntryPoint Fragment %57 "fs_main" %51 %54 %56
OpExecutionMode %57 OriginUpperLeft
OpEntryPoint Vertex %21 "vs_main" %12 %15 %17 %19
OpEntryPoint Fragment %49 "fs_main" %43 %46 %48
OpExecutionMode %49 OriginUpperLeft
%3 = OpString "debug-symbol-simple.wgsl"
OpSource Unknown 0 %3 "struct VertexInput {
@location(0) position: vec3<f32>,
@ -48,29 +48,29 @@ OpName %6 "VertexInput"
OpMemberName %8 0 "clip_position"
OpMemberName %8 1 "color"
OpName %8 "VertexOutput"
OpName %10 "out"
OpName %15 "position"
OpName %18 "color"
OpName %20 "clip_position"
OpName %22 "color"
OpName %24 "vs_main"
OpName %41 "color"
OpName %43 "i"
OpName %46 "ii"
OpName %51 "clip_position"
OpName %54 "color"
OpName %57 "fs_main"
OpName %12 "position"
OpName %15 "color"
OpName %17 "clip_position"
OpName %19 "color"
OpName %21 "vs_main"
OpName %24 "out"
OpName %43 "clip_position"
OpName %46 "color"
OpName %49 "fs_main"
OpName %55 "color"
OpName %57 "i"
OpName %59 "ii"
OpMemberDecorate %6 0 Offset 0
OpMemberDecorate %6 1 Offset 16
OpMemberDecorate %8 0 Offset 0
OpMemberDecorate %8 1 Offset 16
OpDecorate %15 Location 0
OpDecorate %18 Location 1
OpDecorate %20 BuiltIn Position
OpDecorate %22 Location 0
OpDecorate %51 BuiltIn FragCoord
OpDecorate %54 Location 0
OpDecorate %56 Location 0
OpDecorate %12 Location 0
OpDecorate %15 Location 1
OpDecorate %17 BuiltIn Position
OpDecorate %19 Location 0
OpDecorate %43 BuiltIn FragCoord
OpDecorate %46 Location 0
OpDecorate %48 Location 0
%2 = OpTypeVoid
%5 = OpTypeFloat 32
%4 = OpTypeVector %5 3
@ -78,140 +78,137 @@ OpDecorate %56 Location 0
%7 = OpTypeVector %5 4
%8 = OpTypeStruct %7 %4
%9 = OpTypeInt 32 1
%11 = OpTypePointer Function %8
%12 = OpConstantNull %8
%16 = OpTypePointer Input %4
%15 = OpVariable %16 Input
%18 = OpVariable %16 Input
%21 = OpTypePointer Output %7
%20 = OpVariable %21 Output
%23 = OpTypePointer Output %4
%22 = OpVariable %23 Output
%25 = OpTypeFunction %2
%26 = OpConstant %5 1.0
%13 = OpTypePointer Input %4
%12 = OpVariable %13 Input
%15 = OpVariable %13 Input
%18 = OpTypePointer Output %7
%17 = OpVariable %18 Output
%20 = OpTypePointer Output %4
%19 = OpVariable %20 Output
%22 = OpTypeFunction %2
%23 = OpConstant %5 1.0
%25 = OpTypePointer Function %8
%26 = OpConstantNull %8
%28 = OpTypePointer Function %4
%31 = OpTypeInt 32 0
%30 = OpConstant %31 1
%33 = OpTypePointer Function %7
%36 = OpConstant %31 0
%42 = OpConstantNull %4
%44 = OpTypePointer Function %9
%45 = OpConstantNull %9
%47 = OpTypePointer Function %5
%48 = OpConstantNull %5
%52 = OpTypePointer Input %7
%51 = OpVariable %52 Input
%54 = OpVariable %16 Input
%56 = OpVariable %21 Output
%58 = OpConstant %9 0
%59 = OpConstant %9 10
%60 = OpConstant %5 0.001
%61 = OpConstant %5 0.002
%62 = OpConstant %9 1
%70 = OpTypeBool
%78 = OpTypePointer Function %5
%24 = OpFunction %2 None %25
%13 = OpLabel
%10 = OpVariable %11 Function %12
%17 = OpLoad %4 %15
%19 = OpLoad %4 %18
%14 = OpCompositeConstruct %6 %17 %19
%44 = OpTypePointer Input %7
%43 = OpVariable %44 Input
%46 = OpVariable %13 Input
%48 = OpVariable %18 Output
%50 = OpConstant %9 0
%51 = OpConstant %9 10
%52 = OpConstant %5 0.001
%53 = OpConstant %5 0.002
%54 = OpConstant %9 1
%56 = OpConstantNull %4
%58 = OpTypePointer Function %9
%60 = OpTypePointer Function %5
%61 = OpConstantNull %5
%69 = OpTypeBool
%77 = OpTypePointer Function %5
%21 = OpFunction %2 None %22
%10 = OpLabel
%24 = OpVariable %25 Function %26
%14 = OpLoad %4 %12
%16 = OpLoad %4 %15
%11 = OpCompositeConstruct %6 %14 %16
OpBranch %27
%27 = OpLabel
OpLine %3 16 5
%29 = OpCompositeExtract %4 %14 1
%29 = OpCompositeExtract %4 %11 1
OpLine %3 16 5
%32 = OpAccessChain %28 %10 %30
%32 = OpAccessChain %28 %24 %30
OpStore %32 %29
OpLine %3 17 5
%34 = OpCompositeExtract %4 %14 0
%34 = OpCompositeExtract %4 %11 0
OpLine %3 17 25
%35 = OpCompositeConstruct %7 %34 %26
%35 = OpCompositeConstruct %7 %34 %23
OpLine %3 17 5
%37 = OpAccessChain %33 %10 %36
%37 = OpAccessChain %33 %24 %36
OpStore %37 %35
OpLine %3 1 1
%38 = OpLoad %8 %10
%38 = OpLoad %8 %24
%39 = OpCompositeExtract %7 %38 0
OpStore %20 %39
OpStore %17 %39
%40 = OpCompositeExtract %4 %38 1
OpStore %22 %40
OpStore %19 %40
OpReturn
OpFunctionEnd
%57 = OpFunction %2 None %25
%49 = OpLabel
%41 = OpVariable %28 Function %42
%43 = OpVariable %44 Function %45
%46 = OpVariable %47 Function %48
%53 = OpLoad %7 %51
%55 = OpLoad %4 %54
%50 = OpCompositeConstruct %8 %53 %55
OpBranch %63
%63 = OpLabel
%49 = OpFunction %2 None %22
%41 = OpLabel
%55 = OpVariable %28 Function %56
%57 = OpVariable %58 Function %50
%59 = OpVariable %60 Function %61
%45 = OpLoad %7 %43
%47 = OpLoad %4 %46
%42 = OpCompositeConstruct %8 %45 %47
OpBranch %62
%62 = OpLabel
OpLine %3 25 17
%64 = OpCompositeExtract %4 %50 1
%63 = OpCompositeExtract %4 %42 1
OpLine %3 25 5
OpStore %41 %64
OpLine %3 26 10
OpStore %43 %58
OpBranch %65
%65 = OpLabel
OpStore %55 %63
OpBranch %64
%64 = OpLabel
OpLine %3 26 5
OpLoopMerge %66 %68 None
OpBranch %67
%67 = OpLabel
OpLine %3 1 1
%69 = OpLoad %9 %43
OpLine %3 26 21
%71 = OpSLessThan %70 %69 %59
OpLine %3 26 20
OpSelectionMerge %72 None
OpBranchConditional %71 %72 %73
%73 = OpLabel
OpLoopMerge %65 %67 None
OpBranch %66
%72 = OpLabel
OpBranch %74
%74 = OpLabel
OpLine %3 27 18
%76 = OpLoad %9 %43
%77 = OpConvertSToF %5 %76
OpLine %3 27 9
OpStore %46 %77
OpLine %3 28 9
%79 = OpLoad %5 %46
OpLine %3 28 9
%80 = OpFMul %5 %79 %60
%81 = OpAccessChain %78 %41 %36
%82 = OpLoad %5 %81
%83 = OpFAdd %5 %82 %80
OpLine %3 28 9
%84 = OpAccessChain %78 %41 %36
OpStore %84 %83
OpLine %3 29 9
%85 = OpLoad %5 %46
OpLine %3 29 9
%86 = OpFMul %5 %85 %61
%87 = OpAccessChain %78 %41 %30
%88 = OpLoad %5 %87
%89 = OpFAdd %5 %88 %86
OpLine %3 29 9
%90 = OpAccessChain %78 %41 %30
OpStore %90 %89
OpBranch %75
%75 = OpLabel
OpBranch %68
%68 = OpLabel
OpLine %3 26 29
%91 = OpLoad %9 %43
%92 = OpIAdd %9 %91 %62
OpLine %3 26 29
OpStore %43 %92
OpBranch %65
%66 = OpLabel
OpLine %3 1 1
%93 = OpLoad %4 %41
%68 = OpLoad %9 %57
OpLine %3 26 21
%70 = OpSLessThan %69 %68 %51
OpLine %3 26 20
OpSelectionMerge %71 None
OpBranchConditional %70 %71 %72
%72 = OpLabel
OpBranch %65
%71 = OpLabel
OpBranch %73
%73 = OpLabel
OpLine %3 27 18
%75 = OpLoad %9 %57
%76 = OpConvertSToF %5 %75
OpLine %3 27 9
OpStore %59 %76
OpLine %3 28 9
%78 = OpLoad %5 %59
OpLine %3 28 9
%79 = OpFMul %5 %78 %52
%80 = OpAccessChain %77 %55 %36
%81 = OpLoad %5 %80
%82 = OpFAdd %5 %81 %79
OpLine %3 28 9
%83 = OpAccessChain %77 %55 %36
OpStore %83 %82
OpLine %3 29 9
%84 = OpLoad %5 %59
OpLine %3 29 9
%85 = OpFMul %5 %84 %53
%86 = OpAccessChain %77 %55 %30
%87 = OpLoad %5 %86
%88 = OpFAdd %5 %87 %85
OpLine %3 29 9
%89 = OpAccessChain %77 %55 %30
OpStore %89 %88
OpBranch %74
%74 = OpLabel
OpBranch %67
%67 = OpLabel
OpLine %3 26 29
%90 = OpLoad %9 %57
%91 = OpIAdd %9 %90 %54
OpLine %3 26 29
OpStore %57 %91
OpBranch %64
%65 = OpLabel
OpLine %3 1 1
%92 = OpLoad %4 %55
OpLine %3 32 12
%94 = OpCompositeConstruct %7 %93 %26
OpStore %56 %94
%93 = OpCompositeConstruct %7 %92 %23
OpStore %48 %93
OpReturn
OpFunctionEnd

File diff suppressed because it is too large Load Diff

View File

@ -1,55 +1,52 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 35
; Bound: 34
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %17 "main" %11 %14 %16
OpExecutionMode %17 OriginUpperLeft
OpEntryPoint Fragment %13 "main" %7 %10 %12
OpExecutionMode %13 OriginUpperLeft
OpMemberDecorate %5 0 Offset 0
OpMemberDecorate %5 1 Offset 16
OpDecorate %11 BuiltIn FragCoord
OpDecorate %14 Location 0
OpDecorate %16 Location 0
OpDecorate %16 Index 1
OpDecorate %7 BuiltIn FragCoord
OpDecorate %10 Location 0
OpDecorate %12 Location 0
OpDecorate %12 Index 1
%2 = OpTypeVoid
%4 = OpTypeFloat 32
%3 = OpTypeVector %4 4
%5 = OpTypeStruct %3 %3
%7 = OpTypePointer Function %3
%8 = OpConstantNull %3
%12 = OpTypePointer Input %3
%11 = OpVariable %12 Input
%15 = OpTypePointer Output %3
%14 = OpVariable %15 Output
%16 = OpVariable %15 Output
%18 = OpTypeFunction %2
%19 = OpConstant %4 0.4
%20 = OpConstant %4 0.3
%21 = OpConstant %4 0.2
%22 = OpConstant %4 0.1
%23 = OpConstant %4 0.9
%24 = OpConstant %4 0.8
%25 = OpConstant %4 0.7
%26 = OpConstant %4 0.6
%17 = OpFunction %2 None %18
%10 = OpLabel
%6 = OpVariable %7 Function %8
%9 = OpVariable %7 Function %8
%13 = OpLoad %3 %11
OpBranch %27
%27 = OpLabel
%28 = OpCompositeConstruct %3 %19 %20 %21 %22
OpStore %6 %28
%29 = OpCompositeConstruct %3 %23 %24 %25 %26
OpStore %9 %29
%30 = OpLoad %3 %6
%31 = OpLoad %3 %9
%32 = OpCompositeConstruct %5 %30 %31
%33 = OpCompositeExtract %3 %32 0
OpStore %14 %33
%34 = OpCompositeExtract %3 %32 1
OpStore %16 %34
%8 = OpTypePointer Input %3
%7 = OpVariable %8 Input
%11 = OpTypePointer Output %3
%10 = OpVariable %11 Output
%12 = OpVariable %11 Output
%14 = OpTypeFunction %2
%15 = OpConstant %4 0.4
%16 = OpConstant %4 0.3
%17 = OpConstant %4 0.2
%18 = OpConstant %4 0.1
%19 = OpConstantComposite %3 %15 %16 %17 %18
%20 = OpConstant %4 0.9
%21 = OpConstant %4 0.8
%22 = OpConstant %4 0.7
%23 = OpConstant %4 0.6
%24 = OpConstantComposite %3 %20 %21 %22 %23
%26 = OpTypePointer Function %3
%13 = OpFunction %2 None %14
%6 = OpLabel
%25 = OpVariable %26 Function %19
%27 = OpVariable %26 Function %24
%9 = OpLoad %3 %7
OpBranch %28
%28 = OpLabel
%29 = OpLoad %3 %25
%30 = OpLoad %3 %27
%31 = OpCompositeConstruct %5 %29 %30
%32 = OpCompositeExtract %3 %31 0
OpStore %10 %32
%33 = OpCompositeExtract %3 %31 1
OpStore %12 %33
OpReturn
OpFunctionEnd

View File

@ -40,37 +40,37 @@ OpDecorate %21 Location 0
%25 = OpTypePointer PushConstant %6
%26 = OpConstant %3 0
%28 = OpConstant %8 1.0
%31 = OpTypePointer PushConstant %3
%34 = OpTypeBool
%40 = OpTypeVector %8 3
%29 = OpTypeVector %8 3
%30 = OpConstantComposite %29 %28 %28 %28
%33 = OpTypePointer PushConstant %3
%36 = OpTypeBool
%23 = OpFunction %2 None %24
%13 = OpLabel
%17 = OpLoad %7 %15
%20 = OpLoad %3 %18
%14 = OpCompositeConstruct %9 %17 %20
%27 = OpAccessChain %25 %10 %26
OpBranch %29
%29 = OpLabel
%30 = OpCompositeExtract %3 %14 1
%32 = OpAccessChain %31 %27 %26
%33 = OpLoad %3 %32
%35 = OpIEqual %34 %30 %33
OpSelectionMerge %36 None
OpBranchConditional %35 %37 %38
%37 = OpLabel
%39 = OpCompositeExtract %7 %14 0
OpStore %21 %39
OpBranch %31
%31 = OpLabel
%32 = OpCompositeExtract %3 %14 1
%34 = OpAccessChain %33 %27 %26
%35 = OpLoad %3 %34
%37 = OpIEqual %36 %32 %35
OpSelectionMerge %38 None
OpBranchConditional %37 %39 %40
%39 = OpLabel
%41 = OpCompositeExtract %7 %14 0
OpStore %21 %41
OpReturn
%38 = OpLabel
%41 = OpCompositeConstruct %40 %28 %28 %28
%40 = OpLabel
%42 = OpCompositeExtract %7 %14 0
%43 = OpVectorShuffle %40 %42 %42 0 1 2
%44 = OpFSub %40 %41 %43
%43 = OpVectorShuffle %29 %42 %42 0 1 2
%44 = OpFSub %29 %30 %43
%45 = OpCompositeExtract %7 %14 0
%46 = OpCompositeExtract %8 %45 3
%47 = OpCompositeConstruct %7 %44 %46
OpStore %21 %47
OpReturn
%36 = OpLabel
%38 = OpLabel
OpReturn
OpFunctionEnd

View File

@ -5,10 +5,10 @@
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %33 "main_vec4vec3" %21 %23 %25 %27 %29 %31
OpEntryPoint Fragment %85 "main_vec2scalar" %73 %75 %77 %79 %81 %83
OpExecutionMode %33 OriginUpperLeft
OpExecutionMode %85 OriginUpperLeft
OpEntryPoint Fragment %30 "main_vec4vec3" %18 %20 %22 %24 %26 %28
OpEntryPoint Fragment %82 "main_vec2scalar" %70 %72 %74 %76 %78 %80
OpExecutionMode %30 OriginUpperLeft
OpExecutionMode %82 OriginUpperLeft
OpMemberDecorate %12 0 Offset 0
OpMemberDecorate %12 1 Offset 16
OpMemberDecorate %12 2 Offset 32
@ -21,18 +21,18 @@ OpMemberDecorate %16 2 Offset 16
OpMemberDecorate %16 3 Offset 24
OpMemberDecorate %16 4 Offset 28
OpMemberDecorate %16 5 Offset 32
OpDecorate %21 Location 0
OpDecorate %23 Location 1
OpDecorate %25 Location 2
OpDecorate %27 Location 3
OpDecorate %29 Location 4
OpDecorate %31 Location 5
OpDecorate %73 Location 0
OpDecorate %75 Location 1
OpDecorate %77 Location 2
OpDecorate %79 Location 3
OpDecorate %81 Location 4
OpDecorate %83 Location 5
OpDecorate %18 Location 0
OpDecorate %20 Location 1
OpDecorate %22 Location 2
OpDecorate %24 Location 3
OpDecorate %26 Location 4
OpDecorate %28 Location 5
OpDecorate %70 Location 0
OpDecorate %72 Location 1
OpDecorate %74 Location 2
OpDecorate %76 Location 3
OpDecorate %78 Location 4
OpDecorate %80 Location 5
%2 = OpTypeVoid
%4 = OpTypeFloat 32
%3 = OpTypeVector %4 4
@ -48,125 +48,125 @@ OpDecorate %83 Location 5
%14 = OpTypeVector %6 2
%15 = OpTypeVector %8 2
%16 = OpTypeStruct %13 %14 %15 %4 %6 %8
%18 = OpTypePointer Function %12
%19 = OpConstantNull %12
%22 = OpTypePointer Output %3
%21 = OpVariable %22 Output
%24 = OpTypePointer Output %5
%23 = OpVariable %24 Output
%26 = OpTypePointer Output %7
%25 = OpVariable %26 Output
%28 = OpTypePointer Output %9
%27 = OpVariable %28 Output
%30 = OpTypePointer Output %10
%29 = OpVariable %30 Output
%32 = OpTypePointer Output %11
%31 = OpVariable %32 Output
%34 = OpTypeFunction %2
%35 = OpConstant %4 0.0
%36 = OpConstant %6 0
%37 = OpConstant %8 0
%39 = OpTypePointer Function %3
%42 = OpTypePointer Function %5
%44 = OpConstant %8 1
%46 = OpTypePointer Function %7
%48 = OpConstant %8 2
%50 = OpTypePointer Function %9
%52 = OpConstant %8 3
%54 = OpTypePointer Function %10
%56 = OpConstant %8 4
%58 = OpTypePointer Function %11
%19 = OpTypePointer Output %3
%18 = OpVariable %19 Output
%21 = OpTypePointer Output %5
%20 = OpVariable %21 Output
%23 = OpTypePointer Output %7
%22 = OpVariable %23 Output
%25 = OpTypePointer Output %9
%24 = OpVariable %25 Output
%27 = OpTypePointer Output %10
%26 = OpVariable %27 Output
%29 = OpTypePointer Output %11
%28 = OpVariable %29 Output
%31 = OpTypeFunction %2
%32 = OpConstant %4 0.0
%33 = OpConstantComposite %3 %32 %32 %32 %32
%34 = OpConstant %6 0
%35 = OpConstantComposite %5 %34 %34 %34 %34
%36 = OpConstant %8 0
%37 = OpConstantComposite %7 %36 %36 %36 %36
%38 = OpConstantComposite %9 %32 %32 %32
%39 = OpConstantComposite %10 %34 %34 %34
%40 = OpConstantComposite %11 %36 %36 %36
%42 = OpTypePointer Function %12
%43 = OpConstantNull %12
%45 = OpTypePointer Function %3
%47 = OpTypePointer Function %5
%48 = OpConstant %8 1
%50 = OpTypePointer Function %7
%51 = OpConstant %8 2
%53 = OpTypePointer Function %9
%54 = OpConstant %8 3
%56 = OpTypePointer Function %10
%57 = OpConstant %8 4
%59 = OpTypePointer Function %11
%60 = OpConstant %8 5
%70 = OpTypePointer Function %16
%71 = OpConstantNull %16
%74 = OpTypePointer Output %13
%73 = OpVariable %74 Output
%76 = OpTypePointer Output %14
%75 = OpVariable %76 Output
%78 = OpTypePointer Output %15
%77 = OpVariable %78 Output
%80 = OpTypePointer Output %4
%79 = OpVariable %80 Output
%82 = OpTypePointer Output %6
%81 = OpVariable %82 Output
%84 = OpTypePointer Output %8
%83 = OpVariable %84 Output
%87 = OpTypePointer Function %13
%90 = OpTypePointer Function %14
%93 = OpTypePointer Function %15
%71 = OpTypePointer Output %13
%70 = OpVariable %71 Output
%73 = OpTypePointer Output %14
%72 = OpVariable %73 Output
%75 = OpTypePointer Output %15
%74 = OpVariable %75 Output
%77 = OpTypePointer Output %4
%76 = OpVariable %77 Output
%79 = OpTypePointer Output %6
%78 = OpVariable %79 Output
%81 = OpTypePointer Output %8
%80 = OpVariable %81 Output
%83 = OpConstantComposite %13 %32 %32
%84 = OpConstantComposite %14 %34 %34
%85 = OpConstantComposite %15 %36 %36
%87 = OpTypePointer Function %16
%88 = OpConstantNull %16
%90 = OpTypePointer Function %13
%92 = OpTypePointer Function %14
%94 = OpTypePointer Function %15
%96 = OpTypePointer Function %4
%98 = OpTypePointer Function %6
%100 = OpTypePointer Function %8
%33 = OpFunction %2 None %34
%20 = OpLabel
%17 = OpVariable %18 Function %19
OpBranch %38
%38 = OpLabel
%40 = OpCompositeConstruct %3 %35 %35 %35 %35
%41 = OpAccessChain %39 %17 %37
OpStore %41 %40
%43 = OpCompositeConstruct %5 %36 %36 %36 %36
%45 = OpAccessChain %42 %17 %44
OpStore %45 %43
%47 = OpCompositeConstruct %7 %37 %37 %37 %37
%49 = OpAccessChain %46 %17 %48
OpStore %49 %47
%51 = OpCompositeConstruct %9 %35 %35 %35
%53 = OpAccessChain %50 %17 %52
OpStore %53 %51
%55 = OpCompositeConstruct %10 %36 %36 %36
%57 = OpAccessChain %54 %17 %56
OpStore %57 %55
%59 = OpCompositeConstruct %11 %37 %37 %37
%61 = OpAccessChain %58 %17 %60
OpStore %61 %59
%62 = OpLoad %12 %17
%30 = OpFunction %2 None %31
%17 = OpLabel
%41 = OpVariable %42 Function %43
OpBranch %44
%44 = OpLabel
%46 = OpAccessChain %45 %41 %36
OpStore %46 %33
%49 = OpAccessChain %47 %41 %48
OpStore %49 %35
%52 = OpAccessChain %50 %41 %51
OpStore %52 %37
%55 = OpAccessChain %53 %41 %54
OpStore %55 %38
%58 = OpAccessChain %56 %41 %57
OpStore %58 %39
%61 = OpAccessChain %59 %41 %60
OpStore %61 %40
%62 = OpLoad %12 %41
%63 = OpCompositeExtract %3 %62 0
OpStore %21 %63
OpStore %18 %63
%64 = OpCompositeExtract %5 %62 1
OpStore %23 %64
OpStore %20 %64
%65 = OpCompositeExtract %7 %62 2
OpStore %25 %65
OpStore %22 %65
%66 = OpCompositeExtract %9 %62 3
OpStore %27 %66
OpStore %24 %66
%67 = OpCompositeExtract %10 %62 4
OpStore %29 %67
OpStore %26 %67
%68 = OpCompositeExtract %11 %62 5
OpStore %31 %68
OpStore %28 %68
OpReturn
OpFunctionEnd
%85 = OpFunction %2 None %34
%72 = OpLabel
%69 = OpVariable %70 Function %71
OpBranch %86
%86 = OpLabel
%88 = OpCompositeConstruct %13 %35 %35
%89 = OpAccessChain %87 %69 %37
OpStore %89 %88
%91 = OpCompositeConstruct %14 %36 %36
%92 = OpAccessChain %90 %69 %44
OpStore %92 %91
%94 = OpCompositeConstruct %15 %37 %37
%95 = OpAccessChain %93 %69 %48
OpStore %95 %94
%97 = OpAccessChain %96 %69 %52
OpStore %97 %35
%99 = OpAccessChain %98 %69 %56
OpStore %99 %36
%101 = OpAccessChain %100 %69 %60
OpStore %101 %37
%102 = OpLoad %16 %69
%82 = OpFunction %2 None %31
%69 = OpLabel
%86 = OpVariable %87 Function %88
OpBranch %89
%89 = OpLabel
%91 = OpAccessChain %90 %86 %36
OpStore %91 %83
%93 = OpAccessChain %92 %86 %48
OpStore %93 %84
%95 = OpAccessChain %94 %86 %51
OpStore %95 %85
%97 = OpAccessChain %96 %86 %54
OpStore %97 %32
%99 = OpAccessChain %98 %86 %57
OpStore %99 %34
%101 = OpAccessChain %100 %86 %60
OpStore %101 %36
%102 = OpLoad %16 %86
%103 = OpCompositeExtract %13 %102 0
OpStore %73 %103
OpStore %70 %103
%104 = OpCompositeExtract %14 %102 1
OpStore %75 %104
OpStore %72 %104
%105 = OpCompositeExtract %15 %102 2
OpStore %77 %105
OpStore %74 %105
%106 = OpCompositeExtract %4 %102 3
OpStore %79 %106
OpStore %76 %106
%107 = OpCompositeExtract %6 %102 4
OpStore %81 %107
OpStore %78 %107
%108 = OpCompositeExtract %8 %102 5
OpStore %83 %108
OpStore %80 %108
OpReturn
OpFunctionEnd

View File

@ -1,94 +1,91 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 78
; Bound: 75
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %73 "main"
OpExecutionMode %73 LocalSize 1 1 1
OpEntryPoint GLCompute %70 "main"
OpExecutionMode %70 LocalSize 1 1 1
%2 = OpTypeVoid
%4 = OpTypeFloat 32
%3 = OpTypeVector %4 2
%5 = OpTypeInt 32 1
%8 = OpTypeFunction %3
%9 = OpConstant %4 2.0
%10 = OpConstant %4 0.5
%18 = OpTypeFunction %5
%19 = OpConstant %5 1
%20 = OpTypeInt 32 0
%21 = OpConstant %20 1
%22 = OpConstant %5 4
%23 = OpConstant %5 2
%25 = OpTypeVector %5 2
%29 = OpConstantNull %5
%37 = OpTypeVector %20 3
%41 = OpConstantNull %20
%53 = OpTypeVector %5 4
%74 = OpTypeFunction %2
%10 = OpConstantComposite %3 %9 %9
%11 = OpConstant %4 0.5
%12 = OpConstantComposite %3 %11 %11
%17 = OpTypeFunction %5
%18 = OpConstant %5 1
%19 = OpTypeVector %5 2
%20 = OpConstantComposite %19 %18 %18
%21 = OpTypeInt 32 0
%22 = OpConstant %21 1
%23 = OpTypeVector %21 3
%24 = OpConstantComposite %23 %22 %22 %22
%25 = OpConstant %5 4
%26 = OpTypeVector %5 4
%27 = OpConstantComposite %26 %25 %25 %25 %25
%28 = OpConstant %5 2
%29 = OpConstantComposite %26 %28 %28 %28 %28
%32 = OpConstantNull %5
%41 = OpConstantNull %21
%71 = OpTypeFunction %2
%7 = OpFunction %3 None %8
%6 = OpLabel
OpBranch %11
%11 = OpLabel
%12 = OpCompositeConstruct %3 %9 %9
%13 = OpCompositeConstruct %3 %10 %10
%14 = OpCompositeConstruct %3 %10 %10
%15 = OpExtInst %3 %1 Fma %12 %13 %14
OpReturnValue %15
OpBranch %13
%13 = OpLabel
%14 = OpExtInst %3 %1 Fma %10 %12 %12
OpReturnValue %14
OpFunctionEnd
%17 = OpFunction %5 None %18
%16 = OpLabel
OpBranch %24
%24 = OpLabel
%26 = OpCompositeConstruct %25 %19 %19
%27 = OpCompositeConstruct %25 %19 %19
%30 = OpCompositeExtract %5 %26 0
%31 = OpCompositeExtract %5 %27 0
%32 = OpIMul %5 %30 %31
%33 = OpIAdd %5 %29 %32
%34 = OpCompositeExtract %5 %26 1
%35 = OpCompositeExtract %5 %27 1
%36 = OpIMul %5 %34 %35
%28 = OpIAdd %5 %33 %36
%38 = OpCompositeConstruct %37 %21 %21 %21
%39 = OpCompositeConstruct %37 %21 %21 %21
%42 = OpCompositeExtract %20 %38 0
%43 = OpCompositeExtract %20 %39 0
%44 = OpIMul %20 %42 %43
%45 = OpIAdd %20 %41 %44
%46 = OpCompositeExtract %20 %38 1
%47 = OpCompositeExtract %20 %39 1
%48 = OpIMul %20 %46 %47
%49 = OpIAdd %20 %45 %48
%50 = OpCompositeExtract %20 %38 2
%51 = OpCompositeExtract %20 %39 2
%52 = OpIMul %20 %50 %51
%40 = OpIAdd %20 %49 %52
%54 = OpCompositeConstruct %53 %22 %22 %22 %22
%55 = OpCompositeConstruct %53 %23 %23 %23 %23
%57 = OpCompositeExtract %5 %54 0
%58 = OpCompositeExtract %5 %55 0
%59 = OpIMul %5 %57 %58
%60 = OpIAdd %5 %29 %59
%61 = OpCompositeExtract %5 %54 1
%62 = OpCompositeExtract %5 %55 1
%63 = OpIMul %5 %61 %62
%64 = OpIAdd %5 %60 %63
%65 = OpCompositeExtract %5 %54 2
%66 = OpCompositeExtract %5 %55 2
%67 = OpIMul %5 %65 %66
%68 = OpIAdd %5 %64 %67
%69 = OpCompositeExtract %5 %54 3
%70 = OpCompositeExtract %5 %55 3
%71 = OpIMul %5 %69 %70
%56 = OpIAdd %5 %68 %71
OpReturnValue %56
%16 = OpFunction %5 None %17
%15 = OpLabel
OpBranch %30
%30 = OpLabel
%33 = OpCompositeExtract %5 %20 0
%34 = OpCompositeExtract %5 %20 0
%35 = OpIMul %5 %33 %34
%36 = OpIAdd %5 %32 %35
%37 = OpCompositeExtract %5 %20 1
%38 = OpCompositeExtract %5 %20 1
%39 = OpIMul %5 %37 %38
%31 = OpIAdd %5 %36 %39
%42 = OpCompositeExtract %21 %24 0
%43 = OpCompositeExtract %21 %24 0
%44 = OpIMul %21 %42 %43
%45 = OpIAdd %21 %41 %44
%46 = OpCompositeExtract %21 %24 1
%47 = OpCompositeExtract %21 %24 1
%48 = OpIMul %21 %46 %47
%49 = OpIAdd %21 %45 %48
%50 = OpCompositeExtract %21 %24 2
%51 = OpCompositeExtract %21 %24 2
%52 = OpIMul %21 %50 %51
%40 = OpIAdd %21 %49 %52
%54 = OpCompositeExtract %5 %27 0
%55 = OpCompositeExtract %5 %29 0
%56 = OpIMul %5 %54 %55
%57 = OpIAdd %5 %32 %56
%58 = OpCompositeExtract %5 %27 1
%59 = OpCompositeExtract %5 %29 1
%60 = OpIMul %5 %58 %59
%61 = OpIAdd %5 %57 %60
%62 = OpCompositeExtract %5 %27 2
%63 = OpCompositeExtract %5 %29 2
%64 = OpIMul %5 %62 %63
%65 = OpIAdd %5 %61 %64
%66 = OpCompositeExtract %5 %27 3
%67 = OpCompositeExtract %5 %29 3
%68 = OpIMul %5 %66 %67
%53 = OpIAdd %5 %65 %68
OpReturnValue %53
OpFunctionEnd
%73 = OpFunction %2 None %74
%70 = OpFunction %2 None %71
%69 = OpLabel
OpBranch %72
%72 = OpLabel
OpBranch %75
%75 = OpLabel
%76 = OpFunctionCall %3 %7
%77 = OpFunctionCall %5 %17
%73 = OpFunctionCall %3 %7
%74 = OpFunctionCall %5 %16
OpReturn
OpFunctionEnd

View File

@ -1,13 +1,13 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 177
; Bound: 174
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %100 "main" %119
OpExecutionMode %100 LocalSize 1 1 1
OpEntryPoint GLCompute %93 "main" %116
OpExecutionMode %93 LocalSize 1 1 1
OpDecorate %5 ArrayStride 4
OpMemberDecorate %9 0 Offset 0
OpMemberDecorate %9 1 Offset 12
@ -48,7 +48,7 @@ OpDecorate %48 DescriptorSet 0
OpDecorate %48 Binding 7
OpDecorate %49 Block
OpMemberDecorate %49 0 Offset 0
OpDecorate %119 BuiltIn LocalInvocationId
OpDecorate %116 BuiltIn LocalInvocationId
%2 = OpTypeVoid
%3 = OpTypeBool
%4 = OpTypeFloat 32
@ -99,55 +99,53 @@ OpDecorate %119 BuiltIn LocalInvocationId
%50 = OpTypePointer Uniform %49
%48 = OpVariable %50 Uniform
%54 = OpTypeFunction %2 %8
%57 = OpTypePointer Function %23
%58 = OpConstantNull %23
%61 = OpTypeFunction %2
%62 = OpTypePointer StorageBuffer %9
%63 = OpConstant %7 0
%65 = OpConstant %4 1.0
%66 = OpConstant %23 1
%67 = OpConstant %4 2.0
%68 = OpConstant %4 3.0
%69 = OpConstantNull %24
%58 = OpTypeFunction %2
%59 = OpTypePointer StorageBuffer %9
%60 = OpConstant %7 0
%62 = OpConstant %4 1.0
%63 = OpConstantComposite %8 %62 %62 %62
%64 = OpConstant %23 1
%65 = OpConstant %4 2.0
%66 = OpConstant %4 3.0
%67 = OpConstantNull %24
%69 = OpTypePointer Function %23
%71 = OpTypePointer StorageBuffer %8
%74 = OpTypePointer StorageBuffer %4
%94 = OpTypePointer Function %4
%95 = OpConstantNull %4
%97 = OpTypePointer Function %3
%98 = OpConstantNull %3
%102 = OpTypePointer StorageBuffer %11
%104 = OpTypePointer Uniform %13
%106 = OpTypePointer Uniform %8
%108 = OpTypePointer Uniform %15
%110 = OpTypePointer Uniform %19
%112 = OpTypePointer Uniform %22
%114 = OpConstant %4 4.0
%116 = OpConstantNull %5
%117 = OpConstantNull %7
%118 = OpTypeVector %7 3
%120 = OpTypePointer Input %118
%119 = OpVariable %120 Input
%122 = OpConstantNull %118
%123 = OpTypeVector %3 3
%128 = OpConstant %7 264
%131 = OpTypePointer Workgroup %4
%132 = OpTypePointer Uniform %21
%133 = OpTypePointer Uniform %20
%136 = OpTypePointer Uniform %17
%137 = OpTypePointer Uniform %16
%138 = OpTypePointer Uniform %12
%143 = OpConstant %7 7
%149 = OpConstant %7 6
%151 = OpTypePointer StorageBuffer %10
%152 = OpConstant %7 1
%155 = OpConstant %7 5
%157 = OpTypePointer Uniform %12
%158 = OpTypePointer Uniform %4
%159 = OpConstant %7 3
%162 = OpConstant %7 4
%164 = OpTypePointer StorageBuffer %4
%175 = OpConstant %23 2
%176 = OpConstant %7 256
%73 = OpTypePointer StorageBuffer %4
%95 = OpTypePointer StorageBuffer %11
%97 = OpTypePointer Uniform %13
%99 = OpTypePointer Uniform %8
%101 = OpTypePointer Uniform %15
%103 = OpTypePointer Uniform %19
%105 = OpTypePointer Uniform %22
%107 = OpConstant %4 4.0
%109 = OpTypePointer Function %4
%111 = OpTypePointer Function %3
%113 = OpConstantNull %5
%114 = OpConstantNull %7
%115 = OpTypeVector %7 3
%117 = OpTypePointer Input %115
%116 = OpVariable %117 Input
%119 = OpConstantNull %115
%120 = OpTypeVector %3 3
%125 = OpConstant %7 264
%128 = OpTypePointer Workgroup %4
%129 = OpTypePointer Uniform %21
%130 = OpTypePointer Uniform %20
%133 = OpTypePointer Uniform %17
%134 = OpTypePointer Uniform %16
%135 = OpTypePointer Uniform %12
%140 = OpConstant %7 7
%146 = OpConstant %7 6
%148 = OpTypePointer StorageBuffer %10
%149 = OpConstant %7 1
%152 = OpConstant %7 5
%154 = OpTypePointer Uniform %12
%155 = OpTypePointer Uniform %4
%156 = OpConstant %7 3
%159 = OpConstant %7 4
%161 = OpTypePointer StorageBuffer %4
%172 = OpConstant %23 2
%173 = OpConstant %7 256
%53 = OpFunction %2 None %54
%52 = OpFunctionParameter %8
%51 = OpLabel
@ -155,104 +153,100 @@ OpBranch %55
%55 = OpLabel
OpReturn
OpFunctionEnd
%60 = OpFunction %2 None %61
%59 = OpLabel
%56 = OpVariable %57 Function %58
%64 = OpAccessChain %62 %30 %63
%57 = OpFunction %2 None %58
%56 = OpLabel
%68 = OpVariable %69 Function %64
%61 = OpAccessChain %59 %30 %60
OpBranch %70
%70 = OpLabel
%72 = OpCompositeConstruct %8 %65 %65 %65
%73 = OpAccessChain %71 %64 %63
OpStore %73 %72
OpStore %56 %66
%75 = OpAccessChain %74 %64 %63 %63
%72 = OpAccessChain %71 %61 %60
OpStore %72 %63
%74 = OpAccessChain %73 %61 %60 %60
OpStore %74 %62
%75 = OpAccessChain %73 %61 %60 %60
OpStore %75 %65
%76 = OpAccessChain %74 %64 %63 %63
OpStore %76 %67
%77 = OpLoad %23 %56
%78 = OpAccessChain %74 %64 %63 %77
OpStore %78 %68
%79 = OpLoad %9 %64
%80 = OpCompositeExtract %8 %79 0
%81 = OpCompositeExtract %8 %79 0
%82 = OpVectorShuffle %10 %81 %81 2 0
%83 = OpCompositeExtract %8 %79 0
%84 = OpFunctionCall %2 %53 %83
%85 = OpCompositeExtract %8 %79 0
%86 = OpVectorTimesMatrix %8 %85 %69
%87 = OpCompositeExtract %8 %79 0
%88 = OpMatrixTimesVector %8 %69 %87
%89 = OpCompositeExtract %8 %79 0
%90 = OpVectorTimesScalar %8 %89 %67
%91 = OpCompositeExtract %8 %79 0
%92 = OpVectorTimesScalar %8 %91 %67
%76 = OpLoad %23 %68
%77 = OpAccessChain %73 %61 %60 %76
OpStore %77 %66
%78 = OpLoad %9 %61
%79 = OpCompositeExtract %8 %78 0
%80 = OpCompositeExtract %8 %78 0
%81 = OpVectorShuffle %10 %80 %80 2 0
%82 = OpCompositeExtract %8 %78 0
%83 = OpFunctionCall %2 %53 %82
%84 = OpCompositeExtract %8 %78 0
%85 = OpVectorTimesMatrix %8 %84 %67
%86 = OpCompositeExtract %8 %78 0
%87 = OpMatrixTimesVector %8 %67 %86
%88 = OpCompositeExtract %8 %78 0
%89 = OpVectorTimesScalar %8 %88 %65
%90 = OpCompositeExtract %8 %78 0
%91 = OpVectorTimesScalar %8 %90 %65
OpReturn
OpFunctionEnd
%100 = OpFunction %2 None %61
%99 = OpLabel
%93 = OpVariable %94 Function %95
%96 = OpVariable %97 Function %98
%101 = OpAccessChain %62 %30 %63
%103 = OpAccessChain %102 %33 %63
%105 = OpAccessChain %104 %36 %63
%107 = OpAccessChain %106 %39 %63
%109 = OpAccessChain %108 %42 %63
%111 = OpAccessChain %110 %45 %63
%113 = OpAccessChain %112 %48 %63
OpBranch %115
%115 = OpLabel
%121 = OpLoad %118 %119
%124 = OpIEqual %123 %121 %122
%125 = OpAll %3 %124
OpSelectionMerge %126 None
OpBranchConditional %125 %127 %126
%127 = OpLabel
OpStore %26 %116
OpStore %28 %117
%93 = OpFunction %2 None %58
%92 = OpLabel
%108 = OpVariable %109 Function %62
%110 = OpVariable %111 Function %25
%94 = OpAccessChain %59 %30 %60
%96 = OpAccessChain %95 %33 %60
%98 = OpAccessChain %97 %36 %60
%100 = OpAccessChain %99 %39 %60
%102 = OpAccessChain %101 %42 %60
%104 = OpAccessChain %103 %45 %60
%106 = OpAccessChain %105 %48 %60
OpBranch %112
%112 = OpLabel
%118 = OpLoad %115 %116
%121 = OpIEqual %120 %118 %119
%122 = OpAll %3 %121
OpSelectionMerge %123 None
OpBranchConditional %122 %124 %123
%124 = OpLabel
OpStore %26 %113
OpStore %28 %114
OpBranch %123
%123 = OpLabel
OpControlBarrier %18 %18 %125
OpBranch %126
%126 = OpLabel
OpControlBarrier %18 %18 %128
OpBranch %129
%129 = OpLabel
%130 = OpFunctionCall %2 %60
%134 = OpAccessChain %133 %113 %63 %63
%135 = OpLoad %20 %134
%139 = OpAccessChain %138 %111 %63 %63 %63
%140 = OpLoad %12 %139
%141 = OpMatrixTimesVector %10 %135 %140
%142 = OpCompositeExtract %4 %141 0
%144 = OpAccessChain %131 %26 %143
OpStore %144 %142
%145 = OpLoad %15 %109
%146 = OpLoad %8 %107
%147 = OpMatrixTimesVector %10 %145 %146
%148 = OpCompositeExtract %4 %147 0
%150 = OpAccessChain %131 %26 %149
OpStore %150 %148
%153 = OpAccessChain %74 %103 %152 %152
%154 = OpLoad %4 %153
%156 = OpAccessChain %131 %26 %155
OpStore %156 %154
%160 = OpAccessChain %158 %105 %63 %159
%161 = OpLoad %4 %160
%163 = OpAccessChain %131 %26 %162
OpStore %163 %161
%165 = OpAccessChain %164 %101 %152
%127 = OpFunctionCall %2 %57
%131 = OpAccessChain %130 %106 %60 %60
%132 = OpLoad %20 %131
%136 = OpAccessChain %135 %104 %60 %60 %60
%137 = OpLoad %12 %136
%138 = OpMatrixTimesVector %10 %132 %137
%139 = OpCompositeExtract %4 %138 0
%141 = OpAccessChain %128 %26 %140
OpStore %141 %139
%142 = OpLoad %15 %102
%143 = OpLoad %8 %100
%144 = OpMatrixTimesVector %10 %142 %143
%145 = OpCompositeExtract %4 %144 0
%147 = OpAccessChain %128 %26 %146
OpStore %147 %145
%150 = OpAccessChain %73 %96 %149 %149
%151 = OpLoad %4 %150
%153 = OpAccessChain %128 %26 %152
OpStore %153 %151
%157 = OpAccessChain %155 %98 %60 %156
%158 = OpLoad %4 %157
%160 = OpAccessChain %128 %26 %159
OpStore %160 %158
%162 = OpAccessChain %161 %94 %149
%163 = OpLoad %4 %162
%164 = OpAccessChain %128 %26 %156
OpStore %164 %163
%165 = OpAccessChain %73 %94 %60 %60
%166 = OpLoad %4 %165
%167 = OpAccessChain %131 %26 %159
%167 = OpAccessChain %128 %26 %18
OpStore %167 %166
%168 = OpAccessChain %74 %101 %63 %63
%169 = OpLoad %4 %168
%170 = OpAccessChain %131 %26 %18
OpStore %170 %169
%171 = OpAccessChain %164 %101 %152
OpStore %171 %114
%172 = OpArrayLength %7 %33 0
%173 = OpConvertUToF %4 %172
%174 = OpAccessChain %131 %26 %152
OpStore %174 %173
OpAtomicStore %28 %175 %176 %18
OpStore %93 %65
OpStore %96 %25
%168 = OpAccessChain %161 %94 %149
OpStore %168 %107
%169 = OpArrayLength %7 %33 0
%170 = OpConvertUToF %4 %169
%171 = OpAccessChain %128 %26 %149
OpStore %171 %170
OpAtomicStore %28 %172 %173 %18
OpReturn
OpFunctionEnd

View File

@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 522
; Bound: 517
OpCapability Shader
OpCapability Image1D
OpCapability Sampled1D
@ -11,18 +11,18 @@ OpCapability ImageQuery
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %78 "main" %75
OpEntryPoint GLCompute %169 "depth_load" %167
OpEntryPoint Vertex %190 "queries" %188
OpEntryPoint Vertex %242 "levels_queries" %241
OpEntryPoint Fragment %274 "texture_sample" %273
OpEntryPoint Fragment %420 "texture_sample_comparison" %418
OpEntryPoint Fragment %475 "gather" %474
OpEntryPoint Fragment %510 "depth_no_comparison" %509
OpEntryPoint Vertex %189 "queries" %187
OpEntryPoint Vertex %241 "levels_queries" %240
OpEntryPoint Fragment %270 "texture_sample" %269
OpEntryPoint Fragment %416 "texture_sample_comparison" %414
OpEntryPoint Fragment %472 "gather" %471
OpEntryPoint Fragment %506 "depth_no_comparison" %505
OpExecutionMode %78 LocalSize 16 1 1
OpExecutionMode %169 LocalSize 16 1 1
OpExecutionMode %274 OriginUpperLeft
OpExecutionMode %420 OriginUpperLeft
OpExecutionMode %475 OriginUpperLeft
OpExecutionMode %510 OriginUpperLeft
OpExecutionMode %270 OriginUpperLeft
OpExecutionMode %416 OriginUpperLeft
OpExecutionMode %472 OriginUpperLeft
OpExecutionMode %506 OriginUpperLeft
OpName %31 "image_mipmapped_src"
OpName %33 "image_multisampled_src"
OpName %35 "image_depth_multisampled_src"
@ -49,14 +49,14 @@ OpName %75 "local_id"
OpName %78 "main"
OpName %167 "local_id"
OpName %169 "depth_load"
OpName %190 "queries"
OpName %242 "levels_queries"
OpName %269 "a"
OpName %274 "texture_sample"
OpName %414 "a"
OpName %420 "texture_sample_comparison"
OpName %475 "gather"
OpName %510 "depth_no_comparison"
OpName %189 "queries"
OpName %241 "levels_queries"
OpName %270 "texture_sample"
OpName %284 "a"
OpName %416 "texture_sample_comparison"
OpName %421 "a"
OpName %472 "gather"
OpName %506 "depth_no_comparison"
OpDecorate %31 DescriptorSet 0
OpDecorate %31 Binding 0
OpDecorate %33 DescriptorSet 0
@ -106,12 +106,12 @@ OpDecorate %72 DescriptorSet 1
OpDecorate %72 Binding 4
OpDecorate %75 BuiltIn LocalInvocationId
OpDecorate %167 BuiltIn LocalInvocationId
OpDecorate %188 BuiltIn Position
OpDecorate %241 BuiltIn Position
OpDecorate %273 Location 0
OpDecorate %418 Location 0
OpDecorate %474 Location 0
OpDecorate %509 Location 0
OpDecorate %187 BuiltIn Position
OpDecorate %240 BuiltIn Position
OpDecorate %269 Location 0
OpDecorate %414 Location 0
OpDecorate %471 Location 0
OpDecorate %505 Location 0
%2 = OpTypeVoid
%4 = OpTypeInt 32 0
%3 = OpTypeImage %4 2D 0 0 0 1 Unknown
@ -189,42 +189,45 @@ OpDecorate %509 Location 0
%79 = OpTypeFunction %2
%86 = OpConstant %14 10
%87 = OpConstant %14 20
%89 = OpTypeVector %4 2
%88 = OpConstantComposite %13 %86 %87
%90 = OpTypeVector %4 2
%98 = OpTypeVector %4 4
%109 = OpTypeVector %14 3
%167 = OpVariable %76 Input
%189 = OpTypePointer Output %23
%188 = OpVariable %189 Output
%199 = OpConstant %4 0
%241 = OpVariable %189 Output
%270 = OpTypePointer Function %23
%271 = OpConstantNull %23
%273 = OpVariable %189 Output
%280 = OpConstant %7 0.5
%188 = OpTypePointer Output %23
%187 = OpVariable %188 Output
%198 = OpConstant %4 0
%240 = OpVariable %188 Output
%269 = OpVariable %188 Output
%276 = OpConstant %7 0.5
%277 = OpTypeVector %7 2
%278 = OpConstantComposite %277 %276 %276
%279 = OpTypeVector %7 3
%280 = OpConstantComposite %279 %276 %276 %276
%281 = OpConstant %7 2.3
%282 = OpConstant %7 2.0
%283 = OpConstant %14 0
%285 = OpTypeVector %7 2
%287 = OpTypeVector %7 3
%289 = OpTypeSampledImage %15
%294 = OpTypeSampledImage %16
%315 = OpTypeSampledImage %18
%376 = OpTypeSampledImage %20
%415 = OpTypePointer Function %7
%416 = OpConstantNull %7
%419 = OpTypePointer Output %7
%418 = OpVariable %419 Output
%428 = OpTypeSampledImage %25
%433 = OpTypeSampledImage %26
%446 = OpTypeSampledImage %27
%453 = OpConstant %7 0.0
%474 = OpVariable %189 Output
%486 = OpConstant %4 1
%489 = OpConstant %4 3
%494 = OpTypeSampledImage %3
%497 = OpTypeVector %14 4
%498 = OpTypeSampledImage %17
%509 = OpVariable %189 Output
%285 = OpTypePointer Function %23
%286 = OpConstantNull %23
%288 = OpTypeSampledImage %15
%293 = OpTypeSampledImage %16
%314 = OpTypeSampledImage %18
%375 = OpTypeSampledImage %20
%415 = OpTypePointer Output %7
%414 = OpVariable %415 Output
%422 = OpTypePointer Function %7
%423 = OpConstantNull %7
%425 = OpTypeSampledImage %25
%430 = OpTypeSampledImage %26
%443 = OpTypeSampledImage %27
%450 = OpConstant %7 0.0
%471 = OpVariable %188 Output
%482 = OpConstant %4 1
%485 = OpConstant %4 3
%490 = OpTypeSampledImage %3
%493 = OpTypeVector %14 4
%494 = OpTypeSampledImage %17
%505 = OpVariable %188 Output
%78 = OpFunction %2 None %79
%74 = OpLabel
%77 = OpLoad %12 %75
@ -234,14 +237,13 @@ OpDecorate %509 Location 0
%83 = OpLoad %9 %39
%84 = OpLoad %11 %43
%85 = OpLoad %10 %45
OpBranch %88
%88 = OpLabel
%90 = OpImageQuerySize %89 %82
%91 = OpVectorShuffle %89 %77 %77 0 1
%92 = OpIMul %89 %90 %91
%93 = OpBitcast %13 %92
%94 = OpCompositeConstruct %13 %86 %87
%95 = OpSRem %13 %93 %94
OpBranch %89
%89 = OpLabel
%91 = OpImageQuerySize %90 %82
%92 = OpVectorShuffle %90 %77 %77 0 1
%93 = OpIMul %90 %91 %92
%94 = OpBitcast %13 %93
%95 = OpSRem %13 %94 %88
%96 = OpCompositeExtract %4 %77 2
%97 = OpBitcast %14 %96
%99 = OpImageFetch %98 %80 %95 Lod %97
@ -268,24 +270,24 @@ OpBranch %88
%121 = OpCompositeExtract %4 %77 2
%122 = OpBitcast %14 %121
%123 = OpImageFetch %98 %84 %120 Lod %122
%124 = OpBitcast %89 %95
%124 = OpBitcast %90 %95
%125 = OpCompositeExtract %4 %77 2
%126 = OpBitcast %14 %125
%127 = OpImageFetch %98 %80 %124 Lod %126
%128 = OpBitcast %89 %95
%128 = OpBitcast %90 %95
%129 = OpCompositeExtract %4 %77 2
%130 = OpBitcast %14 %129
%131 = OpImageFetch %98 %81 %128 Sample %130
%132 = OpBitcast %89 %95
%132 = OpBitcast %90 %95
%133 = OpImageRead %98 %82 %132
%134 = OpBitcast %89 %95
%134 = OpBitcast %90 %95
%135 = OpCompositeExtract %4 %77 2
%136 = OpCompositeExtract %4 %77 2
%137 = OpBitcast %14 %136
%138 = OpIAdd %14 %137 %29
%139 = OpCompositeConstruct %12 %134 %135
%140 = OpImageFetch %98 %83 %139 Lod %138
%141 = OpBitcast %89 %95
%141 = OpBitcast %90 %95
%142 = OpCompositeExtract %4 %77 2
%143 = OpBitcast %14 %142
%144 = OpCompositeExtract %4 %77 2
@ -321,376 +323,369 @@ OpFunctionEnd
%172 = OpLoad %10 %45
OpBranch %173
%173 = OpLabel
%174 = OpImageQuerySize %89 %171
%175 = OpVectorShuffle %89 %168 %168 0 1
%176 = OpIMul %89 %174 %175
%174 = OpImageQuerySize %90 %171
%175 = OpVectorShuffle %90 %168 %168 0 1
%176 = OpIMul %90 %174 %175
%177 = OpBitcast %13 %176
%178 = OpCompositeConstruct %13 %86 %87
%179 = OpSRem %13 %177 %178
%180 = OpCompositeExtract %4 %168 2
%181 = OpBitcast %14 %180
%182 = OpImageFetch %23 %170 %179 Sample %181
%183 = OpCompositeExtract %7 %182 0
%184 = OpCompositeExtract %14 %179 0
%185 = OpConvertFToU %4 %183
%186 = OpCompositeConstruct %98 %185 %185 %185 %185
OpImageWrite %172 %184 %186
%178 = OpSRem %13 %177 %88
%179 = OpCompositeExtract %4 %168 2
%180 = OpBitcast %14 %179
%181 = OpImageFetch %23 %170 %178 Sample %180
%182 = OpCompositeExtract %7 %181 0
%183 = OpCompositeExtract %14 %178 0
%184 = OpConvertFToU %4 %182
%185 = OpCompositeConstruct %98 %184 %184 %184 %184
OpImageWrite %172 %183 %185
OpReturn
OpFunctionEnd
%190 = OpFunction %2 None %79
%187 = OpLabel
%191 = OpLoad %15 %47
%192 = OpLoad %16 %49
%193 = OpLoad %18 %54
%194 = OpLoad %19 %56
%195 = OpLoad %20 %58
%196 = OpLoad %21 %60
%197 = OpLoad %22 %62
OpBranch %198
%198 = OpLabel
%200 = OpImageQuerySizeLod %4 %191 %199
%201 = OpBitcast %14 %200
%202 = OpImageQuerySizeLod %4 %191 %201
%203 = OpImageQuerySizeLod %89 %192 %199
%204 = OpImageQuerySizeLod %89 %192 %29
%205 = OpImageQuerySizeLod %12 %193 %199
%206 = OpVectorShuffle %89 %205 %205 0 1
%207 = OpImageQuerySizeLod %12 %193 %29
%208 = OpVectorShuffle %89 %207 %207 0 1
%209 = OpImageQuerySizeLod %89 %194 %199
%210 = OpImageQuerySizeLod %89 %194 %29
%211 = OpImageQuerySizeLod %12 %195 %199
%212 = OpVectorShuffle %89 %211 %211 0 0
%213 = OpImageQuerySizeLod %12 %195 %29
%214 = OpVectorShuffle %89 %213 %213 0 0
%215 = OpImageQuerySizeLod %12 %196 %199
%216 = OpImageQuerySizeLod %12 %196 %29
%217 = OpImageQuerySize %89 %197
%218 = OpCompositeExtract %4 %203 1
%219 = OpIAdd %4 %200 %218
%220 = OpCompositeExtract %4 %204 1
%221 = OpIAdd %4 %219 %220
%222 = OpCompositeExtract %4 %206 1
%223 = OpIAdd %4 %221 %222
%224 = OpCompositeExtract %4 %208 1
%225 = OpIAdd %4 %223 %224
%226 = OpCompositeExtract %4 %209 1
%227 = OpIAdd %4 %225 %226
%228 = OpCompositeExtract %4 %210 1
%229 = OpIAdd %4 %227 %228
%230 = OpCompositeExtract %4 %212 1
%231 = OpIAdd %4 %229 %230
%232 = OpCompositeExtract %4 %214 1
%233 = OpIAdd %4 %231 %232
%234 = OpCompositeExtract %4 %215 2
%235 = OpIAdd %4 %233 %234
%236 = OpCompositeExtract %4 %216 2
%237 = OpIAdd %4 %235 %236
%238 = OpConvertUToF %7 %237
%239 = OpCompositeConstruct %23 %238 %238 %238 %238
OpStore %188 %239
%189 = OpFunction %2 None %79
%186 = OpLabel
%190 = OpLoad %15 %47
%191 = OpLoad %16 %49
%192 = OpLoad %18 %54
%193 = OpLoad %19 %56
%194 = OpLoad %20 %58
%195 = OpLoad %21 %60
%196 = OpLoad %22 %62
OpBranch %197
%197 = OpLabel
%199 = OpImageQuerySizeLod %4 %190 %198
%200 = OpBitcast %14 %199
%201 = OpImageQuerySizeLod %4 %190 %200
%202 = OpImageQuerySizeLod %90 %191 %198
%203 = OpImageQuerySizeLod %90 %191 %29
%204 = OpImageQuerySizeLod %12 %192 %198
%205 = OpVectorShuffle %90 %204 %204 0 1
%206 = OpImageQuerySizeLod %12 %192 %29
%207 = OpVectorShuffle %90 %206 %206 0 1
%208 = OpImageQuerySizeLod %90 %193 %198
%209 = OpImageQuerySizeLod %90 %193 %29
%210 = OpImageQuerySizeLod %12 %194 %198
%211 = OpVectorShuffle %90 %210 %210 0 0
%212 = OpImageQuerySizeLod %12 %194 %29
%213 = OpVectorShuffle %90 %212 %212 0 0
%214 = OpImageQuerySizeLod %12 %195 %198
%215 = OpImageQuerySizeLod %12 %195 %29
%216 = OpImageQuerySize %90 %196
%217 = OpCompositeExtract %4 %202 1
%218 = OpIAdd %4 %199 %217
%219 = OpCompositeExtract %4 %203 1
%220 = OpIAdd %4 %218 %219
%221 = OpCompositeExtract %4 %205 1
%222 = OpIAdd %4 %220 %221
%223 = OpCompositeExtract %4 %207 1
%224 = OpIAdd %4 %222 %223
%225 = OpCompositeExtract %4 %208 1
%226 = OpIAdd %4 %224 %225
%227 = OpCompositeExtract %4 %209 1
%228 = OpIAdd %4 %226 %227
%229 = OpCompositeExtract %4 %211 1
%230 = OpIAdd %4 %228 %229
%231 = OpCompositeExtract %4 %213 1
%232 = OpIAdd %4 %230 %231
%233 = OpCompositeExtract %4 %214 2
%234 = OpIAdd %4 %232 %233
%235 = OpCompositeExtract %4 %215 2
%236 = OpIAdd %4 %234 %235
%237 = OpConvertUToF %7 %236
%238 = OpCompositeConstruct %23 %237 %237 %237 %237
OpStore %187 %238
OpReturn
OpFunctionEnd
%242 = OpFunction %2 None %79
%240 = OpLabel
%243 = OpLoad %16 %49
%244 = OpLoad %18 %54
%245 = OpLoad %19 %56
%246 = OpLoad %20 %58
%247 = OpLoad %21 %60
%248 = OpLoad %22 %62
OpBranch %249
%249 = OpLabel
%241 = OpFunction %2 None %79
%239 = OpLabel
%242 = OpLoad %16 %49
%243 = OpLoad %18 %54
%244 = OpLoad %19 %56
%245 = OpLoad %20 %58
%246 = OpLoad %21 %60
%247 = OpLoad %22 %62
OpBranch %248
%248 = OpLabel
%249 = OpImageQueryLevels %4 %242
%250 = OpImageQueryLevels %4 %243
%251 = OpImageQueryLevels %4 %244
%252 = OpImageQuerySizeLod %12 %244 %199
%253 = OpCompositeExtract %4 %252 2
%251 = OpImageQuerySizeLod %12 %243 %198
%252 = OpCompositeExtract %4 %251 2
%253 = OpImageQueryLevels %4 %244
%254 = OpImageQueryLevels %4 %245
%255 = OpImageQueryLevels %4 %246
%256 = OpImageQuerySizeLod %12 %246 %199
%257 = OpCompositeExtract %4 %256 2
%258 = OpImageQueryLevels %4 %247
%259 = OpImageQuerySamples %4 %248
%260 = OpIAdd %4 %253 %257
%261 = OpIAdd %4 %260 %259
%255 = OpImageQuerySizeLod %12 %245 %198
%256 = OpCompositeExtract %4 %255 2
%257 = OpImageQueryLevels %4 %246
%258 = OpImageQuerySamples %4 %247
%259 = OpIAdd %4 %252 %256
%260 = OpIAdd %4 %259 %258
%261 = OpIAdd %4 %260 %249
%262 = OpIAdd %4 %261 %250
%263 = OpIAdd %4 %262 %251
%264 = OpIAdd %4 %263 %258
%263 = OpIAdd %4 %262 %257
%264 = OpIAdd %4 %263 %253
%265 = OpIAdd %4 %264 %254
%266 = OpIAdd %4 %265 %255
%267 = OpConvertUToF %7 %266
%268 = OpCompositeConstruct %23 %267 %267 %267 %267
OpStore %241 %268
%266 = OpConvertUToF %7 %265
%267 = OpCompositeConstruct %23 %266 %266 %266 %266
OpStore %240 %267
OpReturn
OpFunctionEnd
%274 = OpFunction %2 None %79
%272 = OpLabel
%269 = OpVariable %270 Function %271
%275 = OpLoad %15 %47
%276 = OpLoad %16 %49
%277 = OpLoad %18 %54
%278 = OpLoad %20 %58
%279 = OpLoad %24 %64
OpBranch %284
%284 = OpLabel
%286 = OpCompositeConstruct %285 %280 %280
%288 = OpCompositeConstruct %287 %280 %280 %280
%290 = OpSampledImage %289 %275 %279
%291 = OpImageSampleImplicitLod %23 %290 %280
%292 = OpLoad %23 %269
%293 = OpFAdd %23 %292 %291
OpStore %269 %293
%295 = OpSampledImage %294 %276 %279
%296 = OpImageSampleImplicitLod %23 %295 %286
%297 = OpLoad %23 %269
%298 = OpFAdd %23 %297 %296
OpStore %269 %298
%299 = OpSampledImage %294 %276 %279
%300 = OpImageSampleImplicitLod %23 %299 %286 ConstOffset %30
%301 = OpLoad %23 %269
%302 = OpFAdd %23 %301 %300
OpStore %269 %302
%303 = OpSampledImage %294 %276 %279
%304 = OpImageSampleExplicitLod %23 %303 %286 Lod %281
%305 = OpLoad %23 %269
%306 = OpFAdd %23 %305 %304
OpStore %269 %306
%307 = OpSampledImage %294 %276 %279
%308 = OpImageSampleExplicitLod %23 %307 %286 Lod|ConstOffset %281 %30
%309 = OpLoad %23 %269
%310 = OpFAdd %23 %309 %308
OpStore %269 %310
%311 = OpSampledImage %294 %276 %279
%312 = OpImageSampleImplicitLod %23 %311 %286 Bias|ConstOffset %282 %30
%313 = OpLoad %23 %269
%314 = OpFAdd %23 %313 %312
OpStore %269 %314
%316 = OpConvertUToF %7 %199
%317 = OpCompositeConstruct %287 %286 %316
%318 = OpSampledImage %315 %277 %279
%319 = OpImageSampleImplicitLod %23 %318 %317
%320 = OpLoad %23 %269
%321 = OpFAdd %23 %320 %319
OpStore %269 %321
%322 = OpConvertUToF %7 %199
%323 = OpCompositeConstruct %287 %286 %322
%324 = OpSampledImage %315 %277 %279
%325 = OpImageSampleImplicitLod %23 %324 %323 ConstOffset %30
%326 = OpLoad %23 %269
%327 = OpFAdd %23 %326 %325
OpStore %269 %327
%328 = OpConvertUToF %7 %199
%329 = OpCompositeConstruct %287 %286 %328
%330 = OpSampledImage %315 %277 %279
%331 = OpImageSampleExplicitLod %23 %330 %329 Lod %281
%332 = OpLoad %23 %269
%333 = OpFAdd %23 %332 %331
OpStore %269 %333
%334 = OpConvertUToF %7 %199
%335 = OpCompositeConstruct %287 %286 %334
%336 = OpSampledImage %315 %277 %279
%337 = OpImageSampleExplicitLod %23 %336 %335 Lod|ConstOffset %281 %30
%338 = OpLoad %23 %269
%339 = OpFAdd %23 %338 %337
OpStore %269 %339
%340 = OpConvertUToF %7 %199
%341 = OpCompositeConstruct %287 %286 %340
%342 = OpSampledImage %315 %277 %279
%343 = OpImageSampleImplicitLod %23 %342 %341 Bias|ConstOffset %282 %30
%344 = OpLoad %23 %269
%345 = OpFAdd %23 %344 %343
OpStore %269 %345
%346 = OpConvertSToF %7 %283
%347 = OpCompositeConstruct %287 %286 %346
%348 = OpSampledImage %315 %277 %279
%349 = OpImageSampleImplicitLod %23 %348 %347
%350 = OpLoad %23 %269
%351 = OpFAdd %23 %350 %349
OpStore %269 %351
%352 = OpConvertSToF %7 %283
%353 = OpCompositeConstruct %287 %286 %352
%354 = OpSampledImage %315 %277 %279
%355 = OpImageSampleImplicitLod %23 %354 %353 ConstOffset %30
%356 = OpLoad %23 %269
%357 = OpFAdd %23 %356 %355
OpStore %269 %357
%358 = OpConvertSToF %7 %283
%359 = OpCompositeConstruct %287 %286 %358
%360 = OpSampledImage %315 %277 %279
%361 = OpImageSampleExplicitLod %23 %360 %359 Lod %281
%362 = OpLoad %23 %269
%363 = OpFAdd %23 %362 %361
OpStore %269 %363
%364 = OpConvertSToF %7 %283
%365 = OpCompositeConstruct %287 %286 %364
%366 = OpSampledImage %315 %277 %279
%367 = OpImageSampleExplicitLod %23 %366 %365 Lod|ConstOffset %281 %30
%368 = OpLoad %23 %269
%369 = OpFAdd %23 %368 %367
OpStore %269 %369
%370 = OpConvertSToF %7 %283
%371 = OpCompositeConstruct %287 %286 %370
%372 = OpSampledImage %315 %277 %279
%373 = OpImageSampleImplicitLod %23 %372 %371 Bias|ConstOffset %282 %30
%374 = OpLoad %23 %269
%375 = OpFAdd %23 %374 %373
OpStore %269 %375
%377 = OpConvertUToF %7 %199
%378 = OpCompositeConstruct %23 %288 %377
%379 = OpSampledImage %376 %278 %279
%380 = OpImageSampleImplicitLod %23 %379 %378
%381 = OpLoad %23 %269
%382 = OpFAdd %23 %381 %380
OpStore %269 %382
%383 = OpConvertUToF %7 %199
%384 = OpCompositeConstruct %23 %288 %383
%385 = OpSampledImage %376 %278 %279
%386 = OpImageSampleExplicitLod %23 %385 %384 Lod %281
%387 = OpLoad %23 %269
%388 = OpFAdd %23 %387 %386
OpStore %269 %388
%389 = OpConvertUToF %7 %199
%390 = OpCompositeConstruct %23 %288 %389
%391 = OpSampledImage %376 %278 %279
%392 = OpImageSampleImplicitLod %23 %391 %390 Bias %282
%393 = OpLoad %23 %269
%394 = OpFAdd %23 %393 %392
OpStore %269 %394
%395 = OpConvertSToF %7 %283
%396 = OpCompositeConstruct %23 %288 %395
%397 = OpSampledImage %376 %278 %279
%398 = OpImageSampleImplicitLod %23 %397 %396
%399 = OpLoad %23 %269
%400 = OpFAdd %23 %399 %398
OpStore %269 %400
%401 = OpConvertSToF %7 %283
%402 = OpCompositeConstruct %23 %288 %401
%403 = OpSampledImage %376 %278 %279
%404 = OpImageSampleExplicitLod %23 %403 %402 Lod %281
%405 = OpLoad %23 %269
%406 = OpFAdd %23 %405 %404
OpStore %269 %406
%407 = OpConvertSToF %7 %283
%408 = OpCompositeConstruct %23 %288 %407
%409 = OpSampledImage %376 %278 %279
%410 = OpImageSampleImplicitLod %23 %409 %408 Bias %282
%411 = OpLoad %23 %269
%412 = OpFAdd %23 %411 %410
%270 = OpFunction %2 None %79
%268 = OpLabel
%284 = OpVariable %285 Function %286
%271 = OpLoad %15 %47
%272 = OpLoad %16 %49
%273 = OpLoad %18 %54
%274 = OpLoad %20 %58
%275 = OpLoad %24 %64
OpBranch %287
%287 = OpLabel
%289 = OpSampledImage %288 %271 %275
%290 = OpImageSampleImplicitLod %23 %289 %276
%291 = OpLoad %23 %284
%292 = OpFAdd %23 %291 %290
OpStore %284 %292
%294 = OpSampledImage %293 %272 %275
%295 = OpImageSampleImplicitLod %23 %294 %278
%296 = OpLoad %23 %284
%297 = OpFAdd %23 %296 %295
OpStore %284 %297
%298 = OpSampledImage %293 %272 %275
%299 = OpImageSampleImplicitLod %23 %298 %278 ConstOffset %30
%300 = OpLoad %23 %284
%301 = OpFAdd %23 %300 %299
OpStore %284 %301
%302 = OpSampledImage %293 %272 %275
%303 = OpImageSampleExplicitLod %23 %302 %278 Lod %281
%304 = OpLoad %23 %284
%305 = OpFAdd %23 %304 %303
OpStore %284 %305
%306 = OpSampledImage %293 %272 %275
%307 = OpImageSampleExplicitLod %23 %306 %278 Lod|ConstOffset %281 %30
%308 = OpLoad %23 %284
%309 = OpFAdd %23 %308 %307
OpStore %284 %309
%310 = OpSampledImage %293 %272 %275
%311 = OpImageSampleImplicitLod %23 %310 %278 Bias|ConstOffset %282 %30
%312 = OpLoad %23 %284
%313 = OpFAdd %23 %312 %311
OpStore %284 %313
%315 = OpConvertUToF %7 %198
%316 = OpCompositeConstruct %279 %278 %315
%317 = OpSampledImage %314 %273 %275
%318 = OpImageSampleImplicitLod %23 %317 %316
%319 = OpLoad %23 %284
%320 = OpFAdd %23 %319 %318
OpStore %284 %320
%321 = OpConvertUToF %7 %198
%322 = OpCompositeConstruct %279 %278 %321
%323 = OpSampledImage %314 %273 %275
%324 = OpImageSampleImplicitLod %23 %323 %322 ConstOffset %30
%325 = OpLoad %23 %284
%326 = OpFAdd %23 %325 %324
OpStore %284 %326
%327 = OpConvertUToF %7 %198
%328 = OpCompositeConstruct %279 %278 %327
%329 = OpSampledImage %314 %273 %275
%330 = OpImageSampleExplicitLod %23 %329 %328 Lod %281
%331 = OpLoad %23 %284
%332 = OpFAdd %23 %331 %330
OpStore %284 %332
%333 = OpConvertUToF %7 %198
%334 = OpCompositeConstruct %279 %278 %333
%335 = OpSampledImage %314 %273 %275
%336 = OpImageSampleExplicitLod %23 %335 %334 Lod|ConstOffset %281 %30
%337 = OpLoad %23 %284
%338 = OpFAdd %23 %337 %336
OpStore %284 %338
%339 = OpConvertUToF %7 %198
%340 = OpCompositeConstruct %279 %278 %339
%341 = OpSampledImage %314 %273 %275
%342 = OpImageSampleImplicitLod %23 %341 %340 Bias|ConstOffset %282 %30
%343 = OpLoad %23 %284
%344 = OpFAdd %23 %343 %342
OpStore %284 %344
%345 = OpConvertSToF %7 %283
%346 = OpCompositeConstruct %279 %278 %345
%347 = OpSampledImage %314 %273 %275
%348 = OpImageSampleImplicitLod %23 %347 %346
%349 = OpLoad %23 %284
%350 = OpFAdd %23 %349 %348
OpStore %284 %350
%351 = OpConvertSToF %7 %283
%352 = OpCompositeConstruct %279 %278 %351
%353 = OpSampledImage %314 %273 %275
%354 = OpImageSampleImplicitLod %23 %353 %352 ConstOffset %30
%355 = OpLoad %23 %284
%356 = OpFAdd %23 %355 %354
OpStore %284 %356
%357 = OpConvertSToF %7 %283
%358 = OpCompositeConstruct %279 %278 %357
%359 = OpSampledImage %314 %273 %275
%360 = OpImageSampleExplicitLod %23 %359 %358 Lod %281
%361 = OpLoad %23 %284
%362 = OpFAdd %23 %361 %360
OpStore %284 %362
%363 = OpConvertSToF %7 %283
%364 = OpCompositeConstruct %279 %278 %363
%365 = OpSampledImage %314 %273 %275
%366 = OpImageSampleExplicitLod %23 %365 %364 Lod|ConstOffset %281 %30
%367 = OpLoad %23 %284
%368 = OpFAdd %23 %367 %366
OpStore %284 %368
%369 = OpConvertSToF %7 %283
%370 = OpCompositeConstruct %279 %278 %369
%371 = OpSampledImage %314 %273 %275
%372 = OpImageSampleImplicitLod %23 %371 %370 Bias|ConstOffset %282 %30
%373 = OpLoad %23 %284
%374 = OpFAdd %23 %373 %372
OpStore %284 %374
%376 = OpConvertUToF %7 %198
%377 = OpCompositeConstruct %23 %280 %376
%378 = OpSampledImage %375 %274 %275
%379 = OpImageSampleImplicitLod %23 %378 %377
%380 = OpLoad %23 %284
%381 = OpFAdd %23 %380 %379
OpStore %284 %381
%382 = OpConvertUToF %7 %198
%383 = OpCompositeConstruct %23 %280 %382
%384 = OpSampledImage %375 %274 %275
%385 = OpImageSampleExplicitLod %23 %384 %383 Lod %281
%386 = OpLoad %23 %284
%387 = OpFAdd %23 %386 %385
OpStore %284 %387
%388 = OpConvertUToF %7 %198
%389 = OpCompositeConstruct %23 %280 %388
%390 = OpSampledImage %375 %274 %275
%391 = OpImageSampleImplicitLod %23 %390 %389 Bias %282
%392 = OpLoad %23 %284
%393 = OpFAdd %23 %392 %391
OpStore %284 %393
%394 = OpConvertSToF %7 %283
%395 = OpCompositeConstruct %23 %280 %394
%396 = OpSampledImage %375 %274 %275
%397 = OpImageSampleImplicitLod %23 %396 %395
%398 = OpLoad %23 %284
%399 = OpFAdd %23 %398 %397
OpStore %284 %399
%400 = OpConvertSToF %7 %283
%401 = OpCompositeConstruct %23 %280 %400
%402 = OpSampledImage %375 %274 %275
%403 = OpImageSampleExplicitLod %23 %402 %401 Lod %281
%404 = OpLoad %23 %284
%405 = OpFAdd %23 %404 %403
OpStore %284 %405
%406 = OpConvertSToF %7 %283
%407 = OpCompositeConstruct %23 %280 %406
%408 = OpSampledImage %375 %274 %275
%409 = OpImageSampleImplicitLod %23 %408 %407 Bias %282
%410 = OpLoad %23 %284
%411 = OpFAdd %23 %410 %409
OpStore %284 %411
%412 = OpLoad %23 %284
OpStore %269 %412
%413 = OpLoad %23 %269
OpStore %273 %413
OpReturn
OpFunctionEnd
%420 = OpFunction %2 None %79
%417 = OpLabel
%414 = OpVariable %415 Function %416
%421 = OpLoad %24 %66
%422 = OpLoad %25 %68
%423 = OpLoad %26 %70
%424 = OpLoad %27 %72
OpBranch %425
%425 = OpLabel
%426 = OpCompositeConstruct %285 %280 %280
%427 = OpCompositeConstruct %287 %280 %280 %280
%429 = OpSampledImage %428 %422 %421
%430 = OpImageSampleDrefImplicitLod %7 %429 %426 %280
%431 = OpLoad %7 %414
%432 = OpFAdd %7 %431 %430
OpStore %414 %432
%434 = OpConvertUToF %7 %199
%435 = OpCompositeConstruct %287 %426 %434
%436 = OpSampledImage %433 %423 %421
%437 = OpImageSampleDrefImplicitLod %7 %436 %435 %280
%438 = OpLoad %7 %414
%439 = OpFAdd %7 %438 %437
OpStore %414 %439
%440 = OpConvertSToF %7 %283
%441 = OpCompositeConstruct %287 %426 %440
%442 = OpSampledImage %433 %423 %421
%443 = OpImageSampleDrefImplicitLod %7 %442 %441 %280
%444 = OpLoad %7 %414
%445 = OpFAdd %7 %444 %443
OpStore %414 %445
%447 = OpSampledImage %446 %424 %421
%448 = OpImageSampleDrefImplicitLod %7 %447 %427 %280
%449 = OpLoad %7 %414
%450 = OpFAdd %7 %449 %448
OpStore %414 %450
%451 = OpSampledImage %428 %422 %421
%452 = OpImageSampleDrefExplicitLod %7 %451 %426 %280 Lod %453
%454 = OpLoad %7 %414
%455 = OpFAdd %7 %454 %452
OpStore %414 %455
%456 = OpConvertUToF %7 %199
%457 = OpCompositeConstruct %287 %426 %456
%458 = OpSampledImage %433 %423 %421
%459 = OpImageSampleDrefExplicitLod %7 %458 %457 %280 Lod %453
%460 = OpLoad %7 %414
%461 = OpFAdd %7 %460 %459
OpStore %414 %461
%462 = OpConvertSToF %7 %283
%463 = OpCompositeConstruct %287 %426 %462
%464 = OpSampledImage %433 %423 %421
%465 = OpImageSampleDrefExplicitLod %7 %464 %463 %280 Lod %453
%466 = OpLoad %7 %414
%467 = OpFAdd %7 %466 %465
OpStore %414 %467
%468 = OpSampledImage %446 %424 %421
%469 = OpImageSampleDrefExplicitLod %7 %468 %427 %280 Lod %453
%470 = OpLoad %7 %414
%471 = OpFAdd %7 %470 %469
OpStore %414 %471
%472 = OpLoad %7 %414
OpStore %418 %472
%416 = OpFunction %2 None %79
%413 = OpLabel
%421 = OpVariable %422 Function %423
%417 = OpLoad %24 %66
%418 = OpLoad %25 %68
%419 = OpLoad %26 %70
%420 = OpLoad %27 %72
OpBranch %424
%424 = OpLabel
%426 = OpSampledImage %425 %418 %417
%427 = OpImageSampleDrefImplicitLod %7 %426 %278 %276
%428 = OpLoad %7 %421
%429 = OpFAdd %7 %428 %427
OpStore %421 %429
%431 = OpConvertUToF %7 %198
%432 = OpCompositeConstruct %279 %278 %431
%433 = OpSampledImage %430 %419 %417
%434 = OpImageSampleDrefImplicitLod %7 %433 %432 %276
%435 = OpLoad %7 %421
%436 = OpFAdd %7 %435 %434
OpStore %421 %436
%437 = OpConvertSToF %7 %283
%438 = OpCompositeConstruct %279 %278 %437
%439 = OpSampledImage %430 %419 %417
%440 = OpImageSampleDrefImplicitLod %7 %439 %438 %276
%441 = OpLoad %7 %421
%442 = OpFAdd %7 %441 %440
OpStore %421 %442
%444 = OpSampledImage %443 %420 %417
%445 = OpImageSampleDrefImplicitLod %7 %444 %280 %276
%446 = OpLoad %7 %421
%447 = OpFAdd %7 %446 %445
OpStore %421 %447
%448 = OpSampledImage %425 %418 %417
%449 = OpImageSampleDrefExplicitLod %7 %448 %278 %276 Lod %450
%451 = OpLoad %7 %421
%452 = OpFAdd %7 %451 %449
OpStore %421 %452
%453 = OpConvertUToF %7 %198
%454 = OpCompositeConstruct %279 %278 %453
%455 = OpSampledImage %430 %419 %417
%456 = OpImageSampleDrefExplicitLod %7 %455 %454 %276 Lod %450
%457 = OpLoad %7 %421
%458 = OpFAdd %7 %457 %456
OpStore %421 %458
%459 = OpConvertSToF %7 %283
%460 = OpCompositeConstruct %279 %278 %459
%461 = OpSampledImage %430 %419 %417
%462 = OpImageSampleDrefExplicitLod %7 %461 %460 %276 Lod %450
%463 = OpLoad %7 %421
%464 = OpFAdd %7 %463 %462
OpStore %421 %464
%465 = OpSampledImage %443 %420 %417
%466 = OpImageSampleDrefExplicitLod %7 %465 %280 %276 Lod %450
%467 = OpLoad %7 %421
%468 = OpFAdd %7 %467 %466
OpStore %421 %468
%469 = OpLoad %7 %421
OpStore %414 %469
OpReturn
OpFunctionEnd
%475 = OpFunction %2 None %79
%473 = OpLabel
%476 = OpLoad %16 %49
%477 = OpLoad %3 %51
%478 = OpLoad %17 %52
%479 = OpLoad %24 %64
%480 = OpLoad %24 %66
%481 = OpLoad %25 %68
OpBranch %482
%482 = OpLabel
%483 = OpCompositeConstruct %285 %280 %280
%484 = OpSampledImage %294 %476 %479
%485 = OpImageGather %23 %484 %483 %486
%487 = OpSampledImage %294 %476 %479
%488 = OpImageGather %23 %487 %483 %489 ConstOffset %30
%490 = OpSampledImage %428 %481 %480
%491 = OpImageDrefGather %23 %490 %483 %280
%492 = OpSampledImage %428 %481 %480
%493 = OpImageDrefGather %23 %492 %483 %280 ConstOffset %30
%495 = OpSampledImage %494 %477 %479
%496 = OpImageGather %98 %495 %483 %199
%499 = OpSampledImage %498 %478 %479
%500 = OpImageGather %497 %499 %483 %199
%501 = OpConvertUToF %23 %496
%502 = OpConvertSToF %23 %500
%503 = OpFAdd %23 %501 %502
%504 = OpFAdd %23 %485 %488
%505 = OpFAdd %23 %504 %491
%506 = OpFAdd %23 %505 %493
%507 = OpFAdd %23 %506 %503
OpStore %474 %507
%472 = OpFunction %2 None %79
%470 = OpLabel
%473 = OpLoad %16 %49
%474 = OpLoad %3 %51
%475 = OpLoad %17 %52
%476 = OpLoad %24 %64
%477 = OpLoad %24 %66
%478 = OpLoad %25 %68
OpBranch %479
%479 = OpLabel
%480 = OpSampledImage %293 %473 %476
%481 = OpImageGather %23 %480 %278 %482
%483 = OpSampledImage %293 %473 %476
%484 = OpImageGather %23 %483 %278 %485 ConstOffset %30
%486 = OpSampledImage %425 %478 %477
%487 = OpImageDrefGather %23 %486 %278 %276
%488 = OpSampledImage %425 %478 %477
%489 = OpImageDrefGather %23 %488 %278 %276 ConstOffset %30
%491 = OpSampledImage %490 %474 %476
%492 = OpImageGather %98 %491 %278 %198
%495 = OpSampledImage %494 %475 %476
%496 = OpImageGather %493 %495 %278 %198
%497 = OpConvertUToF %23 %492
%498 = OpConvertSToF %23 %496
%499 = OpFAdd %23 %497 %498
%500 = OpFAdd %23 %481 %484
%501 = OpFAdd %23 %500 %487
%502 = OpFAdd %23 %501 %489
%503 = OpFAdd %23 %502 %499
OpStore %471 %503
OpReturn
OpFunctionEnd
%510 = OpFunction %2 None %79
%508 = OpLabel
%511 = OpLoad %24 %64
%512 = OpLoad %25 %68
OpBranch %513
%513 = OpLabel
%514 = OpCompositeConstruct %285 %280 %280
%515 = OpSampledImage %428 %512 %511
%516 = OpImageSampleImplicitLod %23 %515 %514
%517 = OpCompositeExtract %7 %516 0
%518 = OpSampledImage %428 %512 %511
%519 = OpImageGather %23 %518 %514 %199
%520 = OpCompositeConstruct %23 %517 %517 %517 %517
%521 = OpFAdd %23 %520 %519
OpStore %509 %521
%506 = OpFunction %2 None %79
%504 = OpLabel
%507 = OpLoad %24 %64
%508 = OpLoad %25 %68
OpBranch %509
%509 = OpLabel
%510 = OpSampledImage %425 %508 %507
%511 = OpImageSampleImplicitLod %23 %510 %278
%512 = OpCompositeExtract %7 %511 0
%513 = OpSampledImage %425 %508 %507
%514 = OpImageGather %23 %513 %278 %198
%515 = OpCompositeConstruct %23 %512 %512 %512 %512
%516 = OpFAdd %23 %515 %514
OpStore %505 %516
OpReturn
OpFunctionEnd

View File

@ -45,19 +45,19 @@ OpDecorate %26 BuiltIn PointSize
%26 = OpVariable %27 Output
%28 = OpConstant %4 1.0
%30 = OpTypeFunction %2
%31 = OpConstantComposite %3 %28 %28 %28 %28
%29 = OpFunction %2 None %30
%14 = OpLabel
%17 = OpLoad %6 %15
%19 = OpLoad %6 %18
%21 = OpLoad %6 %20
OpStore %26 %28
OpBranch %31
%31 = OpLabel
%32 = OpIAdd %6 %17 %19
%33 = OpIAdd %6 %32 %21
%34 = OpCompositeConstruct %3 %28 %28 %28 %28
%35 = OpConvertUToF %4 %33
%36 = OpCompositeConstruct %5 %34 %35
OpBranch %32
%32 = OpLabel
%33 = OpIAdd %6 %17 %19
%34 = OpIAdd %6 %33 %21
%35 = OpConvertUToF %4 %34
%36 = OpCompositeConstruct %5 %31 %35
%37 = OpCompositeExtract %3 %36 0
OpStore %22 %37
%38 = OpCompositeExtract %4 %36 1

View File

@ -1,11 +1,11 @@
; SPIR-V
; Version: 1.0
; Generator: rspirv
; Bound: 42
; Bound: 41
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %30 "vertex_two_structs" %19 %23 %25 %27
OpEntryPoint Vertex %27 "vertex_two_structs" %16 %20 %22 %24
OpMemberDecorate %5 0 Offset 0
OpMemberDecorate %5 1 Offset 16
OpMemberDecorate %7 0 Offset 0
@ -14,11 +14,11 @@ OpMemberDecorate %7 2 Offset 8
OpDecorate %9 ArrayStride 4
OpMemberDecorate %12 0 Offset 0
OpMemberDecorate %13 0 Offset 0
OpDecorate %19 BuiltIn VertexIndex
OpDecorate %23 BuiltIn InstanceIndex
OpDecorate %25 Invariant
OpDecorate %25 BuiltIn Position
OpDecorate %27 BuiltIn PointSize
OpDecorate %16 BuiltIn VertexIndex
OpDecorate %20 BuiltIn InstanceIndex
OpDecorate %22 Invariant
OpDecorate %22 BuiltIn Position
OpDecorate %24 BuiltIn PointSize
%2 = OpTypeVoid
%4 = OpTypeFloat 32
%3 = OpTypeVector %4 4
@ -31,37 +31,35 @@ OpDecorate %27 BuiltIn PointSize
%11 = OpTypeVector %6 3
%12 = OpTypeStruct %6
%13 = OpTypeStruct %6
%15 = OpTypePointer Function %6
%16 = OpConstantNull %6
%20 = OpTypePointer Input %6
%19 = OpVariable %20 Input
%23 = OpVariable %20 Input
%26 = OpTypePointer Output %3
%25 = OpVariable %26 Output
%28 = OpTypePointer Output %4
%27 = OpVariable %28 Output
%29 = OpConstant %4 1.0
%31 = OpTypeFunction %2
%32 = OpConstant %6 2
%33 = OpConstant %4 0.0
%30 = OpFunction %2 None %31
%17 = OpLabel
%14 = OpVariable %15 Function %16
%21 = OpLoad %6 %19
%18 = OpCompositeConstruct %12 %21
%24 = OpLoad %6 %23
%22 = OpCompositeConstruct %13 %24
OpStore %27 %29
OpBranch %34
%34 = OpLabel
OpStore %14 %32
%35 = OpCompositeExtract %6 %18 0
%36 = OpConvertUToF %4 %35
%37 = OpCompositeExtract %6 %22 0
%38 = OpConvertUToF %4 %37
%39 = OpLoad %6 %14
%40 = OpConvertUToF %4 %39
%41 = OpCompositeConstruct %3 %36 %38 %40 %33
OpStore %25 %41
%17 = OpTypePointer Input %6
%16 = OpVariable %17 Input
%20 = OpVariable %17 Input
%23 = OpTypePointer Output %3
%22 = OpVariable %23 Output
%25 = OpTypePointer Output %4
%24 = OpVariable %25 Output
%26 = OpConstant %4 1.0
%28 = OpTypeFunction %2
%29 = OpConstant %6 2
%30 = OpConstant %4 0.0
%32 = OpTypePointer Function %6
%27 = OpFunction %2 None %28
%14 = OpLabel
%31 = OpVariable %32 Function %29
%18 = OpLoad %6 %16
%15 = OpCompositeConstruct %12 %18
%21 = OpLoad %6 %20
%19 = OpCompositeConstruct %13 %21
OpStore %24 %26
OpBranch %33
%33 = OpLabel
%34 = OpCompositeExtract %6 %15 0
%35 = OpConvertUToF %4 %34
%36 = OpCompositeExtract %6 %19 0
%37 = OpConvertUToF %4 %36
%38 = OpLoad %6 %31
%39 = OpConvertUToF %4 %38
%40 = OpCompositeConstruct %3 %35 %37 %39 %30
OpStore %22 %40
OpReturn
OpFunctionEnd

View File

@ -6,7 +6,7 @@ OpCapability Shader
OpCapability SampleRateShading
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %29 "vert_main" %13 %15 %17 %19 %21 %23 %24 %25 %26
OpEntryPoint Vertex %26 "vert_main" %10 %12 %14 %16 %18 %20 %21 %22 %23
OpEntryPoint Fragment %109 "frag_main" %88 %91 %94 %97 %100 %103 %105 %107
OpExecutionMode %109 OriginUpperLeft
OpMemberName %8 0 "position"
@ -18,16 +18,16 @@ OpMemberName %8 5 "perspective"
OpMemberName %8 6 "perspective_centroid"
OpMemberName %8 7 "perspective_sample"
OpName %8 "FragmentInput"
OpName %9 "out"
OpName %13 "position"
OpName %15 "_flat"
OpName %17 "_linear"
OpName %19 "linear_centroid"
OpName %21 "linear_sample"
OpName %23 "perspective"
OpName %24 "perspective_centroid"
OpName %25 "perspective_sample"
OpName %29 "vert_main"
OpName %10 "position"
OpName %12 "_flat"
OpName %14 "_linear"
OpName %16 "linear_centroid"
OpName %18 "linear_sample"
OpName %20 "perspective"
OpName %21 "perspective_centroid"
OpName %22 "perspective_sample"
OpName %26 "vert_main"
OpName %49 "out"
OpName %88 "position"
OpName %91 "_flat"
OpName %94 "_linear"
@ -45,23 +45,23 @@ OpMemberDecorate %8 4 Offset 32
OpMemberDecorate %8 5 Offset 48
OpMemberDecorate %8 6 Offset 64
OpMemberDecorate %8 7 Offset 68
OpDecorate %13 BuiltIn Position
OpDecorate %15 Location 0
OpDecorate %15 Flat
OpDecorate %17 Location 1
OpDecorate %17 NoPerspective
OpDecorate %19 Location 2
OpDecorate %19 NoPerspective
OpDecorate %19 Centroid
OpDecorate %21 Location 3
OpDecorate %21 NoPerspective
OpDecorate %21 Sample
OpDecorate %23 Location 4
OpDecorate %24 Location 5
OpDecorate %24 Centroid
OpDecorate %25 Location 6
OpDecorate %25 Sample
OpDecorate %26 BuiltIn PointSize
OpDecorate %10 BuiltIn Position
OpDecorate %12 Location 0
OpDecorate %12 Flat
OpDecorate %14 Location 1
OpDecorate %14 NoPerspective
OpDecorate %16 Location 2
OpDecorate %16 NoPerspective
OpDecorate %16 Centroid
OpDecorate %18 Location 3
OpDecorate %18 NoPerspective
OpDecorate %18 Sample
OpDecorate %20 Location 4
OpDecorate %21 Location 5
OpDecorate %21 Centroid
OpDecorate %22 Location 6
OpDecorate %22 Sample
OpDecorate %23 BuiltIn PointSize
OpDecorate %88 BuiltIn FragCoord
OpDecorate %91 Location 0
OpDecorate %91 Flat
@ -85,52 +85,56 @@ OpDecorate %107 Sample
%6 = OpTypeVector %4 2
%7 = OpTypeVector %4 3
%8 = OpTypeStruct %3 %5 %4 %6 %7 %3 %4 %4
%10 = OpTypePointer Function %8
%11 = OpConstantNull %8
%14 = OpTypePointer Output %3
%13 = OpVariable %14 Output
%16 = OpTypePointer Output %5
%15 = OpVariable %16 Output
%18 = OpTypePointer Output %4
%17 = OpVariable %18 Output
%20 = OpTypePointer Output %6
%19 = OpVariable %20 Output
%22 = OpTypePointer Output %7
%21 = OpVariable %22 Output
%23 = OpVariable %14 Output
%24 = OpVariable %18 Output
%25 = OpVariable %18 Output
%27 = OpTypePointer Output %4
%26 = OpVariable %27 Output
%28 = OpConstant %4 1.0
%30 = OpTypeFunction %2
%31 = OpConstant %4 2.0
%32 = OpConstant %4 4.0
%33 = OpConstant %4 5.0
%34 = OpConstant %4 6.0
%35 = OpConstant %5 8
%36 = OpConstant %4 27.0
%37 = OpConstant %4 64.0
%38 = OpConstant %4 125.0
%39 = OpConstant %4 216.0
%40 = OpConstant %4 343.0
%41 = OpConstant %4 512.0
%11 = OpTypePointer Output %3
%10 = OpVariable %11 Output
%13 = OpTypePointer Output %5
%12 = OpVariable %13 Output
%15 = OpTypePointer Output %4
%14 = OpVariable %15 Output
%17 = OpTypePointer Output %6
%16 = OpVariable %17 Output
%19 = OpTypePointer Output %7
%18 = OpVariable %19 Output
%20 = OpVariable %11 Output
%21 = OpVariable %15 Output
%22 = OpVariable %15 Output
%24 = OpTypePointer Output %4
%23 = OpVariable %24 Output
%25 = OpConstant %4 1.0
%27 = OpTypeFunction %2
%28 = OpConstant %4 2.0
%29 = OpConstant %4 4.0
%30 = OpConstant %4 5.0
%31 = OpConstant %4 6.0
%32 = OpConstantComposite %3 %28 %29 %30 %31
%33 = OpConstant %5 8
%34 = OpConstant %4 27.0
%35 = OpConstant %4 64.0
%36 = OpConstant %4 125.0
%37 = OpConstantComposite %6 %35 %36
%38 = OpConstant %4 216.0
%39 = OpConstant %4 343.0
%40 = OpConstant %4 512.0
%41 = OpConstantComposite %7 %38 %39 %40
%42 = OpConstant %4 729.0
%43 = OpConstant %4 1000.0
%44 = OpConstant %4 1331.0
%45 = OpConstant %4 1728.0
%46 = OpConstant %4 2197.0
%47 = OpConstant %4 2744.0
%49 = OpTypePointer Function %3
%51 = OpConstant %5 0
%53 = OpTypePointer Function %5
%54 = OpConstant %5 1
%56 = OpTypePointer Function %4
%57 = OpConstant %5 2
%59 = OpTypePointer Function %6
%61 = OpConstant %5 3
%63 = OpTypePointer Function %7
%65 = OpConstant %5 4
%46 = OpConstantComposite %3 %42 %43 %44 %45
%47 = OpConstant %4 2197.0
%48 = OpConstant %4 2744.0
%50 = OpTypePointer Function %8
%51 = OpConstantNull %8
%53 = OpTypePointer Function %3
%54 = OpConstant %5 0
%56 = OpTypePointer Function %5
%57 = OpConstant %5 1
%59 = OpTypePointer Function %4
%60 = OpConstant %5 2
%62 = OpTypePointer Function %6
%63 = OpConstant %5 3
%65 = OpTypePointer Function %7
%66 = OpConstant %5 4
%68 = OpConstant %5 5
%70 = OpConstant %5 6
%72 = OpConstant %5 7
@ -147,56 +151,52 @@ OpDecorate %107 Sample
%103 = OpVariable %89 Input
%105 = OpVariable %95 Input
%107 = OpVariable %95 Input
%29 = OpFunction %2 None %30
%12 = OpLabel
%9 = OpVariable %10 Function %11
OpStore %26 %28
OpBranch %48
%48 = OpLabel
%50 = OpCompositeConstruct %3 %31 %32 %33 %34
%52 = OpAccessChain %49 %9 %51
OpStore %52 %50
%55 = OpAccessChain %53 %9 %54
OpStore %55 %35
%58 = OpAccessChain %56 %9 %57
OpStore %58 %36
%60 = OpCompositeConstruct %6 %37 %38
%62 = OpAccessChain %59 %9 %61
OpStore %62 %60
%64 = OpCompositeConstruct %7 %39 %40 %41
%66 = OpAccessChain %63 %9 %65
OpStore %66 %64
%67 = OpCompositeConstruct %3 %42 %43 %44 %45
%69 = OpAccessChain %49 %9 %68
OpStore %69 %67
%71 = OpAccessChain %56 %9 %70
OpStore %71 %46
%73 = OpAccessChain %56 %9 %72
OpStore %73 %47
%74 = OpLoad %8 %9
%26 = OpFunction %2 None %27
%9 = OpLabel
%49 = OpVariable %50 Function %51
OpStore %23 %25
OpBranch %52
%52 = OpLabel
%55 = OpAccessChain %53 %49 %54
OpStore %55 %32
%58 = OpAccessChain %56 %49 %57
OpStore %58 %33
%61 = OpAccessChain %59 %49 %60
OpStore %61 %34
%64 = OpAccessChain %62 %49 %63
OpStore %64 %37
%67 = OpAccessChain %65 %49 %66
OpStore %67 %41
%69 = OpAccessChain %53 %49 %68
OpStore %69 %46
%71 = OpAccessChain %59 %49 %70
OpStore %71 %47
%73 = OpAccessChain %59 %49 %72
OpStore %73 %48
%74 = OpLoad %8 %49
%75 = OpCompositeExtract %3 %74 0
OpStore %13 %75
%76 = OpAccessChain %27 %13 %54
OpStore %10 %75
%76 = OpAccessChain %24 %10 %57
%77 = OpLoad %4 %76
%78 = OpFNegate %4 %77
OpStore %76 %78
%79 = OpCompositeExtract %5 %74 1
OpStore %15 %79
OpStore %12 %79
%80 = OpCompositeExtract %4 %74 2
OpStore %17 %80
OpStore %14 %80
%81 = OpCompositeExtract %6 %74 3
OpStore %19 %81
OpStore %16 %81
%82 = OpCompositeExtract %7 %74 4
OpStore %21 %82
OpStore %18 %82
%83 = OpCompositeExtract %3 %74 5
OpStore %23 %83
OpStore %20 %83
%84 = OpCompositeExtract %4 %74 6
OpStore %24 %84
OpStore %21 %84
%85 = OpCompositeExtract %4 %74 7
OpStore %25 %85
OpStore %22 %85
OpReturn
OpFunctionEnd
%109 = OpFunction %2 None %30
%109 = OpFunction %2 None %27
%86 = OpLabel
%90 = OpLoad %3 %88
%93 = OpLoad %5 %91

View File

@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 134
; Bound: 126
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
@ -32,123 +32,115 @@ OpMemberDecorate %13 1 Offset 16
%16 = OpTypeFunction %2
%17 = OpConstant %4 1.0
%18 = OpConstant %4 0.0
%19 = OpConstant %6 -1
%20 = OpConstant %4 -1.0
%21 = OpConstantNull %5
%22 = OpTypeInt 32 0
%23 = OpConstant %22 0
%24 = OpConstant %22 1
%25 = OpConstant %6 0
%26 = OpConstant %22 4294967295
%27 = OpConstant %6 1
%28 = OpConstant %6 2
%29 = OpConstant %4 2.0
%30 = OpConstant %6 3
%31 = OpConstant %6 4
%32 = OpConstant %4 1.5
%40 = OpConstantComposite %3 %18 %18 %18 %18
%41 = OpConstantComposite %3 %17 %17 %17 %17
%50 = OpConstantNull %6
%63 = OpTypeVector %22 2
%73 = OpConstant %22 32
%83 = OpConstantComposite %63 %73 %73
%19 = OpConstantComposite %3 %18 %18 %18 %18
%20 = OpConstant %6 -1
%21 = OpConstantComposite %12 %20 %20 %20 %20
%22 = OpConstant %4 -1.0
%23 = OpConstantComposite %3 %22 %22 %22 %22
%24 = OpConstantNull %5
%25 = OpTypeInt 32 0
%26 = OpConstant %25 0
%27 = OpConstantComposite %5 %20 %20
%28 = OpConstant %25 1
%29 = OpTypeVector %25 2
%30 = OpConstantComposite %29 %28 %28
%31 = OpConstant %6 0
%32 = OpConstant %25 4294967295
%33 = OpConstantComposite %29 %26 %26
%34 = OpConstantComposite %5 %31 %31
%35 = OpConstant %6 1
%36 = OpConstantComposite %5 %35 %35
%37 = OpConstant %6 2
%38 = OpConstant %4 2.0
%39 = OpConstantComposite %7 %17 %38
%40 = OpConstant %6 3
%41 = OpConstant %6 4
%42 = OpConstantComposite %5 %40 %41
%43 = OpConstant %4 1.5
%44 = OpConstantComposite %7 %43 %43
%45 = OpConstantComposite %3 %43 %43 %43 %43
%52 = OpConstantComposite %3 %17 %17 %17 %17
%59 = OpConstantNull %6
%77 = OpConstant %25 32
%86 = OpConstantComposite %29 %77 %77
%95 = OpConstant %6 31
%101 = OpConstantComposite %5 %95 %95
%100 = OpConstantComposite %5 %95 %95
%15 = OpFunction %2 None %16
%14 = OpLabel
OpBranch %33
%33 = OpLabel
%34 = OpCompositeConstruct %3 %18 %18 %18 %18
%35 = OpExtInst %4 %1 Degrees %17
%36 = OpExtInst %4 %1 Radians %17
%37 = OpExtInst %3 %1 Degrees %34
%38 = OpExtInst %3 %1 Radians %34
%39 = OpExtInst %3 %1 FClamp %34 %40 %41
%42 = OpExtInst %3 %1 Refract %34 %34 %17
%43 = OpExtInst %6 %1 SSign %19
%44 = OpCompositeConstruct %12 %19 %19 %19 %19
%45 = OpExtInst %12 %1 SSign %44
%46 = OpExtInst %4 %1 FSign %20
%47 = OpCompositeConstruct %3 %20 %20 %20 %20
%48 = OpExtInst %3 %1 FSign %47
%51 = OpCompositeExtract %6 %21 0
%52 = OpCompositeExtract %6 %21 0
%53 = OpIMul %6 %51 %52
%54 = OpIAdd %6 %50 %53
%55 = OpCompositeExtract %6 %21 1
%56 = OpCompositeExtract %6 %21 1
%57 = OpIMul %6 %55 %56
%49 = OpIAdd %6 %54 %57
%58 = OpCopyObject %22 %23
%59 = OpExtInst %22 %1 FindUMsb %58
%60 = OpExtInst %6 %1 FindSMsb %19
%61 = OpCompositeConstruct %5 %19 %19
%62 = OpExtInst %5 %1 FindSMsb %61
%64 = OpCompositeConstruct %63 %24 %24
%65 = OpExtInst %63 %1 FindUMsb %64
%66 = OpExtInst %6 %1 FindILsb %19
%67 = OpExtInst %22 %1 FindILsb %24
%68 = OpCompositeConstruct %5 %19 %19
%69 = OpExtInst %5 %1 FindILsb %68
%70 = OpCompositeConstruct %63 %24 %24
%71 = OpExtInst %63 %1 FindILsb %70
%74 = OpExtInst %22 %1 FindILsb %23
%72 = OpExtInst %22 %1 UMin %73 %74
%76 = OpExtInst %6 %1 FindILsb %25
%75 = OpExtInst %6 %1 UMin %73 %76
%78 = OpExtInst %22 %1 FindILsb %26
%77 = OpExtInst %22 %1 UMin %73 %78
%80 = OpExtInst %6 %1 FindILsb %19
%79 = OpExtInst %6 %1 UMin %73 %80
%81 = OpCompositeConstruct %63 %23 %23
%84 = OpExtInst %63 %1 FindILsb %81
%82 = OpExtInst %63 %1 UMin %83 %84
%85 = OpCompositeConstruct %5 %25 %25
%87 = OpExtInst %5 %1 FindILsb %85
%86 = OpExtInst %5 %1 UMin %83 %87
%88 = OpCompositeConstruct %63 %24 %24
%90 = OpExtInst %63 %1 FindILsb %88
%89 = OpExtInst %63 %1 UMin %83 %90
%91 = OpCompositeConstruct %5 %27 %27
%93 = OpExtInst %5 %1 FindILsb %91
%92 = OpExtInst %5 %1 UMin %83 %93
%96 = OpExtInst %6 %1 FindUMsb %19
OpBranch %46
%46 = OpLabel
%47 = OpExtInst %4 %1 Degrees %17
%48 = OpExtInst %4 %1 Radians %17
%49 = OpExtInst %3 %1 Degrees %19
%50 = OpExtInst %3 %1 Radians %19
%51 = OpExtInst %3 %1 FClamp %19 %19 %52
%53 = OpExtInst %3 %1 Refract %19 %19 %17
%54 = OpExtInst %6 %1 SSign %20
%55 = OpExtInst %12 %1 SSign %21
%56 = OpExtInst %4 %1 FSign %22
%57 = OpExtInst %3 %1 FSign %23
%60 = OpCompositeExtract %6 %24 0
%61 = OpCompositeExtract %6 %24 0
%62 = OpIMul %6 %60 %61
%63 = OpIAdd %6 %59 %62
%64 = OpCompositeExtract %6 %24 1
%65 = OpCompositeExtract %6 %24 1
%66 = OpIMul %6 %64 %65
%58 = OpIAdd %6 %63 %66
%67 = OpCopyObject %25 %26
%68 = OpExtInst %25 %1 FindUMsb %67
%69 = OpExtInst %6 %1 FindSMsb %20
%70 = OpExtInst %5 %1 FindSMsb %27
%71 = OpExtInst %29 %1 FindUMsb %30
%72 = OpExtInst %6 %1 FindILsb %20
%73 = OpExtInst %25 %1 FindILsb %28
%74 = OpExtInst %5 %1 FindILsb %27
%75 = OpExtInst %29 %1 FindILsb %30
%78 = OpExtInst %25 %1 FindILsb %26
%76 = OpExtInst %25 %1 UMin %77 %78
%80 = OpExtInst %6 %1 FindILsb %31
%79 = OpExtInst %6 %1 UMin %77 %80
%82 = OpExtInst %25 %1 FindILsb %32
%81 = OpExtInst %25 %1 UMin %77 %82
%84 = OpExtInst %6 %1 FindILsb %20
%83 = OpExtInst %6 %1 UMin %77 %84
%87 = OpExtInst %29 %1 FindILsb %33
%85 = OpExtInst %29 %1 UMin %86 %87
%89 = OpExtInst %5 %1 FindILsb %34
%88 = OpExtInst %5 %1 UMin %86 %89
%91 = OpExtInst %29 %1 FindILsb %30
%90 = OpExtInst %29 %1 UMin %86 %91
%93 = OpExtInst %5 %1 FindILsb %36
%92 = OpExtInst %5 %1 UMin %86 %93
%96 = OpExtInst %6 %1 FindUMsb %20
%94 = OpISub %6 %95 %96
%98 = OpExtInst %6 %1 FindUMsb %24
%97 = OpISub %22 %95 %98
%99 = OpCompositeConstruct %5 %19 %19
%102 = OpExtInst %5 %1 FindUMsb %99
%100 = OpISub %5 %101 %102
%103 = OpCompositeConstruct %63 %24 %24
%105 = OpExtInst %5 %1 FindUMsb %103
%104 = OpISub %63 %101 %105
%106 = OpExtInst %4 %1 Ldexp %17 %28
%107 = OpCompositeConstruct %7 %17 %29
%108 = OpCompositeConstruct %5 %30 %31
%109 = OpExtInst %7 %1 Ldexp %107 %108
%110 = OpExtInst %8 %1 ModfStruct %32
%111 = OpExtInst %8 %1 ModfStruct %32
%112 = OpCompositeExtract %4 %111 0
%113 = OpExtInst %8 %1 ModfStruct %32
%114 = OpCompositeExtract %4 %113 1
%115 = OpCompositeConstruct %7 %32 %32
%116 = OpExtInst %9 %1 ModfStruct %115
%117 = OpCompositeConstruct %3 %32 %32 %32 %32
%118 = OpExtInst %10 %1 ModfStruct %117
%119 = OpCompositeExtract %3 %118 1
%98 = OpExtInst %6 %1 FindUMsb %28
%97 = OpISub %25 %95 %98
%101 = OpExtInst %5 %1 FindUMsb %27
%99 = OpISub %5 %100 %101
%103 = OpExtInst %5 %1 FindUMsb %30
%102 = OpISub %29 %100 %103
%104 = OpExtInst %4 %1 Ldexp %17 %37
%105 = OpExtInst %7 %1 Ldexp %39 %42
%106 = OpExtInst %8 %1 ModfStruct %43
%107 = OpExtInst %8 %1 ModfStruct %43
%108 = OpCompositeExtract %4 %107 0
%109 = OpExtInst %8 %1 ModfStruct %43
%110 = OpCompositeExtract %4 %109 1
%111 = OpExtInst %9 %1 ModfStruct %44
%112 = OpExtInst %10 %1 ModfStruct %45
%113 = OpCompositeExtract %3 %112 1
%114 = OpCompositeExtract %4 %113 0
%115 = OpExtInst %9 %1 ModfStruct %44
%116 = OpCompositeExtract %7 %115 0
%117 = OpCompositeExtract %4 %116 1
%118 = OpExtInst %11 %1 FrexpStruct %43
%119 = OpExtInst %11 %1 FrexpStruct %43
%120 = OpCompositeExtract %4 %119 0
%121 = OpCompositeConstruct %7 %32 %32
%122 = OpExtInst %9 %1 ModfStruct %121
%123 = OpCompositeExtract %7 %122 0
%124 = OpCompositeExtract %4 %123 1
%125 = OpExtInst %11 %1 FrexpStruct %32
%126 = OpExtInst %11 %1 FrexpStruct %32
%127 = OpCompositeExtract %4 %126 0
%128 = OpExtInst %11 %1 FrexpStruct %32
%129 = OpCompositeExtract %6 %128 1
%130 = OpCompositeConstruct %3 %32 %32 %32 %32
%131 = OpExtInst %13 %1 FrexpStruct %130
%132 = OpCompositeExtract %12 %131 1
%133 = OpCompositeExtract %6 %132 0
%121 = OpExtInst %11 %1 FrexpStruct %43
%122 = OpCompositeExtract %6 %121 1
%123 = OpExtInst %13 %1 FrexpStruct %45
%124 = OpCompositeExtract %12 %123 1
%125 = OpCompositeExtract %6 %124 0
OpReturn
OpFunctionEnd

View File

@ -1,12 +1,12 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 450
; Bound: 308
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %439 "main"
OpExecutionMode %439 LocalSize 1 1 1
OpEntryPoint GLCompute %297 "main"
OpExecutionMode %297 LocalSize 1 1 1
%2 = OpTypeVoid
%4 = OpTypeFloat 32
%3 = OpTypeVector %4 4
@ -37,476 +37,331 @@ OpExecutionMode %439 LocalSize 1 1 1
%31 = OpConstantTrue %8
%32 = OpConstant %6 0
%33 = OpConstantFalse %8
%34 = OpConstant %4 0.1
%34 = OpConstantComposite %7 %33 %33 %33 %33
%35 = OpConstant %4 0.1
%36 = OpConstantComposite %5 %32 %32 %32 %32
%58 = OpConstant %4 2.0
%59 = OpConstant %4 3.0
%60 = OpConstant %4 4.0
%61 = OpConstant %6 5
%62 = OpConstant %6 2
%78 = OpTypePointer Function %9
%79 = OpConstantNull %9
%82 = OpTypeFunction %9
%98 = OpTypeFunction %10 %10
%100 = OpTypeVector %8 3
%101 = OpConstantComposite %10 %22 %22 %22
%103 = OpConstantComposite %10 %20 %20 %20
%107 = OpTypeFunction %2
%120 = OpConstant %4 -1.0
%121 = OpConstant %6 -1
%122 = OpConstant %6 3
%123 = OpConstant %14 3
%124 = OpConstant %14 2
%59 = OpConstantComposite %9 %58 %58
%60 = OpConstantComposite %9 %20 %20
%61 = OpConstant %4 3.0
%62 = OpConstantComposite %9 %61 %61
%63 = OpConstant %4 4.0
%64 = OpConstantComposite %9 %63 %63
%65 = OpConstant %6 5
%66 = OpConstantComposite %5 %65 %65 %65 %65
%67 = OpConstant %6 2
%68 = OpConstantComposite %5 %67 %67 %67 %67
%79 = OpTypeFunction %9
%81 = OpTypePointer Function %9
%93 = OpTypeFunction %10 %10
%95 = OpTypeVector %8 3
%96 = OpConstantComposite %10 %22 %22 %22
%98 = OpConstantComposite %10 %20 %20 %20
%102 = OpTypeFunction %2
%103 = OpConstantComposite %11 %33 %33
%104 = OpConstantComposite %95 %31 %31 %31
%105 = OpConstantComposite %95 %33 %33 %33
%106 = OpConstantComposite %7 %31 %31 %31 %31
%107 = OpConstantComposite %7 %33 %33 %33 %33
%115 = OpConstant %4 -1.0
%116 = OpConstant %6 -1
%117 = OpConstantComposite %12 %116 %116
%118 = OpConstantComposite %9 %115 %115
%119 = OpConstant %6 3
%120 = OpConstant %14 3
%121 = OpConstantComposite %12 %67 %67
%122 = OpConstantComposite %12 %26 %26
%123 = OpConstant %14 2
%124 = OpConstantComposite %13 %123 %123 %123
%125 = OpConstant %14 1
%126 = OpConstant %14 0
%127 = OpConstantNull %16
%128 = OpConstantNull %17
%129 = OpConstantNull %18
%293 = OpConstant %6 -2
%294 = OpConstant %14 4294967294
%295 = OpConstant %6 4
%296 = OpConstant %14 4
%388 = OpTypePointer Function %6
%389 = OpConstantNull %6
%391 = OpTypePointer Function %19
%392 = OpConstantNull %19
%422 = OpTypePointer Function %6
%433 = OpConstant %6 -5
%434 = OpConstant %6 6
%435 = OpConstant %6 -7
%436 = OpConstant %6 -8
%126 = OpConstantComposite %13 %125 %125 %125
%127 = OpConstantComposite %3 %58 %58 %58 %58
%128 = OpConstantComposite %3 %20 %20 %20 %20
%129 = OpConstant %14 0
%130 = OpConstantComposite %15 %123 %123
%131 = OpConstantComposite %15 %125 %125
%132 = OpConstantComposite %12 %67 %67
%133 = OpConstantComposite %15 %123 %123
%134 = OpConstantComposite %9 %58 %58
%135 = OpConstantNull %16
%136 = OpConstantComposite %10 %22 %22 %22
%137 = OpConstantComposite %16 %136 %136 %136
%138 = OpConstantNull %17
%139 = OpConstantComposite %10 %58 %58 %58
%140 = OpConstantNull %18
%208 = OpConstant %6 -2
%209 = OpConstant %14 4294967294
%210 = OpConstantComposite %12 %208 %208
%211 = OpConstantComposite %13 %209 %209 %209
%212 = OpConstant %6 4
%213 = OpConstant %14 4
%248 = OpConstantNull %19
%250 = OpTypePointer Function %6
%252 = OpTypePointer Function %19
%280 = OpTypePointer Function %6
%291 = OpConstant %6 -5
%292 = OpConstant %6 6
%293 = OpConstant %6 -7
%294 = OpConstant %6 -8
%298 = OpConstantComposite %10 %20 %20 %20
%29 = OpFunction %3 None %30
%28 = OpLabel
OpBranch %35
%35 = OpLabel
%36 = OpSelect %6 %31 %26 %32
%38 = OpCompositeConstruct %7 %31 %31 %31 %31
%37 = OpSelect %3 %38 %21 %23
%39 = OpCompositeConstruct %7 %33 %33 %33 %33
%40 = OpSelect %3 %39 %23 %21
%41 = OpExtInst %3 %1 FMix %23 %21 %25
%43 = OpCompositeConstruct %3 %34 %34 %34 %34
%42 = OpExtInst %3 %1 FMix %23 %21 %43
%44 = OpBitcast %4 %26
%45 = OpBitcast %3 %27
%46 = OpCompositeConstruct %5 %32 %32 %32 %32
%47 = OpCompositeConstruct %5 %36 %36 %36 %36
%48 = OpIAdd %5 %47 %46
OpBranch %37
%37 = OpLabel
%38 = OpSelect %6 %31 %26 %32
%40 = OpCompositeConstruct %7 %31 %31 %31 %31
%39 = OpSelect %3 %40 %21 %23
%41 = OpSelect %3 %34 %23 %21
%42 = OpExtInst %3 %1 FMix %23 %21 %25
%44 = OpCompositeConstruct %3 %35 %35 %35 %35
%43 = OpExtInst %3 %1 FMix %23 %21 %44
%45 = OpBitcast %4 %26
%46 = OpBitcast %3 %27
%47 = OpCompositeConstruct %5 %38 %38 %38 %38
%48 = OpIAdd %5 %47 %36
%49 = OpConvertSToF %3 %48
%50 = OpFAdd %3 %49 %37
%51 = OpFAdd %3 %50 %41
%52 = OpFAdd %3 %51 %42
%53 = OpCompositeConstruct %3 %44 %44 %44 %44
%50 = OpFAdd %3 %49 %39
%51 = OpFAdd %3 %50 %42
%52 = OpFAdd %3 %51 %43
%53 = OpCompositeConstruct %3 %45 %45 %45 %45
%54 = OpFAdd %3 %52 %53
%55 = OpFAdd %3 %54 %45
%55 = OpFAdd %3 %54 %46
OpReturnValue %55
OpFunctionEnd
%57 = OpFunction %3 None %30
%56 = OpLabel
OpBranch %63
%63 = OpLabel
%64 = OpCompositeConstruct %9 %58 %58
%65 = OpCompositeConstruct %9 %20 %20
%66 = OpFAdd %9 %65 %64
%67 = OpCompositeConstruct %9 %59 %59
%68 = OpFSub %9 %66 %67
%69 = OpCompositeConstruct %9 %60 %60
%70 = OpFDiv %9 %68 %69
%71 = OpCompositeConstruct %5 %61 %61 %61 %61
%72 = OpCompositeConstruct %5 %62 %62 %62 %62
%73 = OpSRem %5 %71 %72
%74 = OpVectorShuffle %3 %70 %70 0 1 0 1
OpBranch %69
%69 = OpLabel
%70 = OpFAdd %9 %60 %59
%71 = OpFSub %9 %70 %62
%72 = OpFDiv %9 %71 %64
%73 = OpSRem %5 %66 %68
%74 = OpVectorShuffle %3 %72 %72 0 1 0 1
%75 = OpConvertSToF %3 %73
%76 = OpFAdd %3 %74 %75
OpReturnValue %76
OpFunctionEnd
%81 = OpFunction %9 None %82
%80 = OpLabel
%77 = OpVariable %78 Function %79
OpBranch %83
%83 = OpLabel
%84 = OpCompositeConstruct %9 %58 %58
OpStore %77 %84
%85 = OpLoad %9 %77
%86 = OpCompositeConstruct %9 %20 %20
%87 = OpFAdd %9 %85 %86
OpStore %77 %87
%88 = OpLoad %9 %77
%89 = OpCompositeConstruct %9 %59 %59
%90 = OpFSub %9 %88 %89
OpStore %77 %90
%91 = OpLoad %9 %77
%92 = OpCompositeConstruct %9 %60 %60
%93 = OpFDiv %9 %91 %92
OpStore %77 %93
%94 = OpLoad %9 %77
OpReturnValue %94
%78 = OpFunction %9 None %79
%77 = OpLabel
%80 = OpVariable %81 Function %59
OpBranch %82
%82 = OpLabel
%83 = OpLoad %9 %80
%84 = OpFAdd %9 %83 %60
OpStore %80 %84
%85 = OpLoad %9 %80
%86 = OpFSub %9 %85 %62
OpStore %80 %86
%87 = OpLoad %9 %80
%88 = OpFDiv %9 %87 %64
OpStore %80 %88
%89 = OpLoad %9 %80
OpReturnValue %89
OpFunctionEnd
%97 = OpFunction %10 None %98
%96 = OpFunctionParameter %10
%95 = OpLabel
OpBranch %99
%99 = OpLabel
%102 = OpFUnordNotEqual %100 %96 %101
%104 = OpSelect %10 %102 %103 %101
OpReturnValue %104
%92 = OpFunction %10 None %93
%91 = OpFunctionParameter %10
%90 = OpLabel
OpBranch %94
%94 = OpLabel
%97 = OpFUnordNotEqual %95 %91 %96
%99 = OpSelect %10 %97 %98 %96
OpReturnValue %99
OpFunctionEnd
%106 = OpFunction %2 None %107
%105 = OpLabel
%101 = OpFunction %2 None %102
%100 = OpLabel
OpBranch %108
%108 = OpLabel
%109 = OpCompositeConstruct %11 %33 %33
%110 = OpLogicalOr %8 %31 %33
%111 = OpCompositeConstruct %100 %31 %31 %31
%112 = OpCompositeConstruct %100 %33 %33 %33
%113 = OpLogicalOr %100 %111 %112
%114 = OpLogicalAnd %8 %31 %33
%115 = OpCompositeConstruct %7 %31 %31 %31 %31
%116 = OpCompositeConstruct %7 %33 %33 %33 %33
%117 = OpLogicalAnd %7 %115 %116
%109 = OpLogicalOr %8 %31 %33
%110 = OpLogicalOr %95 %104 %105
%111 = OpLogicalAnd %8 %31 %33
%112 = OpLogicalAnd %7 %106 %107
OpReturn
OpFunctionEnd
%119 = OpFunction %2 None %107
%118 = OpLabel
OpBranch %130
%130 = OpLabel
%131 = OpCompositeConstruct %12 %121 %121
%132 = OpCompositeConstruct %9 %120 %120
%133 = OpCompositeConstruct %12 %62 %62
%134 = OpCompositeConstruct %12 %26 %26
%135 = OpIAdd %12 %133 %134
%136 = OpCompositeConstruct %13 %124 %124 %124
%137 = OpCompositeConstruct %13 %125 %125 %125
%138 = OpIAdd %13 %136 %137
%139 = OpCompositeConstruct %3 %58 %58 %58 %58
%140 = OpCompositeConstruct %3 %20 %20 %20 %20
%141 = OpFAdd %3 %139 %140
%142 = OpCompositeConstruct %12 %62 %62
%143 = OpCompositeConstruct %12 %26 %26
%144 = OpISub %12 %142 %143
%145 = OpCompositeConstruct %13 %124 %124 %124
%146 = OpCompositeConstruct %13 %125 %125 %125
%147 = OpISub %13 %145 %146
%148 = OpCompositeConstruct %3 %58 %58 %58 %58
%149 = OpCompositeConstruct %3 %20 %20 %20 %20
%150 = OpFSub %3 %148 %149
%151 = OpCompositeConstruct %12 %62 %62
%152 = OpCompositeConstruct %12 %26 %26
%153 = OpIMul %12 %151 %152
%154 = OpCompositeConstruct %13 %124 %124 %124
%155 = OpCompositeConstruct %13 %125 %125 %125
%156 = OpIMul %13 %154 %155
%157 = OpCompositeConstruct %3 %58 %58 %58 %58
%158 = OpCompositeConstruct %3 %20 %20 %20 %20
%159 = OpFMul %3 %157 %158
%160 = OpCompositeConstruct %12 %62 %62
%161 = OpCompositeConstruct %12 %26 %26
%162 = OpSDiv %12 %160 %161
%163 = OpCompositeConstruct %13 %124 %124 %124
%164 = OpCompositeConstruct %13 %125 %125 %125
%165 = OpUDiv %13 %163 %164
%166 = OpCompositeConstruct %3 %58 %58 %58 %58
%167 = OpCompositeConstruct %3 %20 %20 %20 %20
%168 = OpFDiv %3 %166 %167
%169 = OpCompositeConstruct %12 %62 %62
%170 = OpCompositeConstruct %12 %26 %26
%171 = OpSRem %12 %169 %170
%172 = OpCompositeConstruct %13 %124 %124 %124
%173 = OpCompositeConstruct %13 %125 %125 %125
%174 = OpUMod %13 %172 %173
%175 = OpCompositeConstruct %3 %58 %58 %58 %58
%176 = OpCompositeConstruct %3 %20 %20 %20 %20
%177 = OpFRem %3 %175 %176
OpBranch %178
%178 = OpLabel
%180 = OpCompositeConstruct %12 %62 %62
%181 = OpCompositeConstruct %12 %26 %26
%182 = OpIAdd %12 %180 %181
%183 = OpCompositeConstruct %12 %26 %26
%184 = OpCompositeConstruct %12 %62 %62
%185 = OpIAdd %12 %184 %183
%186 = OpCompositeConstruct %15 %124 %124
%187 = OpCompositeConstruct %15 %125 %125
%188 = OpIAdd %15 %186 %187
%189 = OpCompositeConstruct %15 %125 %125
%190 = OpCompositeConstruct %15 %124 %124
%191 = OpIAdd %15 %190 %189
%192 = OpCompositeConstruct %9 %58 %58
%193 = OpCompositeConstruct %9 %20 %20
%194 = OpFAdd %9 %192 %193
%195 = OpCompositeConstruct %9 %20 %20
%196 = OpCompositeConstruct %9 %58 %58
%197 = OpFAdd %9 %196 %195
%198 = OpCompositeConstruct %12 %62 %62
%199 = OpCompositeConstruct %12 %26 %26
%200 = OpISub %12 %198 %199
%201 = OpCompositeConstruct %12 %26 %26
%202 = OpCompositeConstruct %12 %62 %62
%203 = OpISub %12 %202 %201
%204 = OpCompositeConstruct %15 %124 %124
%205 = OpCompositeConstruct %15 %125 %125
%206 = OpISub %15 %204 %205
%207 = OpCompositeConstruct %15 %125 %125
%208 = OpCompositeConstruct %15 %124 %124
%209 = OpISub %15 %208 %207
%210 = OpCompositeConstruct %9 %58 %58
%211 = OpCompositeConstruct %9 %20 %20
%212 = OpFSub %9 %210 %211
%213 = OpCompositeConstruct %9 %20 %20
%214 = OpCompositeConstruct %9 %58 %58
%215 = OpFSub %9 %214 %213
%216 = OpCompositeConstruct %12 %62 %62
%217 = OpCompositeConstruct %12 %62 %62
%218 = OpCompositeConstruct %15 %124 %124
%219 = OpCompositeConstruct %15 %124 %124
%220 = OpCompositeConstruct %9 %58 %58
%221 = OpCompositeConstruct %9 %58 %58
%222 = OpCompositeConstruct %12 %62 %62
%223 = OpCompositeConstruct %12 %26 %26
%224 = OpSDiv %12 %222 %223
%225 = OpCompositeConstruct %12 %26 %26
%226 = OpCompositeConstruct %12 %62 %62
%227 = OpSDiv %12 %226 %225
%228 = OpCompositeConstruct %15 %124 %124
%229 = OpCompositeConstruct %15 %125 %125
%230 = OpUDiv %15 %228 %229
%231 = OpCompositeConstruct %15 %125 %125
%232 = OpCompositeConstruct %15 %124 %124
%233 = OpUDiv %15 %232 %231
%234 = OpCompositeConstruct %9 %58 %58
%235 = OpCompositeConstruct %9 %20 %20
%236 = OpFDiv %9 %234 %235
%237 = OpCompositeConstruct %9 %20 %20
%238 = OpCompositeConstruct %9 %58 %58
%239 = OpFDiv %9 %238 %237
%240 = OpCompositeConstruct %12 %62 %62
%241 = OpCompositeConstruct %12 %26 %26
%242 = OpSRem %12 %240 %241
%243 = OpCompositeConstruct %12 %26 %26
%244 = OpCompositeConstruct %12 %62 %62
%245 = OpSRem %12 %244 %243
%246 = OpCompositeConstruct %15 %124 %124
%247 = OpCompositeConstruct %15 %125 %125
%248 = OpUMod %15 %246 %247
%249 = OpCompositeConstruct %15 %125 %125
%250 = OpCompositeConstruct %15 %124 %124
%251 = OpUMod %15 %250 %249
%252 = OpCompositeConstruct %9 %58 %58
%253 = OpCompositeConstruct %9 %20 %20
%254 = OpFRem %9 %252 %253
%255 = OpCompositeConstruct %9 %20 %20
%256 = OpCompositeConstruct %9 %58 %58
%257 = OpFRem %9 %256 %255
OpBranch %179
%179 = OpLabel
%259 = OpCompositeExtract %10 %127 0
%260 = OpCompositeExtract %10 %127 0
%261 = OpFAdd %10 %259 %260
%262 = OpCompositeExtract %10 %127 1
%263 = OpCompositeExtract %10 %127 1
%264 = OpFAdd %10 %262 %263
%265 = OpCompositeExtract %10 %127 2
%266 = OpCompositeExtract %10 %127 2
%267 = OpFAdd %10 %265 %266
%258 = OpCompositeConstruct %16 %261 %264 %267
%269 = OpCompositeExtract %10 %127 0
%270 = OpCompositeExtract %10 %127 0
%271 = OpFSub %10 %269 %270
%272 = OpCompositeExtract %10 %127 1
%273 = OpCompositeExtract %10 %127 1
%274 = OpFSub %10 %272 %273
%275 = OpCompositeExtract %10 %127 2
%276 = OpCompositeExtract %10 %127 2
%277 = OpFSub %10 %275 %276
%268 = OpCompositeConstruct %16 %271 %274 %277
%278 = OpCompositeConstruct %10 %22 %22 %22
%279 = OpCompositeConstruct %10 %22 %22 %22
%280 = OpCompositeConstruct %10 %22 %22 %22
%281 = OpCompositeConstruct %16 %278 %279 %280
%282 = OpCompositeConstruct %10 %22 %22 %22
%283 = OpCompositeConstruct %10 %22 %22 %22
%284 = OpCompositeConstruct %10 %22 %22 %22
%285 = OpCompositeConstruct %16 %282 %283 %284
%286 = OpCompositeConstruct %3 %20 %20 %20 %20
%287 = OpMatrixTimesVector %10 %128 %286
%288 = OpCompositeConstruct %10 %58 %58 %58
%289 = OpVectorTimesMatrix %3 %288 %128
%290 = OpMatrixTimesMatrix %16 %128 %129
%114 = OpFunction %2 None %102
%113 = OpLabel
OpBranch %141
%141 = OpLabel
%142 = OpIAdd %12 %121 %122
%143 = OpIAdd %13 %124 %126
%144 = OpFAdd %3 %127 %128
%145 = OpISub %12 %121 %122
%146 = OpISub %13 %124 %126
%147 = OpFSub %3 %127 %128
%148 = OpIMul %12 %121 %122
%149 = OpIMul %13 %124 %126
%150 = OpFMul %3 %127 %128
%151 = OpSDiv %12 %121 %122
%152 = OpUDiv %13 %124 %126
%153 = OpFDiv %3 %127 %128
%154 = OpSRem %12 %121 %122
%155 = OpUMod %13 %124 %126
%156 = OpFRem %3 %127 %128
OpBranch %157
%157 = OpLabel
%159 = OpIAdd %12 %121 %122
%160 = OpIAdd %12 %121 %122
%161 = OpIAdd %15 %130 %131
%162 = OpIAdd %15 %130 %131
%163 = OpFAdd %9 %59 %60
%164 = OpFAdd %9 %59 %60
%165 = OpISub %12 %121 %122
%166 = OpISub %12 %121 %122
%167 = OpISub %15 %130 %131
%168 = OpISub %15 %130 %131
%169 = OpFSub %9 %59 %60
%170 = OpFSub %9 %59 %60
%171 = OpSDiv %12 %121 %122
%172 = OpSDiv %12 %121 %122
%173 = OpUDiv %15 %130 %131
%174 = OpUDiv %15 %130 %131
%175 = OpFDiv %9 %59 %60
%176 = OpFDiv %9 %59 %60
%177 = OpSRem %12 %121 %122
%178 = OpSRem %12 %121 %122
%179 = OpUMod %15 %130 %131
%180 = OpUMod %15 %130 %131
%181 = OpFRem %9 %59 %60
%182 = OpFRem %9 %59 %60
OpBranch %158
%158 = OpLabel
%184 = OpCompositeExtract %10 %135 0
%185 = OpCompositeExtract %10 %135 0
%186 = OpFAdd %10 %184 %185
%187 = OpCompositeExtract %10 %135 1
%188 = OpCompositeExtract %10 %135 1
%189 = OpFAdd %10 %187 %188
%190 = OpCompositeExtract %10 %135 2
%191 = OpCompositeExtract %10 %135 2
%192 = OpFAdd %10 %190 %191
%183 = OpCompositeConstruct %16 %186 %189 %192
%194 = OpCompositeExtract %10 %135 0
%195 = OpCompositeExtract %10 %135 0
%196 = OpFSub %10 %194 %195
%197 = OpCompositeExtract %10 %135 1
%198 = OpCompositeExtract %10 %135 1
%199 = OpFSub %10 %197 %198
%200 = OpCompositeExtract %10 %135 2
%201 = OpCompositeExtract %10 %135 2
%202 = OpFSub %10 %200 %201
%193 = OpCompositeConstruct %16 %196 %199 %202
%203 = OpMatrixTimesVector %10 %138 %128
%204 = OpVectorTimesMatrix %3 %139 %138
%205 = OpMatrixTimesMatrix %16 %138 %140
OpReturn
OpFunctionEnd
%292 = OpFunction %2 None %107
%291 = OpLabel
OpBranch %297
%297 = OpLabel
%298 = OpCompositeConstruct %12 %293 %293
%299 = OpCompositeConstruct %13 %294 %294 %294
%300 = OpCompositeConstruct %12 %62 %62
%301 = OpCompositeConstruct %12 %26 %26
%302 = OpBitwiseOr %12 %300 %301
%303 = OpCompositeConstruct %13 %124 %124 %124
%304 = OpCompositeConstruct %13 %125 %125 %125
%305 = OpBitwiseOr %13 %303 %304
%306 = OpCompositeConstruct %12 %62 %62
%307 = OpCompositeConstruct %12 %26 %26
%308 = OpBitwiseAnd %12 %306 %307
%309 = OpCompositeConstruct %13 %124 %124 %124
%310 = OpCompositeConstruct %13 %125 %125 %125
%311 = OpBitwiseAnd %13 %309 %310
%312 = OpCompositeConstruct %12 %62 %62
%313 = OpCompositeConstruct %12 %26 %26
%314 = OpBitwiseXor %12 %312 %313
%315 = OpCompositeConstruct %13 %124 %124 %124
%316 = OpCompositeConstruct %13 %125 %125 %125
%317 = OpBitwiseXor %13 %315 %316
%318 = OpCompositeConstruct %12 %62 %62
%319 = OpCompositeConstruct %15 %125 %125
%320 = OpShiftLeftLogical %12 %318 %319
%321 = OpCompositeConstruct %13 %124 %124 %124
%322 = OpCompositeConstruct %13 %125 %125 %125
%323 = OpShiftLeftLogical %13 %321 %322
%324 = OpCompositeConstruct %12 %62 %62
%325 = OpCompositeConstruct %15 %125 %125
%326 = OpShiftRightArithmetic %12 %324 %325
%327 = OpCompositeConstruct %13 %124 %124 %124
%328 = OpCompositeConstruct %13 %125 %125 %125
%329 = OpShiftRightLogical %13 %327 %328
%207 = OpFunction %2 None %102
%206 = OpLabel
OpBranch %214
%214 = OpLabel
%215 = OpBitwiseOr %12 %121 %122
%216 = OpBitwiseOr %13 %124 %126
%217 = OpBitwiseAnd %12 %121 %122
%218 = OpBitwiseAnd %13 %124 %126
%219 = OpBitwiseXor %12 %121 %122
%220 = OpBitwiseXor %13 %124 %126
%221 = OpShiftLeftLogical %12 %121 %131
%222 = OpShiftLeftLogical %13 %124 %126
%223 = OpShiftRightArithmetic %12 %121 %131
%224 = OpShiftRightLogical %13 %124 %126
OpReturn
OpFunctionEnd
%331 = OpFunction %2 None %107
%330 = OpLabel
OpBranch %332
%332 = OpLabel
%333 = OpCompositeConstruct %12 %62 %62
%334 = OpCompositeConstruct %12 %26 %26
%335 = OpIEqual %11 %333 %334
%336 = OpCompositeConstruct %13 %124 %124 %124
%337 = OpCompositeConstruct %13 %125 %125 %125
%338 = OpIEqual %100 %336 %337
%339 = OpCompositeConstruct %3 %58 %58 %58 %58
%340 = OpCompositeConstruct %3 %20 %20 %20 %20
%341 = OpFOrdEqual %7 %339 %340
%342 = OpCompositeConstruct %12 %62 %62
%343 = OpCompositeConstruct %12 %26 %26
%344 = OpINotEqual %11 %342 %343
%345 = OpCompositeConstruct %13 %124 %124 %124
%346 = OpCompositeConstruct %13 %125 %125 %125
%347 = OpINotEqual %100 %345 %346
%348 = OpCompositeConstruct %3 %58 %58 %58 %58
%349 = OpCompositeConstruct %3 %20 %20 %20 %20
%350 = OpFOrdNotEqual %7 %348 %349
%351 = OpCompositeConstruct %12 %62 %62
%352 = OpCompositeConstruct %12 %26 %26
%353 = OpSLessThan %11 %351 %352
%354 = OpCompositeConstruct %13 %124 %124 %124
%355 = OpCompositeConstruct %13 %125 %125 %125
%356 = OpULessThan %100 %354 %355
%357 = OpCompositeConstruct %3 %58 %58 %58 %58
%358 = OpCompositeConstruct %3 %20 %20 %20 %20
%359 = OpFOrdLessThan %7 %357 %358
%360 = OpCompositeConstruct %12 %62 %62
%361 = OpCompositeConstruct %12 %26 %26
%362 = OpSLessThanEqual %11 %360 %361
%363 = OpCompositeConstruct %13 %124 %124 %124
%364 = OpCompositeConstruct %13 %125 %125 %125
%365 = OpULessThanEqual %100 %363 %364
%366 = OpCompositeConstruct %3 %58 %58 %58 %58
%367 = OpCompositeConstruct %3 %20 %20 %20 %20
%368 = OpFOrdLessThanEqual %7 %366 %367
%369 = OpCompositeConstruct %12 %62 %62
%370 = OpCompositeConstruct %12 %26 %26
%371 = OpSGreaterThan %11 %369 %370
%372 = OpCompositeConstruct %13 %124 %124 %124
%373 = OpCompositeConstruct %13 %125 %125 %125
%374 = OpUGreaterThan %100 %372 %373
%375 = OpCompositeConstruct %3 %58 %58 %58 %58
%376 = OpCompositeConstruct %3 %20 %20 %20 %20
%377 = OpFOrdGreaterThan %7 %375 %376
%378 = OpCompositeConstruct %12 %62 %62
%379 = OpCompositeConstruct %12 %26 %26
%380 = OpSGreaterThanEqual %11 %378 %379
%381 = OpCompositeConstruct %13 %124 %124 %124
%382 = OpCompositeConstruct %13 %125 %125 %125
%383 = OpUGreaterThanEqual %100 %381 %382
%384 = OpCompositeConstruct %3 %58 %58 %58 %58
%385 = OpCompositeConstruct %3 %20 %20 %20 %20
%386 = OpFOrdGreaterThanEqual %7 %384 %385
%226 = OpFunction %2 None %102
%225 = OpLabel
OpBranch %227
%227 = OpLabel
%228 = OpIEqual %11 %121 %122
%229 = OpIEqual %95 %124 %126
%230 = OpFOrdEqual %7 %127 %128
%231 = OpINotEqual %11 %121 %122
%232 = OpINotEqual %95 %124 %126
%233 = OpFOrdNotEqual %7 %127 %128
%234 = OpSLessThan %11 %121 %122
%235 = OpULessThan %95 %124 %126
%236 = OpFOrdLessThan %7 %127 %128
%237 = OpSLessThanEqual %11 %121 %122
%238 = OpULessThanEqual %95 %124 %126
%239 = OpFOrdLessThanEqual %7 %127 %128
%240 = OpSGreaterThan %11 %121 %122
%241 = OpUGreaterThan %95 %124 %126
%242 = OpFOrdGreaterThan %7 %127 %128
%243 = OpSGreaterThanEqual %11 %121 %122
%244 = OpUGreaterThanEqual %95 %124 %126
%245 = OpFOrdGreaterThanEqual %7 %127 %128
OpReturn
OpFunctionEnd
%394 = OpFunction %2 None %107
%393 = OpLabel
%387 = OpVariable %388 Function %389
%390 = OpVariable %391 Function %392
OpBranch %395
%395 = OpLabel
OpStore %387 %26
%396 = OpLoad %6 %387
%397 = OpIAdd %6 %396 %26
OpStore %387 %397
%398 = OpLoad %6 %387
%399 = OpISub %6 %398 %26
OpStore %387 %399
%400 = OpLoad %6 %387
%401 = OpLoad %6 %387
%402 = OpIMul %6 %401 %400
OpStore %387 %402
%403 = OpLoad %6 %387
%404 = OpLoad %6 %387
%405 = OpSDiv %6 %404 %403
OpStore %387 %405
%406 = OpLoad %6 %387
%407 = OpSRem %6 %406 %26
OpStore %387 %407
%408 = OpLoad %6 %387
%409 = OpBitwiseAnd %6 %408 %32
OpStore %387 %409
%410 = OpLoad %6 %387
%411 = OpBitwiseOr %6 %410 %32
OpStore %387 %411
%412 = OpLoad %6 %387
%413 = OpBitwiseXor %6 %412 %32
OpStore %387 %413
%414 = OpLoad %6 %387
%415 = OpShiftLeftLogical %6 %414 %124
OpStore %387 %415
%416 = OpLoad %6 %387
%417 = OpShiftRightArithmetic %6 %416 %125
OpStore %387 %417
%418 = OpLoad %6 %387
%419 = OpIAdd %6 %418 %26
OpStore %387 %419
%420 = OpLoad %6 %387
%421 = OpISub %6 %420 %26
OpStore %387 %421
OpStore %390 %392
%423 = OpAccessChain %422 %390 %125
%424 = OpLoad %6 %423
%425 = OpIAdd %6 %424 %26
%426 = OpAccessChain %422 %390 %125
OpStore %426 %425
%427 = OpAccessChain %422 %390 %125
%428 = OpLoad %6 %427
%429 = OpISub %6 %428 %26
%430 = OpAccessChain %422 %390 %125
OpStore %430 %429
%247 = OpFunction %2 None %102
%246 = OpLabel
%249 = OpVariable %250 Function %26
%251 = OpVariable %252 Function %248
OpBranch %253
%253 = OpLabel
%254 = OpLoad %6 %249
%255 = OpIAdd %6 %254 %26
OpStore %249 %255
%256 = OpLoad %6 %249
%257 = OpISub %6 %256 %26
OpStore %249 %257
%258 = OpLoad %6 %249
%259 = OpLoad %6 %249
%260 = OpIMul %6 %259 %258
OpStore %249 %260
%261 = OpLoad %6 %249
%262 = OpLoad %6 %249
%263 = OpSDiv %6 %262 %261
OpStore %249 %263
%264 = OpLoad %6 %249
%265 = OpSRem %6 %264 %26
OpStore %249 %265
%266 = OpLoad %6 %249
%267 = OpBitwiseAnd %6 %266 %32
OpStore %249 %267
%268 = OpLoad %6 %249
%269 = OpBitwiseOr %6 %268 %32
OpStore %249 %269
%270 = OpLoad %6 %249
%271 = OpBitwiseXor %6 %270 %32
OpStore %249 %271
%272 = OpLoad %6 %249
%273 = OpShiftLeftLogical %6 %272 %123
OpStore %249 %273
%274 = OpLoad %6 %249
%275 = OpShiftRightArithmetic %6 %274 %125
OpStore %249 %275
%276 = OpLoad %6 %249
%277 = OpIAdd %6 %276 %26
OpStore %249 %277
%278 = OpLoad %6 %249
%279 = OpISub %6 %278 %26
OpStore %249 %279
%281 = OpAccessChain %280 %251 %125
%282 = OpLoad %6 %281
%283 = OpIAdd %6 %282 %26
%284 = OpAccessChain %280 %251 %125
OpStore %284 %283
%285 = OpAccessChain %280 %251 %125
%286 = OpLoad %6 %285
%287 = OpISub %6 %286 %26
%288 = OpAccessChain %280 %251 %125
OpStore %288 %287
OpReturn
OpFunctionEnd
%432 = OpFunction %2 None %107
%431 = OpLabel
OpBranch %437
%437 = OpLabel
%290 = OpFunction %2 None %102
%289 = OpLabel
OpBranch %295
%295 = OpLabel
OpReturn
OpFunctionEnd
%439 = OpFunction %2 None %107
%438 = OpLabel
OpBranch %440
%440 = OpLabel
%441 = OpFunctionCall %3 %29
%442 = OpFunctionCall %3 %57
%443 = OpCompositeConstruct %10 %20 %20 %20
%444 = OpFunctionCall %10 %97 %443
%445 = OpFunctionCall %2 %106
%446 = OpFunctionCall %2 %119
%447 = OpFunctionCall %2 %292
%448 = OpFunctionCall %2 %331
%449 = OpFunctionCall %2 %394
%297 = OpFunction %2 None %102
%296 = OpLabel
OpBranch %299
%299 = OpLabel
%300 = OpFunctionCall %3 %29
%301 = OpFunctionCall %3 %57
%302 = OpFunctionCall %10 %92 %298
%303 = OpFunctionCall %2 %101
%304 = OpFunctionCall %2 %114
%305 = OpFunctionCall %2 %207
%306 = OpFunctionCall %2 %226
%307 = OpFunctionCall %2 %247
OpReturn
OpFunctionEnd

View File

@ -73,6 +73,7 @@ OpDecorate %24 BuiltIn Position
%31 = OpTypePointer Uniform %10
%33 = OpTypePointer Uniform %12
%35 = OpConstant %4 1.0
%36 = OpConstantComposite %13 %35 %35 %35 %35
%38 = OpTypePointer Uniform %4
%39 = OpConstant %9 1
%26 = OpFunction %2 None %27
@ -80,12 +81,11 @@ OpDecorate %24 BuiltIn Position
%30 = OpAccessChain %28 %14 %29
%32 = OpAccessChain %31 %17 %29
%34 = OpAccessChain %33 %20 %29
OpBranch %36
%36 = OpLabel
%37 = OpCompositeConstruct %13 %35 %35 %35 %35
OpBranch %37
%37 = OpLabel
%40 = OpAccessChain %38 %30 %39
%41 = OpLoad %4 %40
%42 = OpVectorTimesScalar %13 %37 %41
%42 = OpVectorTimesScalar %13 %36 %41
%43 = OpAccessChain %38 %32 %39
%44 = OpLoad %4 %43
%45 = OpVectorTimesScalar %13 %42 %44

View File

@ -10,8 +10,8 @@ OpMemoryModel Logical GLSL450
OpMemberName %7 0 "arr"
OpName %7 "DynamicArray"
OpName %8 "dynamic_array"
OpName %10 "v"
OpName %14 "f"
OpName %11 "f"
OpName %14 "v"
OpName %22 "i"
OpName %23 "v"
OpName %24 "index_unsized"
@ -31,22 +31,22 @@ OpDecorate %8 Binding 0
%7 = OpTypeStruct %6
%9 = OpTypePointer StorageBuffer %7
%8 = OpVariable %9 StorageBuffer
%11 = OpTypePointer Function %3
%12 = OpConstantNull %3
%15 = OpTypeFunction %2
%16 = OpConstant %4 10
%12 = OpTypeFunction %2
%13 = OpConstant %4 10
%15 = OpTypePointer Function %3
%16 = OpConstantNull %3
%18 = OpTypePointer Function %4
%19 = OpConstant %5 0
%25 = OpTypeFunction %2 %4 %5
%27 = OpTypePointer StorageBuffer %6
%28 = OpTypePointer StorageBuffer %5
%14 = OpFunction %2 None %15
%13 = OpLabel
%10 = OpVariable %11 Function %12
%11 = OpFunction %2 None %12
%10 = OpLabel
%14 = OpVariable %15 Function %16
OpBranch %17
%17 = OpLabel
%20 = OpAccessChain %18 %10 %19
OpStore %20 %16
%20 = OpAccessChain %18 %14 %19
OpStore %20 %13
OpReturn
OpFunctionEnd
%24 = OpFunction %2 None %25

View File

@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 101
; Bound: 100
OpCapability Shader
OpCapability ImageQuery
OpCapability Linkage
@ -17,11 +17,11 @@ OpName %24 "in_uniform"
OpName %27 "image_2d_array"
OpName %29 "in_workgroup"
OpName %31 "in_private"
OpName %34 "in_function"
OpName %38 "c"
OpName %39 "i"
OpName %40 "l"
OpName %41 "mock_function"
OpName %35 "c"
OpName %36 "i"
OpName %37 "l"
OpName %38 "mock_function"
OpName %52 "in_function"
OpDecorate %5 ArrayStride 16
OpMemberDecorate %8 0 Offset 0
OpDecorate %9 ArrayStride 16
@ -72,78 +72,76 @@ OpDecorate %27 Binding 2
%32 = OpTypePointer Private %15
%33 = OpConstantNull %15
%31 = OpVariable %32 Private %33
%35 = OpTypePointer Function %19
%36 = OpConstantNull %19
%42 = OpTypeFunction %3 %17 %18 %18
%43 = OpTypePointer StorageBuffer %8
%44 = OpConstant %7 0
%46 = OpTypePointer Uniform %11
%49 = OpConstant %4 0.707
%50 = OpConstant %4 0.0
%51 = OpConstant %4 1.0
%56 = OpTypePointer StorageBuffer %5
%57 = OpTypePointer StorageBuffer %3
%60 = OpTypePointer Uniform %9
%61 = OpTypePointer Uniform %3
%65 = OpTypeVector %18 3
%67 = OpTypeBool
%68 = OpConstantNull %3
%74 = OpTypeVector %67 3
%81 = OpTypePointer Workgroup %4
%82 = OpConstant %7 29
%88 = OpTypePointer Private %4
%89 = OpConstant %7 39
%95 = OpTypePointer Function %3
%96 = OpConstant %7 1
%41 = OpFunction %3 None %42
%38 = OpFunctionParameter %17
%39 = OpFunctionParameter %18
%40 = OpFunctionParameter %18
%37 = OpLabel
%34 = OpVariable %35 Function %36
%45 = OpAccessChain %43 %21 %44
%47 = OpAccessChain %46 %24 %44
%48 = OpLoad %12 %27
OpBranch %52
%52 = OpLabel
%53 = OpCompositeConstruct %3 %49 %50 %50 %51
%54 = OpCompositeConstruct %3 %50 %49 %50 %51
%55 = OpCompositeConstruct %19 %53 %54
OpStore %34 %55
%58 = OpAccessChain %57 %45 %44 %39
%59 = OpLoad %3 %58
%62 = OpAccessChain %61 %47 %44 %39
%63 = OpLoad %3 %62
%64 = OpFAdd %3 %59 %63
%66 = OpCompositeConstruct %65 %38 %39
%69 = OpImageQueryLevels %18 %48
%70 = OpULessThan %67 %40 %69
OpSelectionMerge %71 None
OpBranchConditional %70 %72 %71
%72 = OpLabel
%73 = OpImageQuerySizeLod %65 %48 %40
%75 = OpULessThan %74 %66 %73
%76 = OpAll %67 %75
OpBranchConditional %76 %77 %71
%77 = OpLabel
%78 = OpImageFetch %3 %48 %66 Lod %40
OpBranch %71
%39 = OpTypeFunction %3 %17 %18 %18
%40 = OpTypePointer StorageBuffer %8
%41 = OpConstant %7 0
%43 = OpTypePointer Uniform %11
%46 = OpConstant %4 0.707
%47 = OpConstant %4 0.0
%48 = OpConstant %4 1.0
%49 = OpConstantComposite %3 %46 %47 %47 %48
%50 = OpConstantComposite %3 %47 %46 %47 %48
%51 = OpConstantComposite %19 %49 %50
%53 = OpTypePointer Function %19
%55 = OpTypePointer StorageBuffer %5
%56 = OpTypePointer StorageBuffer %3
%59 = OpTypePointer Uniform %9
%60 = OpTypePointer Uniform %3
%64 = OpTypeVector %18 3
%66 = OpTypeBool
%67 = OpConstantNull %3
%73 = OpTypeVector %66 3
%80 = OpTypePointer Workgroup %4
%81 = OpConstant %7 29
%87 = OpTypePointer Private %4
%88 = OpConstant %7 39
%94 = OpTypePointer Function %3
%95 = OpConstant %7 1
%38 = OpFunction %3 None %39
%35 = OpFunctionParameter %17
%36 = OpFunctionParameter %18
%37 = OpFunctionParameter %18
%34 = OpLabel
%52 = OpVariable %53 Function %51
%42 = OpAccessChain %40 %21 %41
%44 = OpAccessChain %43 %24 %41
%45 = OpLoad %12 %27
OpBranch %54
%54 = OpLabel
%57 = OpAccessChain %56 %42 %41 %36
%58 = OpLoad %3 %57
%61 = OpAccessChain %60 %44 %41 %36
%62 = OpLoad %3 %61
%63 = OpFAdd %3 %58 %62
%65 = OpCompositeConstruct %64 %35 %36
%68 = OpImageQueryLevels %18 %45
%69 = OpULessThan %66 %37 %68
OpSelectionMerge %70 None
OpBranchConditional %69 %71 %70
%71 = OpLabel
%79 = OpPhi %3 %68 %52 %68 %72 %78 %77
%80 = OpFAdd %3 %64 %79
%83 = OpExtInst %7 %1 UMin %39 %82
%84 = OpAccessChain %81 %29 %83
%85 = OpLoad %4 %84
%86 = OpCompositeConstruct %3 %85 %85 %85 %85
%87 = OpFAdd %3 %80 %86
%90 = OpExtInst %7 %1 UMin %39 %89
%91 = OpAccessChain %88 %31 %90
%92 = OpLoad %4 %91
%93 = OpCompositeConstruct %3 %92 %92 %92 %92
%94 = OpFAdd %3 %87 %93
%97 = OpExtInst %7 %1 UMin %39 %96
%98 = OpAccessChain %95 %34 %97
%99 = OpLoad %3 %98
%100 = OpFAdd %3 %94 %99
OpReturnValue %100
%72 = OpImageQuerySizeLod %64 %45 %37
%74 = OpULessThan %73 %65 %72
%75 = OpAll %66 %74
OpBranchConditional %75 %76 %70
%76 = OpLabel
%77 = OpImageFetch %3 %45 %65 Lod %37
OpBranch %70
%70 = OpLabel
%78 = OpPhi %3 %67 %54 %67 %71 %77 %76
%79 = OpFAdd %3 %63 %78
%82 = OpExtInst %7 %1 UMin %36 %81
%83 = OpAccessChain %80 %29 %82
%84 = OpLoad %4 %83
%85 = OpCompositeConstruct %3 %84 %84 %84 %84
%86 = OpFAdd %3 %79 %85
%89 = OpExtInst %7 %1 UMin %36 %88
%90 = OpAccessChain %87 %31 %89
%91 = OpLoad %4 %90
%92 = OpCompositeConstruct %3 %91 %91 %91 %91
%93 = OpFAdd %3 %86 %92
%96 = OpExtInst %7 %1 UMin %36 %95
%97 = OpAccessChain %94 %52 %96
%98 = OpLoad %3 %97
%99 = OpFAdd %3 %93 %98
OpReturnValue %99
OpFunctionEnd

View File

@ -68,6 +68,7 @@ OpDecorate %59 Location 0
%52 = OpTypeBool
%59 = OpVariable %23 Output
%61 = OpConstant %3 0.5
%62 = OpConstantComposite %5 %26 %61 %26 %61
%24 = OpFunction %2 None %25
%14 = OpLabel
%17 = OpLoad %4 %15
@ -110,9 +111,8 @@ OpReturn
OpFunctionEnd
%60 = OpFunction %2 None %25
%58 = OpLabel
OpBranch %62
%62 = OpLabel
%63 = OpCompositeConstruct %5 %26 %61 %26 %61
OpStore %59 %63
OpBranch %63
%63 = OpLabel
OpStore %59 %62
OpReturn
OpFunctionEnd

View File

@ -7,8 +7,8 @@ OpCapability RayQueryKHR
OpExtension "SPV_KHR_ray_query"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %43 "main" %15 %17
OpExecutionMode %43 LocalSize 1 1 1
OpEntryPoint GLCompute %41 "main" %15 %17
OpExecutionMode %41 LocalSize 1 1 1
OpMemberDecorate %7 0 Offset 0
OpMemberDecorate %7 1 Offset 16
OpMemberDecorate %11 0 Offset 0
@ -60,14 +60,17 @@ OpMemberDecorate %18 0 Offset 0
%25 = OpConstant %6 1.0
%26 = OpConstant %6 2.4
%27 = OpConstant %6 0.0
%41 = OpTypePointer Function %13
%44 = OpTypeFunction %2
%46 = OpTypePointer StorageBuffer %7
%47 = OpConstant %4 0
%49 = OpConstant %4 4
%50 = OpConstant %4 255
%51 = OpConstant %6 0.1
%52 = OpConstant %6 100.0
%42 = OpTypeFunction %2
%44 = OpTypePointer StorageBuffer %7
%45 = OpConstant %4 0
%47 = OpConstantComposite %5 %27 %25 %27
%48 = OpConstant %4 4
%49 = OpConstant %4 255
%50 = OpConstant %6 0.1
%51 = OpConstant %6 100.0
%52 = OpConstantComposite %5 %27 %27 %27
%53 = OpConstantComposite %14 %48 %49 %50 %51 %52 %47
%55 = OpTypePointer Function %13
%72 = OpConstant %4 1
%85 = OpTypePointer StorageBuffer %4
%90 = OpTypePointer StorageBuffer %5
@ -90,29 +93,26 @@ OpBranch %28
%39 = OpExtInst %5 %1 Normalize %38
OpReturnValue %39
OpFunctionEnd
%43 = OpFunction %2 None %44
%42 = OpLabel
%40 = OpVariable %41 Function
%45 = OpLoad %3 %15
%48 = OpAccessChain %46 %17 %47
OpBranch %53
%53 = OpLabel
%54 = OpCompositeConstruct %5 %27 %25 %27
%55 = OpCompositeConstruct %5 %27 %27 %27
%56 = OpCompositeConstruct %14 %49 %50 %51 %52 %55 %54
%57 = OpCompositeExtract %4 %56 0
%58 = OpCompositeExtract %4 %56 1
%59 = OpCompositeExtract %6 %56 2
%60 = OpCompositeExtract %6 %56 3
%61 = OpCompositeExtract %5 %56 4
%62 = OpCompositeExtract %5 %56 5
OpRayQueryInitializeKHR %40 %45 %57 %58 %61 %59 %62 %60
%41 = OpFunction %2 None %42
%40 = OpLabel
%54 = OpVariable %55 Function
%43 = OpLoad %3 %15
%46 = OpAccessChain %44 %17 %45
OpBranch %56
%56 = OpLabel
%57 = OpCompositeExtract %4 %53 0
%58 = OpCompositeExtract %4 %53 1
%59 = OpCompositeExtract %6 %53 2
%60 = OpCompositeExtract %6 %53 3
%61 = OpCompositeExtract %5 %53 4
%62 = OpCompositeExtract %5 %53 5
OpRayQueryInitializeKHR %54 %43 %57 %58 %61 %59 %62 %60
OpBranch %63
%63 = OpLabel
OpLoopMerge %64 %66 None
OpBranch %65
%65 = OpLabel
%67 = OpRayQueryProceedKHR %9 %40
%67 = OpRayQueryProceedKHR %9 %54
OpSelectionMerge %68 None
OpBranchConditional %67 %68 %69
%69 = OpLabel
@ -126,27 +126,27 @@ OpBranch %66
%66 = OpLabel
OpBranch %63
%64 = OpLabel
%73 = OpRayQueryGetIntersectionTypeKHR %4 %40 %72
%74 = OpRayQueryGetIntersectionInstanceCustomIndexKHR %4 %40 %72
%75 = OpRayQueryGetIntersectionInstanceIdKHR %4 %40 %72
%76 = OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR %4 %40 %72
%77 = OpRayQueryGetIntersectionGeometryIndexKHR %4 %40 %72
%78 = OpRayQueryGetIntersectionPrimitiveIndexKHR %4 %40 %72
%79 = OpRayQueryGetIntersectionTKHR %6 %40 %72
%80 = OpRayQueryGetIntersectionBarycentricsKHR %8 %40 %72
%81 = OpRayQueryGetIntersectionFrontFaceKHR %9 %40 %72
%82 = OpRayQueryGetIntersectionObjectToWorldKHR %10 %40 %72
%83 = OpRayQueryGetIntersectionWorldToObjectKHR %10 %40 %72
%73 = OpRayQueryGetIntersectionTypeKHR %4 %54 %72
%74 = OpRayQueryGetIntersectionInstanceCustomIndexKHR %4 %54 %72
%75 = OpRayQueryGetIntersectionInstanceIdKHR %4 %54 %72
%76 = OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR %4 %54 %72
%77 = OpRayQueryGetIntersectionGeometryIndexKHR %4 %54 %72
%78 = OpRayQueryGetIntersectionPrimitiveIndexKHR %4 %54 %72
%79 = OpRayQueryGetIntersectionTKHR %6 %54 %72
%80 = OpRayQueryGetIntersectionBarycentricsKHR %8 %54 %72
%81 = OpRayQueryGetIntersectionFrontFaceKHR %9 %54 %72
%82 = OpRayQueryGetIntersectionObjectToWorldKHR %10 %54 %72
%83 = OpRayQueryGetIntersectionWorldToObjectKHR %10 %54 %72
%84 = OpCompositeConstruct %11 %73 %79 %74 %75 %76 %77 %78 %80 %81 %82 %83
%86 = OpCompositeExtract %4 %84 0
%87 = OpIEqual %9 %86 %47
%88 = OpSelect %4 %87 %72 %47
%89 = OpAccessChain %85 %48 %47
%87 = OpIEqual %9 %86 %45
%88 = OpSelect %4 %87 %72 %45
%89 = OpAccessChain %85 %46 %45
OpStore %89 %88
%91 = OpCompositeExtract %6 %84 1
%92 = OpVectorTimesScalar %5 %54 %91
%92 = OpVectorTimesScalar %5 %47 %91
%93 = OpFunctionCall %5 %23 %92 %84
%94 = OpAccessChain %90 %48 %72
%94 = OpAccessChain %90 %46 %72
OpStore %94 %93
OpReturn
OpFunctionEnd

View File

@ -1,16 +1,16 @@
; SPIR-V
; Version: 1.2
; Generator: rspirv
; Bound: 267
; Bound: 265
OpCapability Shader
OpExtension "SPV_KHR_storage_buffer_storage_class"
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %87 "vs_main" %77 %80 %82 %84 %86
OpEntryPoint Fragment %147 "fs_main" %138 %141 %144 %146
OpEntryPoint Fragment %214 "fs_main_without_storage" %207 %209 %211 %213
OpExecutionMode %147 OriginUpperLeft
OpExecutionMode %214 OriginUpperLeft
OpEntryPoint Vertex %84 "vs_main" %74 %77 %79 %81 %83
OpEntryPoint Fragment %142 "fs_main" %133 %136 %139 %141
OpEntryPoint Fragment %210 "fs_main_without_storage" %203 %205 %207 %209
OpExecutionMode %142 OriginUpperLeft
OpExecutionMode %210 OriginUpperLeft
OpMemberName %8 0 "view_proj"
OpMemberName %8 1 "num_lights"
OpName %8 "Globals"
@ -36,25 +36,25 @@ OpName %38 "sampler_shadow"
OpName %41 "light_id"
OpName %42 "homogeneous_coords"
OpName %43 "fetch_shadow"
OpName %73 "out"
OpName %77 "position"
OpName %80 "normal"
OpName %82 "proj_position"
OpName %84 "world_normal"
OpName %86 "world_position"
OpName %87 "vs_main"
OpName %131 "color"
OpName %133 "i"
OpName %138 "proj_position"
OpName %141 "world_normal"
OpName %144 "world_position"
OpName %147 "fs_main"
OpName %203 "color"
OpName %204 "i"
OpName %207 "proj_position"
OpName %209 "world_normal"
OpName %211 "world_position"
OpName %214 "fs_main_without_storage"
OpName %74 "position"
OpName %77 "normal"
OpName %79 "proj_position"
OpName %81 "world_normal"
OpName %83 "world_position"
OpName %84 "vs_main"
OpName %91 "out"
OpName %133 "proj_position"
OpName %136 "world_normal"
OpName %139 "world_position"
OpName %142 "fs_main"
OpName %149 "color"
OpName %150 "i"
OpName %203 "proj_position"
OpName %205 "world_normal"
OpName %207 "world_position"
OpName %210 "fs_main_without_storage"
OpName %217 "color"
OpName %218 "i"
OpMemberDecorate %8 0 Offset 0
OpMemberDecorate %8 0 ColMajor
OpMemberDecorate %8 0 MatrixStride 16
@ -94,19 +94,19 @@ OpDecorate %36 DescriptorSet 0
OpDecorate %36 Binding 2
OpDecorate %38 DescriptorSet 0
OpDecorate %38 Binding 3
OpDecorate %77 Location 0
OpDecorate %80 Location 1
OpDecorate %82 BuiltIn Position
OpDecorate %84 Location 0
OpDecorate %86 Location 1
OpDecorate %138 BuiltIn FragCoord
OpDecorate %74 Location 0
OpDecorate %77 Location 1
OpDecorate %79 BuiltIn Position
OpDecorate %81 Location 0
OpDecorate %83 Location 1
OpDecorate %133 BuiltIn FragCoord
OpDecorate %136 Location 0
OpDecorate %139 Location 1
OpDecorate %141 Location 0
OpDecorate %144 Location 1
OpDecorate %146 Location 0
OpDecorate %207 BuiltIn FragCoord
OpDecorate %203 BuiltIn FragCoord
OpDecorate %205 Location 0
OpDecorate %207 Location 1
OpDecorate %209 Location 0
OpDecorate %211 Location 1
OpDecorate %213 Location 0
%2 = OpTypeVoid
%5 = OpTypeFloat 32
%4 = OpTypeVector %5 4
@ -150,22 +150,24 @@ OpDecorate %213 Location 0
%48 = OpConstant %5 1.0
%49 = OpConstant %5 0.5
%50 = OpConstant %5 -0.5
%53 = OpTypeBool
%51 = OpConstantComposite %21 %49 %50
%52 = OpConstantComposite %21 %49 %49
%55 = OpTypeBool
%68 = OpTypeSampledImage %19
%74 = OpTypePointer Function %11
%75 = OpConstantNull %11
%78 = OpTypePointer Input %12
%77 = OpVariable %78 Input
%80 = OpVariable %78 Input
%83 = OpTypePointer Output %4
%82 = OpVariable %83 Output
%85 = OpTypePointer Output %10
%84 = OpVariable %85 Output
%86 = OpVariable %83 Output
%88 = OpTypeFunction %2
%89 = OpTypePointer Uniform %8
%90 = OpConstant %7 0
%92 = OpTypePointer Uniform %9
%75 = OpTypePointer Input %12
%74 = OpVariable %75 Input
%77 = OpVariable %75 Input
%80 = OpTypePointer Output %4
%79 = OpVariable %80 Output
%82 = OpTypePointer Output %10
%81 = OpVariable %82 Output
%83 = OpVariable %80 Output
%85 = OpTypeFunction %2
%86 = OpTypePointer Uniform %8
%87 = OpConstant %7 0
%89 = OpTypePointer Uniform %9
%92 = OpTypePointer Function %11
%93 = OpConstantNull %11
%95 = OpTypePointer Uniform %3
%102 = OpTypePointer Function %10
%110 = OpTypeVector %13 3
@ -173,72 +175,68 @@ OpDecorate %213 Location 0
%116 = OpTypePointer Function %4
%117 = OpConstant %7 2
%125 = OpTypePointer Output %5
%132 = OpConstantNull %10
%134 = OpTypePointer Function %7
%135 = OpConstantNull %7
%139 = OpTypePointer Input %4
%138 = OpVariable %139 Input
%142 = OpTypePointer Input %10
%141 = OpVariable %142 Input
%144 = OpVariable %139 Input
%146 = OpVariable %83 Output
%150 = OpTypePointer StorageBuffer %16
%162 = OpTypePointer Uniform %6
%163 = OpTypePointer Uniform %7
%173 = OpTypePointer StorageBuffer %15
%199 = OpTypePointer Uniform %4
%207 = OpVariable %139 Input
%209 = OpVariable %142 Input
%211 = OpVariable %139 Input
%213 = OpVariable %83 Output
%217 = OpTypePointer Uniform %17
%238 = OpTypePointer Uniform %15
%134 = OpTypePointer Input %4
%133 = OpVariable %134 Input
%137 = OpTypePointer Input %10
%136 = OpVariable %137 Input
%139 = OpVariable %134 Input
%141 = OpVariable %80 Output
%145 = OpTypePointer StorageBuffer %16
%151 = OpTypePointer Function %7
%160 = OpTypePointer Uniform %6
%161 = OpTypePointer Uniform %7
%171 = OpTypePointer StorageBuffer %15
%197 = OpTypePointer Uniform %4
%203 = OpVariable %134 Input
%205 = OpVariable %137 Input
%207 = OpVariable %134 Input
%209 = OpVariable %80 Output
%213 = OpTypePointer Uniform %17
%236 = OpTypePointer Uniform %15
%43 = OpFunction %5 None %44
%41 = OpFunctionParameter %7
%42 = OpFunctionParameter %4
%40 = OpLabel
%45 = OpLoad %19 %36
%46 = OpLoad %20 %38
OpBranch %51
%51 = OpLabel
%52 = OpCompositeExtract %5 %42 3
%54 = OpFOrdLessThanEqual %53 %52 %47
OpSelectionMerge %55 None
OpBranchConditional %54 %56 %55
%56 = OpLabel
OpBranch %53
%53 = OpLabel
%54 = OpCompositeExtract %5 %42 3
%56 = OpFOrdLessThanEqual %55 %54 %47
OpSelectionMerge %57 None
OpBranchConditional %56 %58 %57
%58 = OpLabel
OpReturnValue %48
%55 = OpLabel
%57 = OpCompositeConstruct %21 %49 %50
%58 = OpCompositeExtract %5 %42 3
%59 = OpFDiv %5 %48 %58
%60 = OpVectorShuffle %21 %42 %42 0 1
%61 = OpFMul %21 %60 %57
%62 = OpVectorTimesScalar %21 %61 %59
%63 = OpCompositeConstruct %21 %49 %49
%64 = OpFAdd %21 %62 %63
%57 = OpLabel
%59 = OpCompositeExtract %5 %42 3
%60 = OpFDiv %5 %48 %59
%61 = OpVectorShuffle %21 %42 %42 0 1
%62 = OpFMul %21 %61 %51
%63 = OpVectorTimesScalar %21 %62 %60
%64 = OpFAdd %21 %63 %52
%65 = OpBitcast %13 %41
%66 = OpCompositeExtract %5 %42 2
%67 = OpFMul %5 %66 %59
%67 = OpFMul %5 %66 %60
%69 = OpConvertSToF %5 %65
%70 = OpCompositeConstruct %10 %64 %69
%71 = OpSampledImage %68 %45 %46
%72 = OpImageSampleDrefExplicitLod %5 %71 %70 %67 Lod %47
OpReturnValue %72
OpFunctionEnd
%87 = OpFunction %2 None %88
%76 = OpLabel
%73 = OpVariable %74 Function %75
%79 = OpLoad %12 %77
%81 = OpLoad %12 %80
%91 = OpAccessChain %89 %24 %90
%93 = OpAccessChain %92 %27 %90
%84 = OpFunction %2 None %85
%73 = OpLabel
%91 = OpVariable %92 Function %93
%76 = OpLoad %12 %74
%78 = OpLoad %12 %77
%88 = OpAccessChain %86 %24 %87
%90 = OpAccessChain %89 %27 %87
OpBranch %94
%94 = OpLabel
%96 = OpAccessChain %95 %93 %90
%96 = OpAccessChain %95 %90 %87
%97 = OpLoad %3 %96
%98 = OpAccessChain %95 %93 %90
%98 = OpAccessChain %95 %90 %87
%99 = OpLoad %3 %98
%100 = OpConvertSToF %4 %79
%100 = OpConvertSToF %4 %76
%101 = OpMatrixTimesVector %4 %99 %100
%103 = OpCompositeExtract %4 %97 0
%104 = OpVectorShuffle %10 %103 %103 0 1 2
@ -247,180 +245,176 @@ OpBranch %94
%107 = OpCompositeExtract %4 %97 2
%108 = OpVectorShuffle %10 %107 %107 0 1 2
%109 = OpCompositeConstruct %14 %104 %106 %108
%111 = OpVectorShuffle %110 %81 %81 0 1 2
%111 = OpVectorShuffle %110 %78 %78 0 1 2
%112 = OpConvertSToF %10 %111
%113 = OpMatrixTimesVector %10 %109 %112
%115 = OpAccessChain %102 %73 %114
%115 = OpAccessChain %102 %91 %114
OpStore %115 %113
%118 = OpAccessChain %116 %73 %117
%118 = OpAccessChain %116 %91 %117
OpStore %118 %101
%119 = OpAccessChain %95 %91 %90
%119 = OpAccessChain %95 %88 %87
%120 = OpLoad %3 %119
%121 = OpMatrixTimesVector %4 %120 %101
%122 = OpAccessChain %116 %73 %90
%122 = OpAccessChain %116 %91 %87
OpStore %122 %121
%123 = OpLoad %11 %73
%123 = OpLoad %11 %91
%124 = OpCompositeExtract %4 %123 0
OpStore %82 %124
%126 = OpAccessChain %125 %82 %114
OpStore %79 %124
%126 = OpAccessChain %125 %79 %114
%127 = OpLoad %5 %126
%128 = OpFNegate %5 %127
OpStore %126 %128
%129 = OpCompositeExtract %10 %123 1
OpStore %84 %129
OpStore %81 %129
%130 = OpCompositeExtract %4 %123 2
OpStore %86 %130
OpStore %83 %130
OpReturn
OpFunctionEnd
%147 = OpFunction %2 None %88
%136 = OpLabel
%131 = OpVariable %102 Function %132
%133 = OpVariable %134 Function %135
%140 = OpLoad %4 %138
%143 = OpLoad %10 %141
%145 = OpLoad %4 %144
%137 = OpCompositeConstruct %11 %140 %143 %145
%148 = OpAccessChain %89 %24 %90
%149 = OpAccessChain %92 %27 %90
%151 = OpAccessChain %150 %30 %90
%152 = OpLoad %19 %36
%153 = OpLoad %20 %38
OpBranch %154
%154 = OpLabel
%155 = OpCompositeExtract %10 %137 1
%156 = OpExtInst %10 %1 Normalize %155
OpStore %131 %23
OpStore %133 %90
%142 = OpFunction %2 None %85
%131 = OpLabel
%149 = OpVariable %102 Function %23
%150 = OpVariable %151 Function %87
%135 = OpLoad %4 %133
%138 = OpLoad %10 %136
%140 = OpLoad %4 %139
%132 = OpCompositeConstruct %11 %135 %138 %140
%143 = OpAccessChain %86 %24 %87
%144 = OpAccessChain %89 %27 %87
%146 = OpAccessChain %145 %30 %87
%147 = OpLoad %19 %36
%148 = OpLoad %20 %38
OpBranch %152
%152 = OpLabel
%153 = OpCompositeExtract %10 %132 1
%154 = OpExtInst %10 %1 Normalize %153
OpBranch %155
%155 = OpLabel
OpLoopMerge %156 %158 None
OpBranch %157
%157 = OpLabel
OpLoopMerge %158 %160 None
OpBranch %159
%159 = OpLabel
%161 = OpLoad %7 %133
%164 = OpAccessChain %163 %148 %114 %90
%165 = OpLoad %7 %164
%166 = OpExtInst %7 %1 UMin %165 %18
%167 = OpULessThan %53 %161 %166
OpSelectionMerge %168 None
OpBranchConditional %167 %168 %169
%159 = OpLoad %7 %150
%162 = OpAccessChain %161 %143 %114 %87
%163 = OpLoad %7 %162
%164 = OpExtInst %7 %1 UMin %163 %18
%165 = OpULessThan %55 %159 %164
OpSelectionMerge %166 None
OpBranchConditional %165 %166 %167
%167 = OpLabel
OpBranch %156
%166 = OpLabel
OpBranch %168
%168 = OpLabel
%170 = OpLoad %7 %150
%172 = OpAccessChain %171 %146 %170
%173 = OpLoad %15 %172
%174 = OpLoad %7 %150
%175 = OpCompositeExtract %3 %173 0
%176 = OpCompositeExtract %4 %132 2
%177 = OpMatrixTimesVector %4 %175 %176
%178 = OpFunctionCall %5 %43 %174 %177
%179 = OpCompositeExtract %4 %173 1
%180 = OpVectorShuffle %10 %179 %179 0 1 2
%181 = OpCompositeExtract %4 %132 2
%182 = OpVectorShuffle %10 %181 %181 0 1 2
%183 = OpFSub %10 %180 %182
%184 = OpExtInst %10 %1 Normalize %183
%185 = OpDot %5 %154 %184
%186 = OpExtInst %5 %1 FMax %47 %185
%187 = OpFMul %5 %178 %186
%188 = OpCompositeExtract %4 %173 2
%189 = OpVectorShuffle %10 %188 %188 0 1 2
%190 = OpVectorTimesScalar %10 %189 %187
%191 = OpLoad %10 %149
%192 = OpFAdd %10 %191 %190
OpStore %149 %192
OpBranch %169
%169 = OpLabel
OpBranch %158
%168 = OpLabel
OpBranch %170
%170 = OpLabel
%172 = OpLoad %7 %133
%174 = OpAccessChain %173 %151 %172
%175 = OpLoad %15 %174
%176 = OpLoad %7 %133
%177 = OpCompositeExtract %3 %175 0
%178 = OpCompositeExtract %4 %137 2
%179 = OpMatrixTimesVector %4 %177 %178
%180 = OpFunctionCall %5 %43 %176 %179
%181 = OpCompositeExtract %4 %175 1
%182 = OpVectorShuffle %10 %181 %181 0 1 2
%183 = OpCompositeExtract %4 %137 2
%184 = OpVectorShuffle %10 %183 %183 0 1 2
%185 = OpFSub %10 %182 %184
%186 = OpExtInst %10 %1 Normalize %185
%187 = OpDot %5 %156 %186
%188 = OpExtInst %5 %1 FMax %47 %187
%189 = OpFMul %5 %180 %188
%190 = OpCompositeExtract %4 %175 2
%191 = OpVectorShuffle %10 %190 %190 0 1 2
%192 = OpVectorTimesScalar %10 %191 %189
%193 = OpLoad %10 %131
%194 = OpFAdd %10 %193 %192
OpStore %131 %194
OpBranch %171
%171 = OpLabel
OpBranch %160
%160 = OpLabel
%195 = OpLoad %7 %133
%196 = OpIAdd %7 %195 %114
OpStore %133 %196
OpBranch %157
%158 = OpLabel
%197 = OpLoad %10 %131
%198 = OpCompositeConstruct %4 %197 %48
%200 = OpAccessChain %199 %149 %114
%201 = OpLoad %4 %200
%202 = OpFMul %4 %198 %201
OpStore %146 %202
%193 = OpLoad %7 %150
%194 = OpIAdd %7 %193 %114
OpStore %150 %194
OpBranch %155
%156 = OpLabel
%195 = OpLoad %10 %149
%196 = OpCompositeConstruct %4 %195 %48
%198 = OpAccessChain %197 %144 %114
%199 = OpLoad %4 %198
%200 = OpFMul %4 %196 %199
OpStore %141 %200
OpReturn
OpFunctionEnd
%214 = OpFunction %2 None %88
%205 = OpLabel
%203 = OpVariable %102 Function %132
%204 = OpVariable %134 Function %135
%210 = OpFunction %2 None %85
%201 = OpLabel
%217 = OpVariable %102 Function %23
%218 = OpVariable %151 Function %87
%204 = OpLoad %4 %203
%206 = OpLoad %10 %205
%208 = OpLoad %4 %207
%210 = OpLoad %10 %209
%212 = OpLoad %4 %211
%206 = OpCompositeConstruct %11 %208 %210 %212
%215 = OpAccessChain %89 %24 %90
%216 = OpAccessChain %92 %27 %90
%218 = OpAccessChain %217 %33 %90
%219 = OpLoad %19 %36
%220 = OpLoad %20 %38
OpBranch %221
%221 = OpLabel
%222 = OpCompositeExtract %10 %206 1
%223 = OpExtInst %10 %1 Normalize %222
OpStore %203 %23
OpStore %204 %90
%202 = OpCompositeConstruct %11 %204 %206 %208
%211 = OpAccessChain %86 %24 %87
%212 = OpAccessChain %89 %27 %87
%214 = OpAccessChain %213 %33 %87
%215 = OpLoad %19 %36
%216 = OpLoad %20 %38
OpBranch %219
%219 = OpLabel
%220 = OpCompositeExtract %10 %202 1
%221 = OpExtInst %10 %1 Normalize %220
OpBranch %222
%222 = OpLabel
OpLoopMerge %223 %225 None
OpBranch %224
%224 = OpLabel
OpLoopMerge %225 %227 None
OpBranch %226
%226 = OpLabel
%228 = OpLoad %7 %204
%229 = OpAccessChain %163 %215 %114 %90
%230 = OpLoad %7 %229
%231 = OpExtInst %7 %1 UMin %230 %18
%232 = OpULessThan %53 %228 %231
OpSelectionMerge %233 None
OpBranchConditional %232 %233 %234
%226 = OpLoad %7 %218
%227 = OpAccessChain %161 %211 %114 %87
%228 = OpLoad %7 %227
%229 = OpExtInst %7 %1 UMin %228 %18
%230 = OpULessThan %55 %226 %229
OpSelectionMerge %231 None
OpBranchConditional %230 %231 %232
%232 = OpLabel
OpBranch %223
%231 = OpLabel
OpBranch %233
%233 = OpLabel
%235 = OpLoad %7 %218
%237 = OpAccessChain %236 %214 %235
%238 = OpLoad %15 %237
%239 = OpLoad %7 %218
%240 = OpCompositeExtract %3 %238 0
%241 = OpCompositeExtract %4 %202 2
%242 = OpMatrixTimesVector %4 %240 %241
%243 = OpFunctionCall %5 %43 %239 %242
%244 = OpCompositeExtract %4 %238 1
%245 = OpVectorShuffle %10 %244 %244 0 1 2
%246 = OpCompositeExtract %4 %202 2
%247 = OpVectorShuffle %10 %246 %246 0 1 2
%248 = OpFSub %10 %245 %247
%249 = OpExtInst %10 %1 Normalize %248
%250 = OpDot %5 %221 %249
%251 = OpExtInst %5 %1 FMax %47 %250
%252 = OpFMul %5 %243 %251
%253 = OpCompositeExtract %4 %238 2
%254 = OpVectorShuffle %10 %253 %253 0 1 2
%255 = OpVectorTimesScalar %10 %254 %252
%256 = OpLoad %10 %217
%257 = OpFAdd %10 %256 %255
OpStore %217 %257
OpBranch %234
%234 = OpLabel
OpBranch %225
%233 = OpLabel
OpBranch %235
%235 = OpLabel
%237 = OpLoad %7 %204
%239 = OpAccessChain %238 %218 %237
%240 = OpLoad %15 %239
%241 = OpLoad %7 %204
%242 = OpCompositeExtract %3 %240 0
%243 = OpCompositeExtract %4 %206 2
%244 = OpMatrixTimesVector %4 %242 %243
%245 = OpFunctionCall %5 %43 %241 %244
%246 = OpCompositeExtract %4 %240 1
%247 = OpVectorShuffle %10 %246 %246 0 1 2
%248 = OpCompositeExtract %4 %206 2
%249 = OpVectorShuffle %10 %248 %248 0 1 2
%250 = OpFSub %10 %247 %249
%251 = OpExtInst %10 %1 Normalize %250
%252 = OpDot %5 %223 %251
%253 = OpExtInst %5 %1 FMax %47 %252
%254 = OpFMul %5 %245 %253
%255 = OpCompositeExtract %4 %240 2
%256 = OpVectorShuffle %10 %255 %255 0 1 2
%257 = OpVectorTimesScalar %10 %256 %254
%258 = OpLoad %10 %203
%259 = OpFAdd %10 %258 %257
OpStore %203 %259
OpBranch %236
%236 = OpLabel
OpBranch %227
%227 = OpLabel
%260 = OpLoad %7 %204
%261 = OpIAdd %7 %260 %114
OpStore %204 %261
OpBranch %224
%225 = OpLabel
%262 = OpLoad %10 %203
%263 = OpCompositeConstruct %4 %262 %48
%264 = OpAccessChain %199 %216 %114
%265 = OpLoad %4 %264
%266 = OpFMul %4 %263 %265
OpStore %213 %266
%258 = OpLoad %7 %218
%259 = OpIAdd %7 %258 %114
OpStore %218 %259
OpBranch %222
%223 = OpLabel
%260 = OpLoad %10 %217
%261 = OpCompositeConstruct %4 %260 %48
%262 = OpAccessChain %197 %212 %114
%263 = OpLoad %4 %262
%264 = OpFMul %4 %261 %263
OpStore %209 %264
OpReturn
OpFunctionEnd

View File

@ -1,13 +1,13 @@
; SPIR-V
; Version: 1.0
; Generator: rspirv
; Bound: 97
; Bound: 98
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Vertex %33 "vs_main" %26 %29 %31
OpEntryPoint Fragment %89 "fs_main" %82 %85 %88
OpExecutionMode %89 OriginUpperLeft
OpEntryPoint Vertex %29 "vs_main" %22 %25 %27
OpEntryPoint Fragment %90 "fs_main" %83 %86 %89
OpExecutionMode %90 OriginUpperLeft
OpMemberDecorate %6 0 Offset 0
OpMemberDecorate %6 1 Offset 16
OpMemberDecorate %8 0 Offset 0
@ -24,12 +24,12 @@ OpDecorate %17 DescriptorSet 0
OpDecorate %17 Binding 1
OpDecorate %19 DescriptorSet 0
OpDecorate %19 Binding 2
OpDecorate %26 BuiltIn VertexIndex
OpDecorate %29 BuiltIn Position
OpDecorate %31 Location 0
OpDecorate %82 BuiltIn FragCoord
OpDecorate %85 Location 0
OpDecorate %88 Location 0
OpDecorate %22 BuiltIn VertexIndex
OpDecorate %25 BuiltIn Position
OpDecorate %27 Location 0
OpDecorate %83 BuiltIn FragCoord
OpDecorate %86 Location 0
OpDecorate %89 Location 0
%2 = OpTypeVoid
%4 = OpTypeFloat 32
%3 = OpTypeVector %4 4
@ -49,90 +49,91 @@ OpDecorate %88 Location 0
%17 = OpVariable %18 UniformConstant
%20 = OpTypePointer UniformConstant %13
%19 = OpVariable %20 UniformConstant
%22 = OpTypePointer Function %10
%23 = OpConstantNull %10
%27 = OpTypePointer Input %9
%26 = OpVariable %27 Input
%30 = OpTypePointer Output %3
%29 = OpVariable %30 Output
%32 = OpTypePointer Output %5
%31 = OpVariable %32 Output
%34 = OpTypeFunction %2
%35 = OpTypePointer Uniform %8
%36 = OpConstant %9 0
%38 = OpConstant %10 2
%39 = OpConstant %10 1
%40 = OpConstant %4 4.0
%41 = OpConstant %4 1.0
%42 = OpConstant %4 0.0
%57 = OpTypePointer Uniform %7
%58 = OpTypePointer Uniform %3
%59 = OpConstant %9 1
%66 = OpConstant %9 2
%83 = OpTypePointer Input %3
%82 = OpVariable %83 Input
%86 = OpTypePointer Input %5
%85 = OpVariable %86 Input
%88 = OpVariable %30 Output
%94 = OpTypeSampledImage %12
%33 = OpFunction %2 None %34
%25 = OpLabel
%21 = OpVariable %22 Function %23
%24 = OpVariable %22 Function %23
%28 = OpLoad %9 %26
%37 = OpAccessChain %35 %14 %36
OpBranch %43
%43 = OpLabel
%44 = OpBitcast %10 %28
%45 = OpSDiv %10 %44 %38
OpStore %21 %45
%46 = OpBitcast %10 %28
%47 = OpBitwiseAnd %10 %46 %39
OpStore %24 %47
%48 = OpLoad %10 %21
%49 = OpConvertSToF %4 %48
%50 = OpFMul %4 %49 %40
%51 = OpFSub %4 %50 %41
%52 = OpLoad %10 %24
%53 = OpConvertSToF %4 %52
%54 = OpFMul %4 %53 %40
%55 = OpFSub %4 %54 %41
%56 = OpCompositeConstruct %3 %51 %55 %42 %41
%60 = OpAccessChain %58 %37 %59 %36
%61 = OpLoad %3 %60
%62 = OpVectorShuffle %5 %61 %61 0 1 2
%63 = OpAccessChain %58 %37 %59 %59
%64 = OpLoad %3 %63
%65 = OpVectorShuffle %5 %64 %64 0 1 2
%67 = OpAccessChain %58 %37 %59 %66
%68 = OpLoad %3 %67
%69 = OpVectorShuffle %5 %68 %68 0 1 2
%70 = OpCompositeConstruct %11 %62 %65 %69
%71 = OpTranspose %11 %70
%72 = OpAccessChain %57 %37 %36
%73 = OpLoad %7 %72
%74 = OpMatrixTimesVector %3 %73 %56
%75 = OpVectorShuffle %5 %74 %74 0 1 2
%76 = OpMatrixTimesVector %5 %71 %75
%77 = OpCompositeConstruct %6 %56 %76
%78 = OpCompositeExtract %3 %77 0
OpStore %29 %78
%79 = OpCompositeExtract %5 %77 1
OpStore %31 %79
%23 = OpTypePointer Input %9
%22 = OpVariable %23 Input
%26 = OpTypePointer Output %3
%25 = OpVariable %26 Output
%28 = OpTypePointer Output %5
%27 = OpVariable %28 Output
%30 = OpTypeFunction %2
%31 = OpTypePointer Uniform %8
%32 = OpConstant %9 0
%34 = OpConstant %10 2
%35 = OpConstant %10 1
%36 = OpConstant %4 4.0
%37 = OpConstant %4 1.0
%38 = OpConstant %4 0.0
%40 = OpTypePointer Function %10
%41 = OpConstantNull %10
%43 = OpConstantNull %10
%58 = OpTypePointer Uniform %7
%59 = OpTypePointer Uniform %3
%60 = OpConstant %9 1
%67 = OpConstant %9 2
%84 = OpTypePointer Input %3
%83 = OpVariable %84 Input
%87 = OpTypePointer Input %5
%86 = OpVariable %87 Input
%89 = OpVariable %26 Output
%95 = OpTypeSampledImage %12
%29 = OpFunction %2 None %30
%21 = OpLabel
%39 = OpVariable %40 Function %41
%42 = OpVariable %40 Function %43
%24 = OpLoad %9 %22
%33 = OpAccessChain %31 %14 %32
OpBranch %44
%44 = OpLabel
%45 = OpBitcast %10 %24
%46 = OpSDiv %10 %45 %34
OpStore %39 %46
%47 = OpBitcast %10 %24
%48 = OpBitwiseAnd %10 %47 %35
OpStore %42 %48
%49 = OpLoad %10 %39
%50 = OpConvertSToF %4 %49
%51 = OpFMul %4 %50 %36
%52 = OpFSub %4 %51 %37
%53 = OpLoad %10 %42
%54 = OpConvertSToF %4 %53
%55 = OpFMul %4 %54 %36
%56 = OpFSub %4 %55 %37
%57 = OpCompositeConstruct %3 %52 %56 %38 %37
%61 = OpAccessChain %59 %33 %60 %32
%62 = OpLoad %3 %61
%63 = OpVectorShuffle %5 %62 %62 0 1 2
%64 = OpAccessChain %59 %33 %60 %60
%65 = OpLoad %3 %64
%66 = OpVectorShuffle %5 %65 %65 0 1 2
%68 = OpAccessChain %59 %33 %60 %67
%69 = OpLoad %3 %68
%70 = OpVectorShuffle %5 %69 %69 0 1 2
%71 = OpCompositeConstruct %11 %63 %66 %70
%72 = OpTranspose %11 %71
%73 = OpAccessChain %58 %33 %32
%74 = OpLoad %7 %73
%75 = OpMatrixTimesVector %3 %74 %57
%76 = OpVectorShuffle %5 %75 %75 0 1 2
%77 = OpMatrixTimesVector %5 %72 %76
%78 = OpCompositeConstruct %6 %57 %77
%79 = OpCompositeExtract %3 %78 0
OpStore %25 %79
%80 = OpCompositeExtract %5 %78 1
OpStore %27 %80
OpReturn
OpFunctionEnd
%89 = OpFunction %2 None %34
%80 = OpLabel
%84 = OpLoad %3 %82
%87 = OpLoad %5 %85
%81 = OpCompositeConstruct %6 %84 %87
%90 = OpLoad %12 %17
%91 = OpLoad %13 %19
OpBranch %92
%92 = OpLabel
%93 = OpCompositeExtract %5 %81 1
%95 = OpSampledImage %94 %90 %91
%96 = OpImageSampleImplicitLod %3 %95 %93
OpStore %88 %96
%90 = OpFunction %2 None %30
%81 = OpLabel
%85 = OpLoad %3 %83
%88 = OpLoad %5 %86
%82 = OpCompositeConstruct %6 %85 %88
%91 = OpLoad %12 %17
%92 = OpLoad %13 %19
OpBranch %93
%93 = OpLabel
%94 = OpCompositeExtract %5 %82 1
%96 = OpSampledImage %95 %91 %92
%97 = OpImageSampleImplicitLod %3 %96 %94
OpStore %89 %97
OpReturn
OpFunctionEnd

View File

@ -1,66 +1,68 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 40
; Bound: 42
OpCapability Shader
OpCapability DerivativeControl
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %22 "derivatives" %17 %20
OpExecutionMode %22 OriginUpperLeft
OpDecorate %17 BuiltIn FragCoord
OpDecorate %20 Location 0
OpEntryPoint Fragment %17 "derivatives" %12 %15
OpExecutionMode %17 OriginUpperLeft
OpDecorate %12 BuiltIn FragCoord
OpDecorate %15 Location 0
%2 = OpTypeVoid
%3 = OpTypeBool
%5 = OpTypeFloat 32
%4 = OpTypeVector %5 4
%8 = OpTypeFunction %3
%9 = OpConstantTrue %3
%12 = OpTypePointer Function %4
%13 = OpConstantNull %4
%18 = OpTypePointer Input %4
%17 = OpVariable %18 Input
%21 = OpTypePointer Output %4
%20 = OpVariable %21 Output
%23 = OpTypeFunction %2
%13 = OpTypePointer Input %4
%12 = OpVariable %13 Input
%16 = OpTypePointer Output %4
%15 = OpVariable %16 Output
%18 = OpTypeFunction %2
%20 = OpTypePointer Function %4
%21 = OpConstantNull %4
%23 = OpConstantNull %4
%25 = OpConstantNull %4
%7 = OpFunction %3 None %8
%6 = OpLabel
OpBranch %10
%10 = OpLabel
OpReturnValue %9
OpFunctionEnd
%22 = OpFunction %2 None %23
%16 = OpLabel
%11 = OpVariable %12 Function %13
%14 = OpVariable %12 Function %13
%15 = OpVariable %12 Function %13
%19 = OpLoad %4 %17
OpBranch %24
%24 = OpLabel
%25 = OpDPdxCoarse %4 %19
OpStore %11 %25
%26 = OpDPdyCoarse %4 %19
OpStore %14 %26
%27 = OpFwidthCoarse %4 %19
OpStore %15 %27
%28 = OpDPdxFine %4 %19
OpStore %11 %28
%29 = OpDPdyFine %4 %19
OpStore %14 %29
%30 = OpFwidthFine %4 %19
OpStore %15 %30
%31 = OpDPdx %4 %19
OpStore %11 %31
%32 = OpDPdy %4 %19
OpStore %14 %32
%33 = OpFwidth %4 %19
OpStore %15 %33
%34 = OpFunctionCall %3 %7
%35 = OpLoad %4 %11
%36 = OpLoad %4 %14
%37 = OpFAdd %4 %35 %36
%38 = OpLoad %4 %15
%39 = OpFMul %4 %37 %38
OpStore %20 %39
%17 = OpFunction %2 None %18
%11 = OpLabel
%19 = OpVariable %20 Function %21
%22 = OpVariable %20 Function %23
%24 = OpVariable %20 Function %25
%14 = OpLoad %4 %12
OpBranch %26
%26 = OpLabel
%27 = OpDPdxCoarse %4 %14
OpStore %19 %27
%28 = OpDPdyCoarse %4 %14
OpStore %22 %28
%29 = OpFwidthCoarse %4 %14
OpStore %24 %29
%30 = OpDPdxFine %4 %14
OpStore %19 %30
%31 = OpDPdyFine %4 %14
OpStore %22 %31
%32 = OpFwidthFine %4 %14
OpStore %24 %32
%33 = OpDPdx %4 %14
OpStore %19 %33
%34 = OpDPdy %4 %14
OpStore %22 %34
%35 = OpFwidth %4 %14
OpStore %24 %35
%36 = OpFunctionCall %3 %7
%37 = OpLoad %4 %19
%38 = OpLoad %4 %22
%39 = OpFAdd %4 %37 %38
%40 = OpLoad %4 %24
%41 = OpFMul %4 %39 %40
OpStore %15 %41
OpReturn
OpFunctionEnd

View File

@ -30,6 +30,7 @@ OpDecorate %26 Location 0
%10 = OpVariable %11 UniformConstant
%18 = OpTypeFunction %6 %9 %11
%19 = OpConstant %4 0.0
%20 = OpConstantComposite %7 %19 %19
%22 = OpTypeSampledImage %3
%27 = OpTypePointer Output %6
%26 = OpVariable %27 Output
@ -40,11 +41,10 @@ OpDecorate %26 Location 0
%12 = OpLabel
%14 = OpLoad %3 %13
%16 = OpLoad %5 %15
OpBranch %20
%20 = OpLabel
%21 = OpCompositeConstruct %7 %19 %19
OpBranch %21
%21 = OpLabel
%23 = OpSampledImage %22 %14 %16
%24 = OpImageSampleImplicitLod %6 %23 %21
%24 = OpImageSampleImplicitLod %6 %23 %20
OpReturnValue %24
OpFunctionEnd
%28 = OpFunction %2 None %29

View File

@ -37,10 +37,9 @@ var<uniform> nested_mat_cx2_: MatCx2InArray;
var<workgroup> val: u32;
fn test_matrix_within_struct_accesses() {
var idx: i32;
var t: Baz;
var idx: i32 = 1;
var t: Baz = Baz(mat3x2<f32>(vec2(1.0), vec2(2.0), vec2(3.0)));
idx = 1;
let _e3 = idx;
idx = (_e3 - 1);
let l0_ = baz.m;
@ -55,7 +54,6 @@ fn test_matrix_within_struct_accesses() {
let _e36 = idx;
let _e38 = idx;
let l6_ = baz.m[_e36][_e38];
t = Baz(mat3x2<f32>(vec2(1.0), vec2(2.0), vec2(3.0)));
let _e51 = idx;
idx = (_e51 + 1);
t.m = mat3x2<f32>(vec2(6.0), vec2(5.0), vec2(4.0));
@ -74,10 +72,9 @@ fn test_matrix_within_struct_accesses() {
}
fn test_matrix_within_array_within_struct_accesses() {
var idx_1: i32;
var t_1: MatCx2InArray;
var idx_1: i32 = 1;
var t_1: MatCx2InArray = MatCx2InArray(array<mat4x2<f32>, 2>());
idx_1 = 1;
let _e3 = idx_1;
idx_1 = (_e3 - 1);
let l0_1 = nested_mat_cx2_.am;
@ -93,7 +90,6 @@ fn test_matrix_within_array_within_struct_accesses() {
let _e46 = idx_1;
let _e48 = idx_1;
let l7_ = nested_mat_cx2_.am[0][_e46][_e48];
t_1 = MatCx2InArray(array<mat4x2<f32>, 2>());
let _e55 = idx_1;
idx_1 = (_e55 + 1);
t_1.am = array<mat4x2<f32>, 2>();
@ -133,10 +129,9 @@ fn assign_array_through_ptr_fn(foo_2: ptr<function, array<vec4<f32>, 2>>) {
@vertex
fn foo_vert(@builtin(vertex_index) vi: u32) -> @builtin(position) vec4<f32> {
var foo: f32;
var foo: f32 = 0.0;
var c2_: array<i32, 5>;
foo = 0.0;
let baz_1 = foo;
foo = 1.0;
test_matrix_within_struct_accesses();
@ -167,9 +162,8 @@ fn foo_frag() -> @location(0) vec4<f32> {
@compute @workgroup_size(1, 1, 1)
fn assign_through_ptr() {
var arr: array<vec4<f32>, 2>;
var arr: array<vec4<f32>, 2> = array<vec4<f32>, 2>(vec4(6.0), vec4(7.0));
arr = array<vec4<f32>, 2>(vec4(6.0), vec4(7.0));
assign_through_ptr_fn((&val));
assign_array_through_ptr_fn((&arr));
return;

View File

@ -7,11 +7,10 @@ var<storage, read_write> arr_u32_: array<atomic<u32>, 128>;
@compute @workgroup_size(1, 1, 1)
fn test_atomic_compare_exchange_i32_() {
var i: u32;
var i: u32 = 0u;
var old: i32;
var exchanged: bool;
var exchanged: bool = false;
i = 0u;
loop {
let _e2 = i;
if (_e2 < SIZE) {
@ -50,11 +49,10 @@ fn test_atomic_compare_exchange_i32_() {
@compute @workgroup_size(1, 1, 1)
fn test_atomic_compare_exchange_u32_() {
var i_1: u32;
var i_1: u32 = 0u;
var old_1: u32;
var exchanged_1: bool;
var exchanged_1: bool = false;
i_1 = 0u;
loop {
let _e2 = i_1;
if (_e2 < SIZE) {

View File

@ -27,17 +27,13 @@ var<uniform> uni: UniformIndex;
@fragment
fn main(fragment_in: FragmentIn) -> @location(0) vec4<f32> {
var u1_: u32;
var u2_: vec2<u32>;
var v1_: f32;
var v4_: vec4<f32>;
var u1_: u32 = 0u;
var u2_: vec2<u32> = vec2(0u);
var v1_: f32 = 0.0;
var v4_: vec4<f32> = vec4(0.0);
let uniform_index = uni.index;
let non_uniform_index = fragment_in.index;
u1_ = 0u;
u2_ = vec2(0u);
v1_ = 0.0;
v4_ = vec4(0.0);
let uv = vec2(0.0);
let pix = vec2(0);
let _e21 = textureDimensions(texture_array_unbounded[0]);

View File

@ -17,11 +17,10 @@ var<uniform> uni: UniformIndex;
@fragment
fn main(fragment_in: FragmentIn) -> @location(0) @interpolate(flat) u32 {
var u1_: u32;
var u1_: u32 = 0u;
let uniform_index = uni.index;
let non_uniform_index = fragment_in.index;
u1_ = 0u;
let _e10 = storage_array[0].x;
let _e11 = u1_;
u1_ = (_e11 + _e10);

View File

@ -1,24 +1,15 @@
@compute @workgroup_size(1, 1, 1)
fn main() {
var i2_: vec2<i32>;
var i3_: vec3<i32>;
var i4_: vec4<i32>;
var u2_: vec2<u32>;
var u3_: vec3<u32>;
var u4_: vec4<u32>;
var f2_: vec2<f32>;
var f3_: vec3<f32>;
var f4_: vec4<f32>;
var i2_: vec2<i32> = vec2(0);
var i3_: vec3<i32> = vec3(0);
var i4_: vec4<i32> = vec4(0);
var u2_: vec2<u32> = vec2(0u);
var u3_: vec3<u32> = vec3(0u);
var u4_: vec4<u32> = vec4(0u);
var f2_: vec2<f32> = vec2(0.0);
var f3_: vec3<f32> = vec3(0.0);
var f4_: vec4<f32> = vec4(0.0);
i2_ = vec2(0);
i3_ = vec3(0);
i4_ = vec4(0);
u2_ = vec2(0u);
u3_ = vec3(0u);
u4_ = vec4(0u);
f2_ = vec2(0.0);
f3_ = vec3(0.0);
f4_ = vec4(0.0);
let _e27 = i2_;
u2_ = bitcast<vec2<u32>>(_e27);
let _e29 = i3_;

View File

@ -1,26 +1,16 @@
@compute @workgroup_size(1, 1, 1)
fn main() {
var i: i32;
var i2_: vec2<i32>;
var i3_: vec3<i32>;
var i4_: vec4<i32>;
var u: u32;
var u2_: vec2<u32>;
var u3_: vec3<u32>;
var u4_: vec4<u32>;
var f2_: vec2<f32>;
var f4_: vec4<f32>;
var i: i32 = 0;
var i2_: vec2<i32> = vec2(0);
var i3_: vec3<i32> = vec3(0);
var i4_: vec4<i32> = vec4(0);
var u: u32 = 0u;
var u2_: vec2<u32> = vec2(0u);
var u3_: vec3<u32> = vec3(0u);
var u4_: vec4<u32> = vec4(0u);
var f2_: vec2<f32> = vec2(0.0);
var f4_: vec4<f32> = vec4(0.0);
i = 0;
i2_ = vec2(0);
i3_ = vec3(0);
i4_ = vec4(0);
u = 0u;
u2_ = vec2(0u);
u3_ = vec3(0u);
u4_ = vec4(0u);
f2_ = vec2(0.0);
f4_ = vec4(0.0);
let _e28 = f4_;
u = pack4x8snorm(_e28);
let _e30 = f4_;

Some files were not shown because too many files have changed in this diff Show More