diff --git a/src/back/glsl/mod.rs b/src/back/glsl/mod.rs index 12d358bb80..77e206d3c6 100644 --- a/src/back/glsl/mod.rs +++ b/src/back/glsl/mod.rs @@ -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)?; diff --git a/src/back/hlsl/writer.rs b/src/back/hlsl/writer.rs index a2e0d2fefa..590850fc4d 100644 --- a/src/back/hlsl/writer.rs +++ b/src/back/hlsl/writer.rs @@ -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)?; diff --git a/src/back/msl/writer.rs b/src/back/msl/writer.rs index fee917b035..d0f5413136 100644 --- a/src/back/msl/writer.rs +++ b/src/back/msl/writer.rs @@ -3557,29 +3557,6 @@ impl Writer { 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 Writer { }, 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 Writer { } } - // 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 Writer { }, 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)?; diff --git a/src/back/spv/block.rs b/src/back/spv/block.rs index c5246ad190..d698931f6d 100644 --- a/src/back/spv/block.rs +++ b/src/back/spv/block.rs @@ -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) => { diff --git a/src/back/spv/writer.rs b/src/back/spv/writer.rs index 4be19cce66..7d79377786 100644 --- a/src/back/spv/writer.rs +++ b/src/back/spv/writer.rs @@ -338,37 +338,6 @@ impl Writer { ) -> Result { 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)?; } } diff --git a/src/back/wgsl/writer.rs b/src/back/wgsl/writer.rs index e41460061d..0655fcde80 100644 --- a/src/back/wgsl/writer.rs +++ b/src/back/wgsl/writer.rs @@ -292,7 +292,7 @@ impl Writer { // 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) diff --git a/src/compact/functions.rs b/src/compact/functions.rs index 176221f98e..752c3eb7f1 100644 --- a/src/compact/functions.rs +++ b/src/compact/functions.rs @@ -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) { - 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); } } diff --git a/src/front/glsl/context.rs b/src/front/glsl/context.rs index ffdc2bd978..a13e6ac5ba 100644 --- a/src/front/glsl/context.rs +++ b/src/front/glsl/context.rs @@ -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 { diff --git a/src/front/spv/mod.rs b/src/front/spv/mod.rs index 5fd54b023f..1609868efa 100644 --- a/src/front/spv/mod.rs +++ b/src/front/spv/mod.rs @@ -1395,7 +1395,7 @@ impl> Frontend { 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 { diff --git a/src/front/wgsl/lower/mod.rs b/src/front/wgsl/lower/mod.rs index 3a78f0f2bd..edb4f6d490 100644 --- a/src/front/wgsl/lower/mod.rs +++ b/src/front/wgsl/lower/mod.rs @@ -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> { 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); diff --git a/src/lib.rs b/src/lib.rs index 93ecaa1ab3..80461e16ff 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -978,9 +978,7 @@ pub struct LocalVariable { pub name: Option, /// The type of this variable. pub ty: Handle, - /// Initial value for this variable. - /// - /// Expression handle lives in const_expressions + /// Initial value for this variable. Must be a const-expression. pub init: Option>, } diff --git a/src/proc/constant_evaluator.rs b/src/proc/constant_evaluator.rs index cf00b13de5..6778a0bf93 100644 --- a/src/proc/constant_evaluator.rs +++ b/src/proc/constant_evaluator.rs @@ -91,6 +91,20 @@ pub enum ExprType { // Math // As +// TODO(teoxoy): consider accumulating this metadata instead of recursing through subexpressions +impl Arena { + pub fn is_const(&self, handle: Handle) -> 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, Span) -> Handle> ConstantEvaluator<'a, F> { diff --git a/src/valid/analyzer.rs b/src/valid/analyzer.rs index 0ed707c1e3..ff1db071c8 100644 --- a/src/valid/analyzer.rs +++ b/src/valid/analyzer.rs @@ -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); diff --git a/src/valid/function.rs b/src/valid/function.rs index 998f873c08..a056a1d1f6 100644 --- a/src/valid/function.rs +++ b/src/valid/function.rs @@ -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, diff --git a/src/valid/handles.rs b/src/valid/handles.rs index da95f60842..c68ded074b 100644 --- a/src/valid/handles.rs +++ b/src/valid/handles.rs @@ -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)?; } } diff --git a/tests/out/analysis/access.info.ron b/tests/out/analysis/access.info.ron index 4a020e48c4..f66a792858 100644 --- a/tests/out/analysis/access.info.ron +++ b/tests/out/analysis/access.info.ron @@ -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, diff --git a/tests/out/analysis/collatz.info.ron b/tests/out/analysis/collatz.info.ron index 8241bf9a15..5b32bf44ad 100644 --- a/tests/out/analysis/collatz.info.ron +++ b/tests/out/analysis/collatz.info.ron @@ -57,7 +57,7 @@ non_uniform_result: Some(4), requirements: (""), ), - ref_count: 4, + ref_count: 3, assignable_global: None, ty: Value(Pointer( base: 1, diff --git a/tests/out/analysis/shadow.info.ron b/tests/out/analysis/shadow.info.ron index 15ec6e2b3a..3553f9030b 100644 --- a/tests/out/analysis/shadow.info.ron +++ b/tests/out/analysis/shadow.info.ron @@ -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), ], ) \ No newline at end of file diff --git a/tests/out/glsl/access.assign_through_ptr.Compute.glsl b/tests/out/glsl/access.assign_through_ptr.Compute.glsl index ab5bd9a3fb..a75b0f4d97 100644 --- a/tests/out/glsl/access.assign_through_ptr.Compute.glsl +++ b/tests/out/glsl/access.assign_through_ptr.Compute.glsl @@ -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; diff --git a/tests/out/glsl/access.foo_vert.Vertex.glsl b/tests/out/glsl/access.foo_vert.Vertex.glsl index a505ee19eb..a79ff3039d 100644 --- a/tests/out/glsl/access.foo_vert.Vertex.glsl +++ b/tests/out/glsl/access.foo_vert.Vertex.glsl @@ -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(); diff --git a/tests/out/glsl/bitcast.main.Compute.glsl b/tests/out/glsl/bitcast.main.Compute.glsl index 215aef8a58..57e7e221b7 100644 --- a/tests/out/glsl/bitcast.main.Compute.glsl +++ b/tests/out/glsl/bitcast.main.Compute.glsl @@ -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_; diff --git a/tests/out/glsl/bits.main.Compute.glsl b/tests/out/glsl/bits.main.Compute.glsl index 1c17638faf..f991f532ac 100644 --- a/tests/out/glsl/bits.main.Compute.glsl +++ b/tests/out/glsl/bits.main.Compute.glsl @@ -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_; diff --git a/tests/out/glsl/boids.main.Compute.glsl b/tests/out/glsl/boids.main.Compute.glsl index 8d6067aeed..c42358bfef 100644 --- a/tests/out/glsl/boids.main.Compute.glsl +++ b/tests/out/glsl/boids.main.Compute.glsl @@ -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) { diff --git a/tests/out/glsl/dualsource.main.Fragment.glsl b/tests/out/glsl/dualsource.main.Fragment.glsl index 9ac463c2b3..ef57922798 100644 --- a/tests/out/glsl/dualsource.main.Fragment.glsl +++ b/tests/out/glsl/dualsource.main.Fragment.glsl @@ -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); diff --git a/tests/out/glsl/globals.main.Compute.glsl b/tests/out/glsl/globals.main.Compute.glsl index b5e36f5414..b7ef8bd295 100644 --- a/tests/out/glsl/globals.main.Compute.glsl +++ b/tests/out/glsl/globals.main.Compute.glsl @@ -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; } diff --git a/tests/out/glsl/operators.main.Compute.glsl b/tests/out/glsl/operators.main.Compute.glsl index 1ed88c1023..a1a7131e99 100644 --- a/tests/out/glsl/operators.main.Compute.glsl +++ b/tests/out/glsl/operators.main.Compute.glsl @@ -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; diff --git a/tests/out/glsl/shadow.fs_main.Fragment.glsl b/tests/out/glsl/shadow.fs_main.Fragment.glsl index 0910850814..61c14561d5 100644 --- a/tests/out/glsl/shadow.fs_main.Fragment.glsl +++ b/tests/out/glsl/shadow.fs_main.Fragment.glsl @@ -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) { diff --git a/tests/out/glsl/shadow.fs_main_without_storage.Fragment.glsl b/tests/out/glsl/shadow.fs_main_without_storage.Fragment.glsl index c85a89eb96..57677c91a6 100644 --- a/tests/out/glsl/shadow.fs_main_without_storage.Fragment.glsl +++ b/tests/out/glsl/shadow.fs_main_without_storage.Fragment.glsl @@ -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) { diff --git a/tests/out/hlsl/access.hlsl b/tests/out/hlsl/access.hlsl index 465643bb44..6f44bdb07f 100644 --- a/tests/out/hlsl/access.hlsl +++ b/tests/out/hlsl/access.hlsl @@ -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; diff --git a/tests/out/hlsl/binding-arrays.hlsl b/tests/out/hlsl/binding-arrays.hlsl index 4a22c2746c..aa631b3225 100644 --- a/tests/out/hlsl/binding-arrays.hlsl +++ b/tests/out/hlsl/binding-arrays.hlsl @@ -51,17 +51,13 @@ uint NagaMSNumSamples2D(Texture2DMS 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_; diff --git a/tests/out/hlsl/bitcast.hlsl b/tests/out/hlsl/bitcast.hlsl index 00f4206a10..5208074002 100644 --- a/tests/out/hlsl/bitcast.hlsl +++ b/tests/out/hlsl/bitcast.hlsl @@ -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_; diff --git a/tests/out/hlsl/bits.hlsl b/tests/out/hlsl/bits.hlsl index 55e1afbd80..8ae2f7e1fc 100644 --- a/tests/out/hlsl/bits.hlsl +++ b/tests/out/hlsl/bits.hlsl @@ -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_; diff --git a/tests/out/hlsl/boids.hlsl b/tests/out/hlsl/boids.hlsl index 5400a5e3a8..bb6f6f9d1b 100644 --- a/tests/out/hlsl/boids.hlsl +++ b/tests/out/hlsl/boids.hlsl @@ -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) { diff --git a/tests/out/hlsl/collatz.hlsl b/tests/out/hlsl/collatz.hlsl index 92539ee2f4..a8a5a776e3 100644 --- a/tests/out/hlsl/collatz.hlsl +++ b/tests/out/hlsl/collatz.hlsl @@ -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)) { diff --git a/tests/out/hlsl/dualsource.hlsl b/tests/out/hlsl/dualsource.hlsl index 1d5b53d6f8..36784b13d2 100644 --- a/tests/out/hlsl/dualsource.hlsl +++ b/tests/out/hlsl/dualsource.hlsl @@ -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); diff --git a/tests/out/hlsl/globals.hlsl b/tests/out/hlsl/globals.hlsl index b4994837cd..55faf060d0 100644 --- a/tests/out/hlsl/globals.hlsl +++ b/tests/out/hlsl/globals.hlsl @@ -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; } diff --git a/tests/out/hlsl/hlsl-keyword.hlsl b/tests/out/hlsl/hlsl-keyword.hlsl index 8602525e29..9259549ab2 100644 --- a/tests/out/hlsl/hlsl-keyword.hlsl +++ b/tests/out/hlsl/hlsl-keyword.hlsl @@ -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; } diff --git a/tests/out/hlsl/interface.hlsl b/tests/out/hlsl/interface.hlsl index 9251396c7a..3784864edf 100644 --- a/tests/out/hlsl/interface.hlsl +++ b/tests/out/hlsl/interface.hlsl @@ -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); } diff --git a/tests/out/hlsl/operators.hlsl b/tests/out/hlsl/operators.hlsl index 90c6723e2b..7074d1d562 100644 --- a/tests/out/hlsl/operators.hlsl +++ b/tests/out/hlsl/operators.hlsl @@ -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; diff --git a/tests/out/hlsl/shadow.hlsl b/tests/out/hlsl/shadow.hlsl index 7116e803eb..91a918283b 100644 --- a/tests/out/hlsl/shadow.hlsl +++ b/tests/out/hlsl/shadow.hlsl @@ -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) { diff --git a/tests/out/ir/access.compact.ron b/tests/out/ir/access.compact.ron index b725765d46..1c0220141d 100644 --- a/tests/out/ir/access.compact.ron +++ b/tests/out/ir/access.compact.ron @@ -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: [ diff --git a/tests/out/ir/access.ron b/tests/out/ir/access.ron index e2a7aa9466..fcdd3b8b7c 100644 --- a/tests/out/ir/access.ron +++ b/tests/out/ir/access.ron @@ -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: [ diff --git a/tests/out/ir/collatz.compact.ron b/tests/out/ir/collatz.compact.ron index fb8ff825e1..7cad54b713 100644 --- a/tests/out/ir/collatz.compact.ron +++ b/tests/out/ir/collatz.compact.ron @@ -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(( diff --git a/tests/out/ir/collatz.ron b/tests/out/ir/collatz.ron index 615c638506..8146909c1e 100644 --- a/tests/out/ir/collatz.ron +++ b/tests/out/ir/collatz.ron @@ -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(( diff --git a/tests/out/ir/shadow.compact.ron b/tests/out/ir/shadow.compact.ron index 313938997f..9ca6799c21 100644 --- a/tests/out/ir/shadow.compact.ron +++ b/tests/out/ir/shadow.compact.ron @@ -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, diff --git a/tests/out/ir/shadow.ron b/tests/out/ir/shadow.ron index bfde76d6ae..07bf66fcc8 100644 --- a/tests/out/ir/shadow.ron +++ b/tests/out/ir/shadow.ron @@ -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, diff --git a/tests/out/msl/access.msl b/tests/out/msl/access.msl index c35139a8cf..3d57ebd7c8 100644 --- a/tests/out/msl/access.msl +++ b/tests/out/msl/access.msl @@ -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; diff --git a/tests/out/msl/binding-arrays.msl b/tests/out/msl/binding-arrays.msl index f7597b5c76..f3548c9e79 100644 --- a/tests/out/msl/binding-arrays.msl +++ b/tests/out/msl/binding-arrays.msl @@ -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_; diff --git a/tests/out/msl/bitcast.msl b/tests/out/msl/bitcast.msl index a0cf093b7f..ca8bc329bb 100644 --- a/tests/out/msl/bitcast.msl +++ b/tests/out/msl/bitcast.msl @@ -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(_e27); metal::int3 _e29 = i3_; diff --git a/tests/out/msl/bits.msl b/tests/out/msl/bits.msl index 2a00b6b843..7d73568b7f 100644 --- a/tests/out/msl/bits.msl +++ b/tests/out/msl/bits.msl @@ -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_; diff --git a/tests/out/msl/boids.msl b/tests/out/msl/boids.msl index 1a81aaf684..de9d7186a8 100644 --- a/tests/out/msl/boids.msl +++ b/tests/out/msl/boids.msl @@ -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) { diff --git a/tests/out/msl/collatz.msl b/tests/out/msl/collatz.msl index 88f9521a27..3c8bcf1722 100644 --- a/tests/out/msl/collatz.msl +++ b/tests/out/msl/collatz.msl @@ -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) { diff --git a/tests/out/msl/dualsource.msl b/tests/out/msl/dualsource.msl index 92b1909f8b..871957c81f 100644 --- a/tests/out/msl/dualsource.msl +++ b/tests/out/msl/dualsource.msl @@ -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}; diff --git a/tests/out/msl/globals.msl b/tests/out/msl/globals.msl index 9e964d6c1e..9d09db8055 100644 --- a/tests/out/msl/globals.msl +++ b/tests/out/msl/globals.msl @@ -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(1 + (_buffer_sizes.size3 - 0 - 8) / 8); metal::atomic_store_explicit(&at_1, 2u, metal::memory_order_relaxed); - Foo = 1.0; - at = true; return; } diff --git a/tests/out/msl/interface.msl b/tests/out/msl/interface.msl index c9b93d86a6..d03912fabd 100644 --- a/tests/out/msl/interface.msl +++ b/tests/out/msl/interface.msl @@ -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(in1_.index), static_cast(in2_.index), static_cast(_e8), 0.0), 1.0 }; } diff --git a/tests/out/msl/operators.msl b/tests/out/msl/operators.msl index 869f086736..2a7463646f 100644 --- a/tests/out/msl/operators.msl +++ b/tests/out/msl/operators.msl @@ -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; diff --git a/tests/out/msl/policy-mix.msl b/tests/out/msl/policy-mix.msl index f6a4fe5d6d..bb7c12671a 100644 --- a/tests/out/msl/policy-mix.msl +++ b/tests/out/msl/policy-mix.msl @@ -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()); diff --git a/tests/out/msl/shadow.msl b/tests/out/msl/shadow.msl index 53f320344a..15dd042b8d 100644 --- a/tests/out/msl/shadow.msl +++ b/tests/out/msl/shadow.msl @@ -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) { diff --git a/tests/out/spv/access.spvasm b/tests/out/spv/access.spvasm index d5b6524ee7..40476395c4 100644 --- a/tests/out/spv/access.spvasm +++ b/tests/out/spv/access.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/array-in-function-return-type.spvasm b/tests/out/spv/array-in-function-return-type.spvasm index e68f6ad835..79e94fba8a 100644 --- a/tests/out/spv/array-in-function-return-type.spvasm +++ b/tests/out/spv/array-in-function-return-type.spvasm @@ -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 diff --git a/tests/out/spv/atomicCompareExchange.spvasm b/tests/out/spv/atomicCompareExchange.spvasm index c73c159ea2..d08e3656fd 100644 --- a/tests/out/spv/atomicCompareExchange.spvasm +++ b/tests/out/spv/atomicCompareExchange.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/binding-arrays.spvasm b/tests/out/spv/binding-arrays.spvasm index 57636775f0..3d3b9f8e57 100644 --- a/tests/out/spv/binding-arrays.spvasm +++ b/tests/out/spv/binding-arrays.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/binding-buffer-arrays.spvasm b/tests/out/spv/binding-buffer-arrays.spvasm index bc89271fd3..050372036d 100644 --- a/tests/out/spv/binding-buffer-arrays.spvasm +++ b/tests/out/spv/binding-buffer-arrays.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/bitcast.spvasm b/tests/out/spv/bitcast.spvasm index f8b0c93279..43dfa8df33 100644 --- a/tests/out/spv/bitcast.spvasm +++ b/tests/out/spv/bitcast.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/bits.spvasm b/tests/out/spv/bits.spvasm index 674167359f..a77c4470a6 100644 --- a/tests/out/spv/bits.spvasm +++ b/tests/out/spv/bits.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/boids.spvasm b/tests/out/spv/boids.spvasm index f57d997238..0e48e0f559 100644 --- a/tests/out/spv/boids.spvasm +++ b/tests/out/spv/boids.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/bounds-check-image-restrict.spvasm b/tests/out/spv/bounds-check-image-restrict.spvasm index 923aadecfb..038685a559 100644 --- a/tests/out/spv/bounds-check-image-restrict.spvasm +++ b/tests/out/spv/bounds-check-image-restrict.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/bounds-check-image-rzsw.spvasm b/tests/out/spv/bounds-check-image-rzsw.spvasm index 8a6cfc1b7d..a9eeb42047 100644 --- a/tests/out/spv/bounds-check-image-rzsw.spvasm +++ b/tests/out/spv/bounds-check-image-rzsw.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/break-if.spvasm b/tests/out/spv/break-if.spvasm index 9b17efb865..ea944130e7 100644 --- a/tests/out/spv/break-if.spvasm +++ b/tests/out/spv/break-if.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/collatz.spvasm b/tests/out/spv/collatz.spvasm index 310bc5c1ef..5c77a52269 100644 --- a/tests/out/spv/collatz.spvasm +++ b/tests/out/spv/collatz.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/constructors.spvasm b/tests/out/spv/constructors.spvasm index 4670ab39d3..e8e2e25957 100644 --- a/tests/out/spv/constructors.spvasm +++ b/tests/out/spv/constructors.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/control-flow.spvasm b/tests/out/spv/control-flow.spvasm index eb2f3b62ec..2fc9337cfe 100644 --- a/tests/out/spv/control-flow.spvasm +++ b/tests/out/spv/control-flow.spvasm @@ -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 diff --git a/tests/out/spv/debug-symbol-simple.spvasm b/tests/out/spv/debug-symbol-simple.spvasm index 8f64c324ce..b2fd1f2607 100644 --- a/tests/out/spv/debug-symbol-simple.spvasm +++ b/tests/out/spv/debug-symbol-simple.spvasm @@ -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, @@ -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 \ No newline at end of file diff --git a/tests/out/spv/debug-symbol-terrain.spvasm b/tests/out/spv/debug-symbol-terrain.spvasm index 044f1f169a..3f53036adc 100644 --- a/tests/out/spv/debug-symbol-terrain.spvasm +++ b/tests/out/spv/debug-symbol-terrain.spvasm @@ -1,19 +1,19 @@ ; SPIR-V ; Version: 1.1 ; Generator: rspirv -; Bound: 641 +; Bound: 638 OpCapability Shader OpExtension "SPV_KHR_storage_buffer_storage_class" %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 -OpEntryPoint GLCompute %344 "gen_terrain_compute" %341 -OpEntryPoint Vertex %414 "gen_terrain_vertex" %405 %408 %410 %412 -OpEntryPoint Fragment %464 "gen_terrain_fragment" %454 %456 %459 %462 %463 -OpEntryPoint Vertex %555 "vs_main" %546 %549 %551 %552 %554 -OpEntryPoint Fragment %581 "fs_main" %574 %576 %578 %580 -OpExecutionMode %344 LocalSize 64 1 1 -OpExecutionMode %464 OriginUpperLeft -OpExecutionMode %581 OriginUpperLeft +OpEntryPoint GLCompute %341 "gen_terrain_compute" %338 +OpEntryPoint Vertex %411 "gen_terrain_vertex" %402 %405 %407 %409 +OpEntryPoint Fragment %459 "gen_terrain_fragment" %449 %451 %454 %457 %458 +OpEntryPoint Vertex %552 "vs_main" %543 %546 %548 %549 %551 +OpEntryPoint Fragment %577 "fs_main" %570 %572 %574 %576 +OpExecutionMode %341 LocalSize 64 1 1 +OpExecutionMode %459 OriginUpperLeft +OpExecutionMode %577 OriginUpperLeft %3 = OpString "debug-symbol-terrain.wgsl" OpSource Unknown 0 %3 "// Taken from https://github.com/sotrh/learn-wgpu/blob/11820796f5e1dbce42fb1119f04ddeb4b167d2a0/code/intermediate/tutorial13-terrain/src/terrain.wgsl // ============================ @@ -358,56 +358,56 @@ OpName %49 "t_normal" OpName %50 "s_normal" OpName %52 "x" OpName %53 "permute3" -OpName %65 "i" -OpName %68 "i1" -OpName %69 "x12" -OpName %72 "m" -OpName %76 "v" -OpName %77 "snoise2" -OpName %204 "x" -OpName %205 "v" -OpName %208 "a" -OpName %209 "i" -OpName %213 "p" -OpName %214 "fbm" -OpName %254 "p" -OpName %255 "min_max_height" -OpName %256 "terrain_point" -OpName %267 "p" -OpName %268 "min_max_height" -OpName %269 "terrain_vertex" -OpName %299 "vert_index" -OpName %300 "chunk_size" -OpName %301 "chunk_corner" -OpName %302 "index_to_p" -OpName %318 "p" -OpName %319 "color23" -OpName %341 "gid" -OpName %344 "gen_terrain_compute" -OpName %405 "vindex" -OpName %408 "index" -OpName %410 "position" -OpName %412 "uv" -OpName %414 "gen_terrain_vertex" -OpName %450 "vert_component" -OpName %451 "index" -OpName %454 "index" -OpName %456 "position" -OpName %459 "uv" +OpName %66 "v" +OpName %67 "snoise2" +OpName %90 "i" +OpName %93 "i1" +OpName %95 "x12" +OpName %98 "m" +OpName %203 "p" +OpName %204 "fbm" +OpName %209 "x" +OpName %211 "v" +OpName %213 "a" +OpName %214 "i" +OpName %251 "p" +OpName %252 "min_max_height" +OpName %253 "terrain_point" +OpName %264 "p" +OpName %265 "min_max_height" +OpName %266 "terrain_vertex" +OpName %296 "vert_index" +OpName %297 "chunk_size" +OpName %298 "chunk_corner" +OpName %299 "index_to_p" +OpName %315 "p" +OpName %316 "color23" +OpName %338 "gid" +OpName %341 "gen_terrain_compute" +OpName %402 "vindex" +OpName %405 "index" +OpName %407 "position" +OpName %409 "uv" +OpName %411 "gen_terrain_vertex" +OpName %449 "index" +OpName %451 "position" +OpName %454 "uv" +OpName %457 "vert_component" +OpName %458 "index" +OpName %459 "gen_terrain_fragment" OpName %462 "vert_component" OpName %463 "index" -OpName %464 "gen_terrain_fragment" -OpName %546 "position" +OpName %543 "position" +OpName %546 "normal" +OpName %548 "clip_position" OpName %549 "normal" -OpName %551 "clip_position" -OpName %552 "normal" -OpName %554 "world_pos" -OpName %555 "vs_main" -OpName %571 "color" -OpName %574 "clip_position" -OpName %576 "normal" -OpName %578 "world_pos" -OpName %581 "fs_main" +OpName %551 "world_pos" +OpName %552 "vs_main" +OpName %570 "clip_position" +OpName %572 "normal" +OpName %574 "world_pos" +OpName %577 "fs_main" +OpName %586 "color" OpMemberDecorate %13 0 Offset 0 OpMemberDecorate %13 1 Offset 8 OpMemberDecorate %13 2 Offset 16 @@ -466,27 +466,27 @@ OpDecorate %49 DescriptorSet 2 OpDecorate %49 Binding 2 OpDecorate %50 DescriptorSet 2 OpDecorate %50 Binding 3 -OpDecorate %341 BuiltIn GlobalInvocationId -OpDecorate %405 BuiltIn VertexIndex -OpDecorate %408 Location 0 -OpDecorate %408 Flat -OpDecorate %410 BuiltIn Position -OpDecorate %412 Location 1 -OpDecorate %454 Location 0 -OpDecorate %454 Flat -OpDecorate %456 BuiltIn FragCoord -OpDecorate %459 Location 1 -OpDecorate %462 Location 0 -OpDecorate %463 Location 1 -OpDecorate %546 Location 0 -OpDecorate %549 Location 1 -OpDecorate %551 BuiltIn Position -OpDecorate %552 Location 0 -OpDecorate %554 Location 1 -OpDecorate %574 BuiltIn FragCoord +OpDecorate %338 BuiltIn GlobalInvocationId +OpDecorate %402 BuiltIn VertexIndex +OpDecorate %405 Location 0 +OpDecorate %405 Flat +OpDecorate %407 BuiltIn Position +OpDecorate %409 Location 1 +OpDecorate %449 Location 0 +OpDecorate %449 Flat +OpDecorate %451 BuiltIn FragCoord +OpDecorate %454 Location 1 +OpDecorate %457 Location 0 +OpDecorate %458 Location 1 +OpDecorate %543 Location 0 +OpDecorate %546 Location 1 +OpDecorate %548 BuiltIn Position +OpDecorate %549 Location 0 +OpDecorate %551 Location 1 +OpDecorate %570 BuiltIn FragCoord +OpDecorate %572 Location 0 +OpDecorate %574 Location 1 OpDecorate %576 Location 0 -OpDecorate %578 Location 1 -OpDecorate %580 Location 0 %2 = OpTypeVoid %5 = OpTypeFloat 32 %4 = OpTypeVector %5 3 @@ -538,920 +538,907 @@ OpDecorate %580 Location 0 %54 = OpTypeFunction %4 %4 %55 = OpConstant %5 34.0 %56 = OpConstant %5 1.0 -%57 = OpConstant %5 289.0 -%66 = OpTypePointer Function %6 -%67 = OpConstantNull %6 -%70 = OpTypePointer Function %7 -%71 = OpConstantNull %7 -%73 = OpTypePointer Function %4 -%74 = OpConstantNull %4 -%78 = OpTypeFunction %5 %6 -%79 = OpConstant %5 0.21132487 -%80 = OpConstant %5 0.36602542 -%81 = OpConstant %5 -0.57735026 -%82 = OpConstant %5 0.024390243 -%83 = OpConstant %5 0.0 -%84 = OpConstant %5 0.5 -%85 = OpConstant %5 2.0 +%57 = OpConstantComposite %4 %56 %56 %56 +%58 = OpConstant %5 289.0 +%59 = OpConstantComposite %4 %58 %58 %58 +%68 = OpTypeFunction %5 %6 +%69 = OpConstant %5 0.21132487 +%70 = OpConstant %5 0.36602542 +%71 = OpConstant %5 -0.57735026 +%72 = OpConstant %5 0.024390243 +%73 = OpConstantComposite %7 %69 %70 %71 %72 +%74 = OpConstantComposite %6 %70 %70 +%75 = OpConstantComposite %6 %69 %69 +%76 = OpConstant %5 0.0 +%77 = OpConstantComposite %6 %56 %76 +%78 = OpConstantComposite %6 %76 %56 +%79 = OpConstantComposite %7 %69 %69 %71 %71 +%80 = OpConstantComposite %6 %58 %58 +%81 = OpConstant %5 0.5 +%82 = OpConstantComposite %4 %81 %81 %81 +%83 = OpConstantComposite %4 %76 %76 %76 +%84 = OpConstant %5 2.0 +%85 = OpConstantComposite %4 %72 %72 %72 %86 = OpConstant %5 1.7928429 %87 = OpConstant %5 0.85373473 -%88 = OpConstant %5 130.0 -%107 = OpTypeBool -%110 = OpTypeVector %107 2 -%121 = OpTypePointer Function %5 -%122 = OpConstant %8 1 -%131 = OpConstant %8 0 -%206 = OpTypePointer Function %5 -%207 = OpConstantNull %5 -%210 = OpTypePointer Function %8 -%211 = OpConstantNull %8 -%215 = OpConstant %8 5 -%216 = OpConstant %5 0.01 -%217 = OpConstant %5 100.0 -%257 = OpTypeFunction %4 %6 %6 -%270 = OpTypeFunction %14 %6 %6 -%271 = OpConstant %5 0.1 -%272 = OpConstant %5 -0.1 -%303 = OpTypeFunction %6 %8 %10 %11 -%320 = OpTypeFunction %4 %6 -%321 = OpConstant %5 23.0 -%322 = OpConstant %5 32.0 -%323 = OpConstant %5 -43.0 -%324 = OpConstant %5 3.0 -%342 = OpTypePointer Input %19 -%341 = OpVariable %342 Input -%345 = OpTypeFunction %2 -%346 = OpTypePointer Uniform %13 -%348 = OpConstant %8 6 -%349 = OpConstant %8 2 -%350 = OpConstant %8 3 -%351 = OpConstant %8 4 -%354 = OpTypePointer Uniform %10 -%357 = OpTypePointer Uniform %11 -%361 = OpTypePointer StorageBuffer %15 -%362 = OpTypePointer StorageBuffer %14 -%363 = OpTypePointer Uniform %6 -%370 = OpTypePointer Uniform %8 -%391 = OpTypePointer StorageBuffer %17 -%392 = OpTypePointer StorageBuffer %8 -%406 = OpTypePointer Input %8 -%405 = OpVariable %406 Input -%409 = OpTypePointer Output %8 -%408 = OpVariable %409 Output -%411 = OpTypePointer Output %7 -%410 = OpVariable %411 Output -%413 = OpTypePointer Output %6 -%412 = OpVariable %413 Output -%415 = OpTypePointer Uniform %20 -%417 = OpConstant %5 -1.0 -%432 = OpTypePointer Uniform %8 -%454 = OpVariable %406 Input -%457 = OpTypePointer Input %7 -%456 = OpVariable %457 Input -%460 = OpTypePointer Input %6 -%459 = OpVariable %460 Input -%462 = OpVariable %409 Output -%463 = OpVariable %409 Output -%466 = OpConstant %5 6.0 -%547 = OpTypePointer Input %4 -%546 = OpVariable %547 Input -%549 = OpVariable %547 Input -%551 = OpVariable %411 Output -%553 = OpTypePointer Output %4 -%552 = OpVariable %553 Output -%554 = OpVariable %553 Output -%556 = OpTypePointer Uniform %24 -%559 = OpTypePointer Uniform %23 -%574 = OpVariable %457 Input -%576 = OpVariable %547 Input -%578 = OpVariable %547 Input -%580 = OpVariable %411 Output -%583 = OpTypePointer Uniform %25 -%585 = OpConstant %5 0.7 -%586 = OpConstant %5 0.2 -%605 = OpTypePointer Uniform %4 -%614 = OpTypePointer Uniform %7 +%88 = OpConstantComposite %4 %86 %86 %86 +%89 = OpConstant %5 130.0 +%91 = OpTypePointer Function %6 +%92 = OpConstantNull %6 +%94 = OpConstantNull %6 +%96 = OpTypePointer Function %7 +%97 = OpConstantNull %7 +%99 = OpTypePointer Function %4 +%100 = OpConstantNull %4 +%114 = OpTypeBool +%117 = OpTypeVector %114 2 +%126 = OpTypePointer Function %5 +%127 = OpConstant %8 1 +%136 = OpConstant %8 0 +%205 = OpConstant %8 5 +%206 = OpConstant %5 0.01 +%207 = OpConstant %5 100.0 +%208 = OpConstantComposite %6 %207 %207 +%210 = OpConstantNull %6 +%212 = OpTypePointer Function %5 +%215 = OpTypePointer Function %8 +%254 = OpTypeFunction %4 %6 %6 +%267 = OpTypeFunction %14 %6 %6 +%268 = OpConstant %5 0.1 +%269 = OpConstantComposite %6 %268 %76 +%270 = OpConstantComposite %6 %76 %268 +%271 = OpConstant %5 -0.1 +%272 = OpConstantComposite %6 %271 %76 +%273 = OpConstantComposite %6 %76 %271 +%300 = OpTypeFunction %6 %8 %10 %11 +%317 = OpTypeFunction %4 %6 +%318 = OpConstant %5 23.0 +%319 = OpConstant %5 32.0 +%320 = OpConstantComposite %6 %318 %319 +%321 = OpConstant %5 -43.0 +%322 = OpConstant %5 3.0 +%323 = OpConstantComposite %6 %321 %322 +%339 = OpTypePointer Input %19 +%338 = OpVariable %339 Input +%342 = OpTypeFunction %2 +%343 = OpTypePointer Uniform %13 +%345 = OpConstant %8 6 +%346 = OpConstant %8 2 +%347 = OpConstant %8 3 +%348 = OpConstant %8 4 +%351 = OpTypePointer Uniform %10 +%354 = OpTypePointer Uniform %11 +%358 = OpTypePointer StorageBuffer %15 +%359 = OpTypePointer StorageBuffer %14 +%360 = OpTypePointer Uniform %6 +%367 = OpTypePointer Uniform %8 +%388 = OpTypePointer StorageBuffer %17 +%389 = OpTypePointer StorageBuffer %8 +%403 = OpTypePointer Input %8 +%402 = OpVariable %403 Input +%406 = OpTypePointer Output %8 +%405 = OpVariable %406 Output +%408 = OpTypePointer Output %7 +%407 = OpVariable %408 Output +%410 = OpTypePointer Output %6 +%409 = OpVariable %410 Output +%412 = OpTypePointer Uniform %20 +%414 = OpConstant %5 -1.0 +%415 = OpConstantComposite %6 %414 %414 +%429 = OpTypePointer Uniform %8 +%449 = OpVariable %403 Input +%452 = OpTypePointer Input %7 +%451 = OpVariable %452 Input +%455 = OpTypePointer Input %6 +%454 = OpVariable %455 Input +%457 = OpVariable %406 Output +%458 = OpVariable %406 Output +%461 = OpConstant %5 6.0 +%544 = OpTypePointer Input %4 +%543 = OpVariable %544 Input +%546 = OpVariable %544 Input +%548 = OpVariable %408 Output +%550 = OpTypePointer Output %4 +%549 = OpVariable %550 Output +%551 = OpVariable %550 Output +%553 = OpTypePointer Uniform %24 +%556 = OpTypePointer Uniform %23 +%570 = OpVariable %452 Input +%572 = OpVariable %544 Input +%574 = OpVariable %544 Input +%576 = OpVariable %408 Output +%579 = OpTypePointer Uniform %25 +%581 = OpConstantComposite %4 %268 %268 %268 +%582 = OpConstant %5 0.7 +%583 = OpConstantComposite %4 %81 %268 %582 +%584 = OpConstant %5 0.2 +%585 = OpConstantComposite %4 %584 %584 %584 +%587 = OpConstantNull %4 +%602 = OpTypePointer Uniform %4 +%611 = OpTypePointer Uniform %7 %53 = OpFunction %4 None %54 %52 = OpFunctionParameter %4 %51 = OpLabel -OpBranch %58 -%58 = OpLabel +OpBranch %60 +%60 = OpLabel OpLine %3 10 52 -%59 = OpVectorTimesScalar %4 %52 %55 +%61 = OpVectorTimesScalar %4 %52 %55 OpLine %3 10 50 -%60 = OpCompositeConstruct %4 %56 %56 %56 -%61 = OpFAdd %4 %59 %60 -%62 = OpFMul %4 %61 %52 +%62 = OpFAdd %4 %61 %57 +%63 = OpFMul %4 %62 %52 OpLine %3 10 49 -%63 = OpCompositeConstruct %4 %57 %57 %57 -%64 = OpFRem %4 %62 %63 +%64 = OpFRem %4 %63 %59 OpReturnValue %64 OpFunctionEnd -%77 = OpFunction %5 None %78 -%76 = OpFunctionParameter %6 -%75 = OpLabel -%68 = OpVariable %66 Function %67 -%72 = OpVariable %73 Function %74 -%65 = OpVariable %66 Function %67 -%69 = OpVariable %70 Function %71 -OpBranch %89 -%89 = OpLabel +%67 = OpFunction %5 None %68 +%66 = OpFunctionParameter %6 +%65 = OpLabel +%93 = OpVariable %91 Function %94 +%98 = OpVariable %99 Function %100 +%90 = OpVariable %91 Function %92 +%95 = OpVariable %96 Function %97 +OpBranch %101 +%101 = OpLabel OpLine %3 13 13 -%90 = OpCompositeConstruct %7 %79 %80 %81 %82 OpLine %3 14 24 -%91 = OpCompositeConstruct %6 %80 %80 -%92 = OpDot %5 %76 %91 -%93 = OpCompositeConstruct %6 %92 %92 -%94 = OpFAdd %6 %76 %93 -%95 = OpExtInst %6 %1 Floor %94 +%102 = OpDot %5 %66 %74 +%103 = OpCompositeConstruct %6 %102 %102 +%104 = OpFAdd %6 %66 %103 +%105 = OpExtInst %6 %1 Floor %104 OpLine %3 14 5 -OpStore %65 %95 +OpStore %90 %105 OpLine %3 15 14 -%96 = OpLoad %6 %65 -%97 = OpFSub %6 %76 %96 -%98 = OpLoad %6 %65 -%99 = OpCompositeConstruct %6 %79 %79 -%100 = OpDot %5 %98 %99 -%101 = OpCompositeConstruct %6 %100 %100 -%102 = OpFAdd %6 %97 %101 +%106 = OpLoad %6 %90 +%107 = OpFSub %6 %66 %106 +%108 = OpLoad %6 %90 +%109 = OpDot %5 %108 %75 +%110 = OpCompositeConstruct %6 %109 %109 +%111 = OpFAdd %6 %107 %110 OpLine %3 17 32 -%103 = OpCompositeConstruct %6 %56 %83 OpLine %3 17 25 -%104 = OpCompositeConstruct %6 %83 %56 -%105 = OpCompositeExtract %5 %102 0 -%106 = OpCompositeExtract %5 %102 1 -%108 = OpFOrdLessThan %107 %105 %106 -%111 = OpCompositeConstruct %110 %108 %108 -%109 = OpSelect %6 %111 %104 %103 +%112 = OpCompositeExtract %5 %111 0 +%113 = OpCompositeExtract %5 %111 1 +%115 = OpFOrdLessThan %114 %112 %113 +%118 = OpCompositeConstruct %117 %115 %115 +%116 = OpSelect %6 %118 %78 %77 OpLine %3 17 5 -OpStore %68 %109 +OpStore %93 %116 OpLine %3 18 26 -%112 = OpVectorShuffle %7 %102 %102 0 1 0 1 -%113 = OpCompositeConstruct %7 %79 %79 %81 %81 -%114 = OpFAdd %7 %112 %113 -%115 = OpLoad %6 %68 +%119 = OpVectorShuffle %7 %111 %111 0 1 0 1 +%120 = OpFAdd %7 %119 %79 +%121 = OpLoad %6 %93 OpLine %3 18 26 -%116 = OpCompositeConstruct %7 %115 %83 %83 -%117 = OpFSub %7 %114 %116 +%122 = OpCompositeConstruct %7 %121 %76 %76 +%123 = OpFSub %7 %120 %122 OpLine %3 18 5 -OpStore %69 %117 +OpStore %95 %123 OpLine %3 1 1 -%118 = OpLoad %6 %65 +%124 = OpLoad %6 %90 OpLine %3 19 9 -%119 = OpCompositeConstruct %6 %57 %57 -%120 = OpFRem %6 %118 %119 +%125 = OpFRem %6 %124 %80 OpLine %3 19 5 -OpStore %65 %120 +OpStore %90 %125 OpLine %3 20 31 -%123 = OpAccessChain %121 %65 %122 -%124 = OpLoad %5 %123 +%128 = OpAccessChain %126 %90 %127 +%129 = OpLoad %5 %128 OpLine %3 20 51 -%125 = OpAccessChain %121 %68 %122 -%126 = OpLoad %5 %125 +%130 = OpAccessChain %126 %93 %127 +%131 = OpLoad %5 %130 OpLine %3 20 31 -%127 = OpCompositeConstruct %4 %83 %126 %56 -%128 = OpCompositeConstruct %4 %124 %124 %124 -%129 = OpFAdd %4 %128 %127 +%132 = OpCompositeConstruct %4 %76 %131 %56 +%133 = OpCompositeConstruct %4 %129 %129 %129 +%134 = OpFAdd %4 %133 %132 OpLine %3 20 22 -%130 = OpFunctionCall %4 %53 %129 +%135 = OpFunctionCall %4 %53 %134 OpLine %3 20 22 -%132 = OpAccessChain %121 %65 %131 -%133 = OpLoad %5 %132 -%134 = OpCompositeConstruct %4 %133 %133 %133 -%135 = OpFAdd %4 %130 %134 +%137 = OpAccessChain %126 %90 %136 +%138 = OpLoad %5 %137 +%139 = OpCompositeConstruct %4 %138 %138 %138 +%140 = OpFAdd %4 %135 %139 OpLine %3 20 84 -%136 = OpAccessChain %121 %68 %131 -%137 = OpLoad %5 %136 +%141 = OpAccessChain %126 %93 %136 +%142 = OpLoad %5 %141 OpLine %3 20 22 -%138 = OpCompositeConstruct %4 %83 %137 %56 -%139 = OpFAdd %4 %135 %138 +%143 = OpCompositeConstruct %4 %76 %142 %56 +%144 = OpFAdd %4 %140 %143 OpLine %3 20 13 -%140 = OpFunctionCall %4 %53 %139 +%145 = OpFunctionCall %4 %53 %144 OpLine %3 21 28 -%141 = OpDot %5 %102 %102 -%142 = OpLoad %7 %69 -%143 = OpVectorShuffle %6 %142 %142 0 1 -%144 = OpLoad %7 %69 -%145 = OpVectorShuffle %6 %144 %144 0 1 -%146 = OpDot %5 %143 %145 -%147 = OpLoad %7 %69 -%148 = OpVectorShuffle %6 %147 %147 2 3 -%149 = OpLoad %7 %69 -%150 = OpVectorShuffle %6 %149 %149 2 3 +%146 = OpDot %5 %111 %111 +%147 = OpLoad %7 %95 +%148 = OpVectorShuffle %6 %147 %147 0 1 +%149 = OpLoad %7 %95 +%150 = OpVectorShuffle %6 %149 %149 0 1 %151 = OpDot %5 %148 %150 -%152 = OpCompositeConstruct %4 %141 %146 %151 -%153 = OpCompositeConstruct %4 %84 %84 %84 -%154 = OpFSub %4 %153 %152 +%152 = OpLoad %7 %95 +%153 = OpVectorShuffle %6 %152 %152 2 3 +%154 = OpLoad %7 %95 +%155 = OpVectorShuffle %6 %154 %154 2 3 +%156 = OpDot %5 %153 %155 +%157 = OpCompositeConstruct %4 %146 %151 %156 +%158 = OpFSub %4 %82 %157 OpLine %3 21 24 -%155 = OpCompositeConstruct %4 %83 %83 %83 -%156 = OpExtInst %4 %1 FMax %154 %155 +%159 = OpExtInst %4 %1 FMax %158 %83 OpLine %3 21 5 -OpStore %72 %156 +OpStore %98 %159 OpLine %3 22 9 -%157 = OpLoad %4 %72 -%158 = OpLoad %4 %72 -%159 = OpFMul %4 %157 %158 -OpLine %3 22 5 -OpStore %72 %159 -OpLine %3 23 9 -%160 = OpLoad %4 %72 -%161 = OpLoad %4 %72 +%160 = OpLoad %4 %98 +%161 = OpLoad %4 %98 %162 = OpFMul %4 %160 %161 +OpLine %3 22 5 +OpStore %98 %162 +OpLine %3 23 9 +%163 = OpLoad %4 %98 +%164 = OpLoad %4 %98 +%165 = OpFMul %4 %163 %164 OpLine %3 23 5 -OpStore %72 %162 +OpStore %98 %165 OpLine %3 24 13 -%163 = OpCompositeConstruct %4 %82 %82 %82 -%164 = OpFMul %4 %140 %163 -%165 = OpExtInst %4 %1 Fract %164 -%166 = OpVectorTimesScalar %4 %165 %85 +%166 = OpFMul %4 %145 %85 +%167 = OpExtInst %4 %1 Fract %166 +%168 = OpVectorTimesScalar %4 %167 %84 OpLine %3 24 13 -%167 = OpCompositeConstruct %4 %56 %56 %56 -%168 = OpFSub %4 %166 %167 +%169 = OpFSub %4 %168 %57 OpLine %3 25 13 -%169 = OpExtInst %4 %1 FAbs %168 +%170 = OpExtInst %4 %1 FAbs %169 OpLine %3 25 13 -%170 = OpCompositeConstruct %4 %84 %84 %84 -%171 = OpFSub %4 %169 %170 +%171 = OpFSub %4 %170 %82 OpLine %3 26 14 -%172 = OpCompositeConstruct %4 %84 %84 %84 -%173 = OpFAdd %4 %168 %172 -%174 = OpExtInst %4 %1 Floor %173 +%172 = OpFAdd %4 %169 %82 +%173 = OpExtInst %4 %1 Floor %172 OpLine %3 27 14 -%175 = OpFSub %4 %168 %174 +%174 = OpFSub %4 %169 %173 OpLine %3 1 1 -%176 = OpLoad %4 %72 +%175 = OpLoad %4 %98 OpLine %3 28 9 -%177 = OpFMul %4 %175 %175 -%178 = OpFMul %4 %171 %171 -%179 = OpFAdd %4 %177 %178 -%180 = OpVectorTimesScalar %4 %179 %87 -%181 = OpCompositeConstruct %4 %86 %86 %86 -%182 = OpFSub %4 %181 %180 -%183 = OpFMul %4 %176 %182 +%176 = OpFMul %4 %174 %174 +%177 = OpFMul %4 %171 %171 +%178 = OpFAdd %4 %176 %177 +%179 = OpVectorTimesScalar %4 %178 %87 +%180 = OpFSub %4 %88 %179 +%181 = OpFMul %4 %175 %180 OpLine %3 28 5 -OpStore %72 %183 +OpStore %98 %181 OpLine %3 29 13 -%184 = OpCompositeExtract %5 %175 0 -%185 = OpCompositeExtract %5 %102 0 -%186 = OpFMul %5 %184 %185 -%187 = OpCompositeExtract %5 %171 0 -%188 = OpCompositeExtract %5 %102 1 -%189 = OpFMul %5 %187 %188 -%190 = OpFAdd %5 %186 %189 -%191 = OpVectorShuffle %6 %175 %175 1 2 -%192 = OpLoad %7 %69 -%193 = OpVectorShuffle %6 %192 %192 0 2 -%194 = OpFMul %6 %191 %193 -%195 = OpVectorShuffle %6 %171 %171 1 2 -%196 = OpLoad %7 %69 -%197 = OpVectorShuffle %6 %196 %196 1 3 -%198 = OpFMul %6 %195 %197 -%199 = OpFAdd %6 %194 %198 -%200 = OpCompositeConstruct %4 %190 %199 +%182 = OpCompositeExtract %5 %174 0 +%183 = OpCompositeExtract %5 %111 0 +%184 = OpFMul %5 %182 %183 +%185 = OpCompositeExtract %5 %171 0 +%186 = OpCompositeExtract %5 %111 1 +%187 = OpFMul %5 %185 %186 +%188 = OpFAdd %5 %184 %187 +%189 = OpVectorShuffle %6 %174 %174 1 2 +%190 = OpLoad %7 %95 +%191 = OpVectorShuffle %6 %190 %190 0 2 +%192 = OpFMul %6 %189 %191 +%193 = OpVectorShuffle %6 %171 %171 1 2 +%194 = OpLoad %7 %95 +%195 = OpVectorShuffle %6 %194 %194 1 3 +%196 = OpFMul %6 %193 %195 +%197 = OpFAdd %6 %192 %196 +%198 = OpCompositeConstruct %4 %188 %197 OpLine %3 30 12 -%201 = OpLoad %4 %72 -%202 = OpDot %5 %201 %200 -%203 = OpFMul %5 %88 %202 -OpReturnValue %203 +%199 = OpLoad %4 %98 +%200 = OpDot %5 %199 %198 +%201 = OpFMul %5 %89 %200 +OpReturnValue %201 OpFunctionEnd -%214 = OpFunction %5 None %78 -%213 = OpFunctionParameter %6 -%212 = OpLabel -%205 = OpVariable %206 Function %207 -%209 = OpVariable %210 Function %211 -%204 = OpVariable %66 Function %67 -%208 = OpVariable %206 Function %207 -OpBranch %218 -%218 = OpLabel +%204 = OpFunction %5 None %68 +%203 = OpFunctionParameter %6 +%202 = OpLabel +%211 = OpVariable %212 Function %76 +%214 = OpVariable %215 Function %136 +%209 = OpVariable %91 Function %210 +%213 = OpVariable %212 Function %81 +OpBranch %216 +%216 = OpLabel OpLine %3 36 13 -%219 = OpVectorTimesScalar %6 %213 %216 +%217 = OpVectorTimesScalar %6 %203 %206 OpLine %3 36 5 -OpStore %204 %219 -OpLine %3 37 5 -OpStore %205 %83 -OpLine %3 38 5 -OpStore %208 %84 +OpStore %209 %217 OpLine %3 39 17 -%220 = OpCompositeConstruct %6 %217 %217 OpLine %3 40 24 -%221 = OpExtInst %5 %1 Cos %84 +%218 = OpExtInst %5 %1 Cos %81 OpLine %3 40 14 -%222 = OpExtInst %5 %1 Sin %84 -%223 = OpCompositeConstruct %6 %221 %222 +%219 = OpExtInst %5 %1 Sin %81 +%220 = OpCompositeConstruct %6 %218 %219 OpLine %3 41 15 -%224 = OpFNegate %5 %222 -%225 = OpCompositeConstruct %6 %221 %222 -%226 = OpCompositeConstruct %6 %224 %221 -%227 = OpCompositeConstruct %9 %225 %226 -OpLine %3 43 10 -OpStore %209 %131 +%221 = OpFNegate %5 %219 +%222 = OpCompositeConstruct %6 %218 %219 +%223 = OpCompositeConstruct %6 %221 %218 +%224 = OpCompositeConstruct %9 %222 %223 +OpBranch %225 +%225 = OpLabel +OpLine %3 43 5 +OpLoopMerge %226 %228 None +OpBranch %227 +%227 = OpLabel +OpLine %3 43 22 +%229 = OpLoad %8 %214 +%230 = OpULessThan %114 %229 %205 +OpLine %3 43 21 +OpSelectionMerge %231 None +OpBranchConditional %230 %231 %232 +%232 = OpLabel +OpBranch %226 +%231 = OpLabel +OpBranch %233 +%233 = OpLabel +OpLine %3 1 1 +%235 = OpLoad %5 %211 +%236 = OpLoad %5 %213 +%237 = OpLoad %6 %209 +OpLine %3 44 21 +%238 = OpFunctionCall %5 %67 %237 +OpLine %3 44 13 +%239 = OpFMul %5 %236 %238 +%240 = OpFAdd %5 %235 %239 +OpLine %3 44 9 +OpStore %211 %240 +OpLine %3 45 13 +%241 = OpLoad %6 %209 +%242 = OpMatrixTimesVector %6 %224 %241 +OpLine %3 45 13 +%243 = OpVectorTimesScalar %6 %242 %84 +%244 = OpFAdd %6 %243 %208 +OpLine %3 45 9 +OpStore %209 %244 +OpLine %3 1 1 +%245 = OpLoad %5 %213 +OpLine %3 46 13 +%246 = OpFMul %5 %245 %81 +OpLine %3 46 9 +OpStore %213 %246 +OpBranch %234 +%234 = OpLabel OpBranch %228 %228 = OpLabel -OpLine %3 43 5 -OpLoopMerge %229 %231 None -OpBranch %230 -%230 = OpLabel -OpLine %3 43 22 -%232 = OpLoad %8 %209 -%233 = OpULessThan %107 %232 %215 -OpLine %3 43 21 -OpSelectionMerge %234 None -OpBranchConditional %233 %234 %235 -%235 = OpLabel -OpBranch %229 -%234 = OpLabel -OpBranch %236 -%236 = OpLabel OpLine %3 1 1 -%238 = OpLoad %5 %205 -%239 = OpLoad %5 %208 -%240 = OpLoad %6 %204 -OpLine %3 44 21 -%241 = OpFunctionCall %5 %77 %240 -OpLine %3 44 13 -%242 = OpFMul %5 %239 %241 -%243 = OpFAdd %5 %238 %242 -OpLine %3 44 9 -OpStore %205 %243 -OpLine %3 45 13 -%244 = OpLoad %6 %204 -%245 = OpMatrixTimesVector %6 %227 %244 -OpLine %3 45 13 -%246 = OpVectorTimesScalar %6 %245 %85 -%247 = OpFAdd %6 %246 %220 -OpLine %3 45 9 -OpStore %204 %247 -OpLine %3 1 1 -%248 = OpLoad %5 %208 -OpLine %3 46 13 -%249 = OpFMul %5 %248 %84 -OpLine %3 46 9 -OpStore %208 %249 -OpBranch %237 -%237 = OpLabel -OpBranch %231 -%231 = OpLabel -OpLine %3 1 1 -%250 = OpLoad %8 %209 +%247 = OpLoad %8 %214 OpLine %3 43 43 -%251 = OpIAdd %8 %250 %122 +%248 = OpIAdd %8 %247 %127 OpLine %3 43 39 -OpStore %209 %251 -OpBranch %228 -%229 = OpLabel +OpStore %214 %248 +OpBranch %225 +%226 = OpLabel OpLine %3 1 1 -%252 = OpLoad %5 %205 -OpReturnValue %252 +%249 = OpLoad %5 %211 +OpReturnValue %249 OpFunctionEnd -%256 = OpFunction %4 None %257 -%254 = OpFunctionParameter %6 -%255 = OpFunctionParameter %6 -%253 = OpLabel -OpBranch %258 -%258 = OpLabel +%253 = OpFunction %4 None %254 +%251 = OpFunctionParameter %6 +%252 = OpFunctionParameter %6 +%250 = OpLabel +OpBranch %255 +%255 = OpLabel OpLine %3 77 9 -%259 = OpCompositeExtract %5 %254 0 -%260 = OpCompositeExtract %5 %255 0 -%261 = OpCompositeExtract %5 %255 1 +%256 = OpCompositeExtract %5 %251 0 +%257 = OpCompositeExtract %5 %252 0 +%258 = OpCompositeExtract %5 %252 1 OpLine %3 78 49 -%262 = OpFunctionCall %5 %214 %254 +%259 = OpFunctionCall %5 %204 %251 OpLine %3 76 12 -%263 = OpExtInst %5 %1 FMix %260 %261 %262 -%264 = OpCompositeExtract %5 %254 1 -%265 = OpCompositeConstruct %4 %259 %263 %264 -OpReturnValue %265 +%260 = OpExtInst %5 %1 FMix %257 %258 %259 +%261 = OpCompositeExtract %5 %251 1 +%262 = OpCompositeConstruct %4 %256 %260 %261 +OpReturnValue %262 OpFunctionEnd -%269 = OpFunction %14 None %270 -%267 = OpFunctionParameter %6 -%268 = OpFunctionParameter %6 -%266 = OpLabel -OpBranch %273 -%273 = OpLabel +%266 = OpFunction %14 None %267 +%264 = OpFunctionParameter %6 +%265 = OpFunctionParameter %6 +%263 = OpLabel +OpBranch %274 +%274 = OpLabel OpLine %3 84 13 -%274 = OpFunctionCall %4 %256 %267 %268 +%275 = OpFunctionCall %4 %253 %264 %265 OpLine %3 86 29 -%275 = OpCompositeConstruct %6 %271 %83 -%276 = OpFAdd %6 %267 %275 +%276 = OpFAdd %6 %264 %269 OpLine %3 86 15 -%277 = OpFunctionCall %4 %256 %276 %268 +%277 = OpFunctionCall %4 %253 %276 %265 OpLine %3 86 15 -%278 = OpFSub %4 %277 %274 +%278 = OpFSub %4 %277 %275 OpLine %3 87 29 -%279 = OpCompositeConstruct %6 %83 %271 -%280 = OpFAdd %6 %267 %279 +%279 = OpFAdd %6 %264 %270 OpLine %3 87 15 -%281 = OpFunctionCall %4 %256 %280 %268 +%280 = OpFunctionCall %4 %253 %279 %265 OpLine %3 87 15 -%282 = OpFSub %4 %281 %274 +%281 = OpFSub %4 %280 %275 OpLine %3 88 29 -%283 = OpCompositeConstruct %6 %272 %83 -%284 = OpFAdd %6 %267 %283 +%282 = OpFAdd %6 %264 %272 OpLine %3 88 15 -%285 = OpFunctionCall %4 %256 %284 %268 +%283 = OpFunctionCall %4 %253 %282 %265 OpLine %3 88 15 -%286 = OpFSub %4 %285 %274 +%284 = OpFSub %4 %283 %275 OpLine %3 89 29 -%287 = OpCompositeConstruct %6 %83 %272 -%288 = OpFAdd %6 %267 %287 +%285 = OpFAdd %6 %264 %273 OpLine %3 89 15 -%289 = OpFunctionCall %4 %256 %288 %268 +%286 = OpFunctionCall %4 %253 %285 %265 OpLine %3 89 15 -%290 = OpFSub %4 %289 %274 +%287 = OpFSub %4 %286 %275 OpLine %3 91 14 -%291 = OpExtInst %4 %1 Cross %282 %278 -%292 = OpExtInst %4 %1 Normalize %291 +%288 = OpExtInst %4 %1 Cross %281 %278 +%289 = OpExtInst %4 %1 Normalize %288 OpLine %3 92 14 -%293 = OpExtInst %4 %1 Cross %290 %286 -%294 = OpExtInst %4 %1 Normalize %293 +%290 = OpExtInst %4 %1 Cross %287 %284 +%291 = OpExtInst %4 %1 Normalize %290 OpLine %3 94 14 -%295 = OpFAdd %4 %292 %294 +%292 = OpFAdd %4 %289 %291 OpLine %3 94 13 -%296 = OpVectorTimesScalar %4 %295 %84 +%293 = OpVectorTimesScalar %4 %292 %81 OpLine %3 96 12 -%297 = OpCompositeConstruct %14 %274 %296 -OpReturnValue %297 +%294 = OpCompositeConstruct %14 %275 %293 +OpReturnValue %294 OpFunctionEnd -%302 = OpFunction %6 None %303 -%299 = OpFunctionParameter %8 -%300 = OpFunctionParameter %10 -%301 = OpFunctionParameter %11 -%298 = OpLabel -OpBranch %304 -%304 = OpLabel +%299 = OpFunction %6 None %300 +%296 = OpFunctionParameter %8 +%297 = OpFunctionParameter %10 +%298 = OpFunctionParameter %11 +%295 = OpLabel +OpBranch %301 +%301 = OpLabel OpLine %3 101 9 -%305 = OpConvertUToF %5 %299 -%306 = OpCompositeExtract %8 %300 0 +%302 = OpConvertUToF %5 %296 +%303 = OpCompositeExtract %8 %297 0 OpLine %3 101 9 -%307 = OpIAdd %8 %306 %122 -%308 = OpConvertUToF %5 %307 -%309 = OpFRem %5 %305 %308 -%310 = OpCompositeExtract %8 %300 0 +%304 = OpIAdd %8 %303 %127 +%305 = OpConvertUToF %5 %304 +%306 = OpFRem %5 %302 %305 +%307 = OpCompositeExtract %8 %297 0 OpLine %3 100 12 -%311 = OpIAdd %8 %310 %122 -%312 = OpUDiv %8 %299 %311 -%313 = OpConvertUToF %5 %312 -%314 = OpCompositeConstruct %6 %309 %313 -%315 = OpConvertSToF %6 %301 -%316 = OpFAdd %6 %314 %315 -OpReturnValue %316 +%308 = OpIAdd %8 %307 %127 +%309 = OpUDiv %8 %296 %308 +%310 = OpConvertUToF %5 %309 +%311 = OpCompositeConstruct %6 %306 %310 +%312 = OpConvertSToF %6 %298 +%313 = OpFAdd %6 %311 %312 +OpReturnValue %313 OpFunctionEnd -%319 = OpFunction %4 None %320 -%318 = OpFunctionParameter %6 -%317 = OpLabel -OpBranch %325 -%325 = OpLabel +%316 = OpFunction %4 None %317 +%315 = OpFunctionParameter %6 +%314 = OpLabel +OpBranch %324 +%324 = OpLabel OpLine %3 270 9 -%326 = OpFunctionCall %5 %77 %318 +%325 = OpFunctionCall %5 %67 %315 OpLine %3 270 9 -%327 = OpFMul %5 %326 %84 +%326 = OpFMul %5 %325 %81 OpLine %3 270 9 -%328 = OpFAdd %5 %327 %84 +%327 = OpFAdd %5 %326 %81 OpLine %3 271 17 -%329 = OpCompositeConstruct %6 %321 %322 -%330 = OpFAdd %6 %318 %329 +%328 = OpFAdd %6 %315 %320 OpLine %3 271 9 -%331 = OpFunctionCall %5 %77 %330 +%329 = OpFunctionCall %5 %67 %328 OpLine %3 271 9 -%332 = OpFMul %5 %331 %84 +%330 = OpFMul %5 %329 %81 OpLine %3 271 9 -%333 = OpFAdd %5 %332 %84 +%331 = OpFAdd %5 %330 %81 OpLine %3 272 17 -%334 = OpCompositeConstruct %6 %323 %324 -%335 = OpFAdd %6 %318 %334 +%332 = OpFAdd %6 %315 %323 OpLine %3 272 9 -%336 = OpFunctionCall %5 %77 %335 +%333 = OpFunctionCall %5 %67 %332 OpLine %3 272 9 -%337 = OpFMul %5 %336 %84 +%334 = OpFMul %5 %333 %81 OpLine %3 269 12 -%338 = OpFAdd %5 %337 %84 -%339 = OpCompositeConstruct %4 %328 %333 %338 -OpReturnValue %339 +%335 = OpFAdd %5 %334 %81 +%336 = OpCompositeConstruct %4 %327 %331 %335 +OpReturnValue %336 OpFunctionEnd -%344 = OpFunction %2 None %345 -%340 = OpLabel -%343 = OpLoad %19 %341 -%347 = OpAccessChain %346 %29 %131 -OpBranch %352 -%352 = OpLabel +%341 = OpFunction %2 None %342 +%337 = OpLabel +%340 = OpLoad %19 %338 +%344 = OpAccessChain %343 %29 %136 +OpBranch %349 +%349 = OpLabel OpLine %3 111 22 -%353 = OpCompositeExtract %8 %343 0 +%350 = OpCompositeExtract %8 %340 0 OpLine %3 113 36 -%355 = OpAccessChain %354 %347 %131 -%356 = OpLoad %10 %355 +%352 = OpAccessChain %351 %344 %136 +%353 = OpLoad %10 %352 OpLine %3 113 59 -%358 = OpAccessChain %357 %347 %122 -%359 = OpLoad %11 %358 +%355 = OpAccessChain %354 %344 %127 +%356 = OpLoad %11 %355 OpLine %3 113 13 -%360 = OpFunctionCall %6 %302 %353 %356 %359 +%357 = OpFunctionCall %6 %299 %350 %353 %356 OpLine %3 115 5 OpLine %3 115 51 -%364 = OpAccessChain %363 %347 %349 -%365 = OpLoad %6 %364 +%361 = OpAccessChain %360 %344 %346 +%362 = OpLoad %6 %361 OpLine %3 115 33 -%366 = OpFunctionCall %14 %269 %360 %365 +%363 = OpFunctionCall %14 %266 %357 %362 OpLine %3 115 5 -%367 = OpAccessChain %362 %32 %131 %353 -OpStore %367 %366 +%364 = OpAccessChain %359 %32 %136 %350 +OpStore %364 %363 OpLine %3 118 23 -%368 = OpCompositeExtract %8 %343 0 +%365 = OpCompositeExtract %8 %340 0 OpLine %3 118 23 -%369 = OpIMul %8 %368 %348 +%366 = OpIMul %8 %365 %345 OpLine %3 120 25 -%371 = OpAccessChain %370 %347 %131 %131 -%372 = OpLoad %8 %371 +%368 = OpAccessChain %367 %344 %136 %136 +%369 = OpLoad %8 %368 OpLine %3 120 25 -%373 = OpAccessChain %370 %347 %131 %122 -%374 = OpLoad %8 %373 -%375 = OpIMul %8 %372 %374 +%370 = OpAccessChain %367 %344 %136 %127 +%371 = OpLoad %8 %370 +%372 = OpIMul %8 %369 %371 OpLine %3 120 9 -%376 = OpIMul %8 %375 %348 -%377 = OpUGreaterThanEqual %107 %369 %376 +%373 = OpIMul %8 %372 %345 +%374 = OpUGreaterThanEqual %114 %366 %373 OpLine %3 120 5 -OpSelectionMerge %378 None -OpBranchConditional %377 %379 %378 -%379 = OpLabel +OpSelectionMerge %375 None +OpBranchConditional %374 %376 %375 +%376 = OpLabel OpReturn -%378 = OpLabel +%375 = OpLabel OpLine %3 122 28 -%380 = OpCompositeExtract %8 %343 0 +%377 = OpCompositeExtract %8 %340 0 OpLine %3 122 15 -%381 = OpAccessChain %370 %347 %131 %131 -%382 = OpLoad %8 %381 -%383 = OpUDiv %8 %380 %382 -%384 = OpIAdd %8 %353 %383 +%378 = OpAccessChain %367 %344 %136 %136 +%379 = OpLoad %8 %378 +%380 = OpUDiv %8 %377 %379 +%381 = OpIAdd %8 %350 %380 OpLine %3 123 15 -%385 = OpIAdd %8 %384 %122 +%382 = OpIAdd %8 %381 %127 OpLine %3 124 15 -%386 = OpAccessChain %370 %347 %131 %131 -%387 = OpLoad %8 %386 -%388 = OpIAdd %8 %384 %387 +%383 = OpAccessChain %367 %344 %136 %136 +%384 = OpLoad %8 %383 +%385 = OpIAdd %8 %381 %384 OpLine %3 124 15 -%389 = OpIAdd %8 %388 %122 +%386 = OpIAdd %8 %385 %127 OpLine %3 125 15 -%390 = OpIAdd %8 %389 %122 +%387 = OpIAdd %8 %386 %127 OpLine %3 127 5 OpLine %3 127 5 -%393 = OpAccessChain %392 %34 %131 %369 -OpStore %393 %384 +%390 = OpAccessChain %389 %34 %136 %366 +OpStore %390 %381 OpLine %3 128 5 OpLine %3 128 5 -%394 = OpIAdd %8 %369 %122 +%391 = OpIAdd %8 %366 %127 OpLine %3 128 5 -%395 = OpAccessChain %392 %34 %131 %394 -OpStore %395 %389 +%392 = OpAccessChain %389 %34 %136 %391 +OpStore %392 %386 OpLine %3 129 5 OpLine %3 129 5 -%396 = OpIAdd %8 %369 %349 +%393 = OpIAdd %8 %366 %346 OpLine %3 129 5 -%397 = OpAccessChain %392 %34 %131 %396 -OpStore %397 %390 +%394 = OpAccessChain %389 %34 %136 %393 +OpStore %394 %387 OpLine %3 130 5 OpLine %3 130 5 -%398 = OpIAdd %8 %369 %350 +%395 = OpIAdd %8 %366 %347 OpLine %3 130 5 -%399 = OpAccessChain %392 %34 %131 %398 -OpStore %399 %384 +%396 = OpAccessChain %389 %34 %136 %395 +OpStore %396 %381 OpLine %3 131 5 OpLine %3 131 5 -%400 = OpIAdd %8 %369 %351 +%397 = OpIAdd %8 %366 %348 OpLine %3 131 5 -%401 = OpAccessChain %392 %34 %131 %400 -OpStore %401 %390 +%398 = OpAccessChain %389 %34 %136 %397 +OpStore %398 %387 OpLine %3 132 5 OpLine %3 132 5 -%402 = OpIAdd %8 %369 %215 +%399 = OpIAdd %8 %366 %205 OpLine %3 132 5 -%403 = OpAccessChain %392 %34 %131 %402 -OpStore %403 %385 +%400 = OpAccessChain %389 %34 %136 %399 +OpStore %400 %382 OpReturn OpFunctionEnd -%414 = OpFunction %2 None %345 -%404 = OpLabel -%407 = OpLoad %8 %405 -%416 = OpAccessChain %415 %36 %131 -OpBranch %418 -%418 = OpLabel +%411 = OpFunction %2 None %342 +%401 = OpLabel +%404 = OpLoad %8 %402 +%413 = OpAccessChain %412 %36 %136 +OpBranch %416 +%416 = OpLabel OpLine %3 161 19 -%419 = OpIAdd %8 %407 %349 +%417 = OpIAdd %8 %404 %346 OpLine %3 161 18 -%420 = OpUDiv %8 %419 %350 +%418 = OpUDiv %8 %417 %347 OpLine %3 161 13 -%421 = OpUMod %8 %420 %349 -%422 = OpConvertUToF %5 %421 +%419 = OpUMod %8 %418 %346 +%420 = OpConvertUToF %5 %419 OpLine %3 162 19 -%423 = OpIAdd %8 %407 %122 +%421 = OpIAdd %8 %404 %127 OpLine %3 162 18 -%424 = OpUDiv %8 %423 %350 +%422 = OpUDiv %8 %421 %347 OpLine %3 162 13 -%425 = OpUMod %8 %424 %349 -%426 = OpConvertUToF %5 %425 +%423 = OpUMod %8 %422 %346 +%424 = OpConvertUToF %5 %423 OpLine %3 163 14 -%427 = OpCompositeConstruct %6 %422 %426 +%425 = OpCompositeConstruct %6 %420 %424 OpLine %3 165 30 -%428 = OpVectorTimesScalar %6 %427 %85 -%429 = OpCompositeConstruct %6 %417 %417 -%430 = OpFAdd %6 %429 %428 +%426 = OpVectorTimesScalar %6 %425 %84 +%427 = OpFAdd %6 %415 %426 OpLine %3 165 20 -%431 = OpCompositeConstruct %7 %430 %83 %56 +%428 = OpCompositeConstruct %7 %427 %76 %56 OpLine %3 168 21 -%433 = OpAccessChain %432 %416 %350 -%434 = OpLoad %8 %433 -%435 = OpConvertUToF %5 %434 -%436 = OpFMul %5 %422 %435 +%430 = OpAccessChain %429 %413 %347 +%431 = OpLoad %8 %430 +%432 = OpConvertUToF %5 %431 +%433 = OpFMul %5 %420 %432 OpLine %3 168 17 -%437 = OpAccessChain %432 %416 %350 -%438 = OpLoad %8 %437 -%439 = OpConvertUToF %5 %438 -%440 = OpFMul %5 %426 %439 -%441 = OpFAdd %5 %436 %440 -%442 = OpConvertFToU %8 %441 +%434 = OpAccessChain %429 %413 %347 +%435 = OpLoad %8 %434 +%436 = OpConvertUToF %5 %435 +%437 = OpFMul %5 %424 %436 +%438 = OpFAdd %5 %433 %437 +%439 = OpConvertFToU %8 %438 OpLine %3 168 17 -%443 = OpAccessChain %432 %416 %351 -%444 = OpLoad %8 %443 -%445 = OpIAdd %8 %442 %444 +%440 = OpAccessChain %429 %413 %348 +%441 = OpLoad %8 %440 +%442 = OpIAdd %8 %439 %441 OpLine %3 170 12 -%446 = OpCompositeConstruct %21 %445 %431 %427 -%447 = OpCompositeExtract %8 %446 0 -OpStore %408 %447 -%448 = OpCompositeExtract %7 %446 1 -OpStore %410 %448 -%449 = OpCompositeExtract %6 %446 2 -OpStore %412 %449 +%443 = OpCompositeConstruct %21 %442 %428 %425 +%444 = OpCompositeExtract %8 %443 0 +OpStore %405 %444 +%445 = OpCompositeExtract %7 %443 1 +OpStore %407 %445 +%446 = OpCompositeExtract %6 %443 2 +OpStore %409 %446 OpReturn OpFunctionEnd -%464 = OpFunction %2 None %345 -%452 = OpLabel -%450 = OpVariable %206 Function %207 -%451 = OpVariable %210 Function %211 -%455 = OpLoad %8 %454 -%458 = OpLoad %7 %456 -%461 = OpLoad %6 %459 -%453 = OpCompositeConstruct %21 %455 %458 %461 -%465 = OpAccessChain %415 %36 %131 -OpBranch %467 -%467 = OpLabel +%459 = OpFunction %2 None %342 +%447 = OpLabel +%462 = OpVariable %212 Function %76 +%463 = OpVariable %215 Function %136 +%450 = OpLoad %8 %449 +%453 = OpLoad %7 %451 +%456 = OpLoad %6 %454 +%448 = OpCompositeConstruct %21 %450 %453 %456 +%460 = OpAccessChain %412 %36 %136 +OpBranch %464 +%464 = OpLabel OpLine %3 181 17 -%468 = OpCompositeExtract %6 %453 2 -%469 = OpCompositeExtract %5 %468 0 +%465 = OpCompositeExtract %6 %448 2 +%466 = OpCompositeExtract %5 %465 0 OpLine %3 181 17 -%470 = OpAccessChain %432 %465 %350 -%471 = OpLoad %8 %470 -%472 = OpConvertUToF %5 %471 -%473 = OpFMul %5 %469 %472 -%474 = OpCompositeExtract %6 %453 2 -%475 = OpCompositeExtract %5 %474 1 +%467 = OpAccessChain %429 %460 %347 +%468 = OpLoad %8 %467 +%469 = OpConvertUToF %5 %468 +%470 = OpFMul %5 %466 %469 +%471 = OpCompositeExtract %6 %448 2 +%472 = OpCompositeExtract %5 %471 1 OpLine %3 181 70 -%476 = OpAccessChain %432 %465 %350 -%477 = OpLoad %8 %476 +%473 = OpAccessChain %429 %460 %347 +%474 = OpLoad %8 %473 OpLine %3 181 13 -%478 = OpAccessChain %432 %465 %350 -%479 = OpLoad %8 %478 -%480 = OpIMul %8 %477 %479 -%481 = OpConvertUToF %5 %480 -%482 = OpFMul %5 %475 %481 -%483 = OpFAdd %5 %473 %482 -%484 = OpConvertFToU %8 %483 +%475 = OpAccessChain %429 %460 %347 +%476 = OpLoad %8 %475 +%477 = OpIMul %8 %474 %476 +%478 = OpConvertUToF %5 %477 +%479 = OpFMul %5 %472 %478 +%480 = OpFAdd %5 %470 %479 +%481 = OpConvertFToU %8 %480 OpLine %3 181 13 -%485 = OpAccessChain %432 %465 %351 -%486 = OpLoad %8 %485 -%487 = OpIAdd %8 %484 %486 +%482 = OpAccessChain %429 %460 %348 +%483 = OpLoad %8 %482 +%484 = OpIAdd %8 %481 %483 OpLine %3 182 32 -%488 = OpConvertUToF %5 %487 +%485 = OpConvertUToF %5 %484 OpLine %3 182 22 -%489 = OpFDiv %5 %488 %466 -%490 = OpExtInst %5 %1 Floor %489 -%491 = OpConvertFToU %8 %490 +%486 = OpFDiv %5 %485 %461 +%487 = OpExtInst %5 %1 Floor %486 +%488 = OpConvertFToU %8 %487 OpLine %3 183 22 -%492 = OpUMod %8 %487 %348 +%489 = OpUMod %8 %484 %345 OpLine %3 185 36 -%493 = OpAccessChain %354 %465 %131 -%494 = OpLoad %10 %493 +%490 = OpAccessChain %351 %460 %136 +%491 = OpLoad %10 %490 OpLine %3 185 57 -%495 = OpAccessChain %357 %465 %122 -%496 = OpLoad %11 %495 +%492 = OpAccessChain %354 %460 %127 +%493 = OpLoad %11 %492 OpLine %3 185 13 -%497 = OpFunctionCall %6 %302 %491 %494 %496 +%494 = OpFunctionCall %6 %299 %488 %491 %493 OpLine %3 186 31 -%498 = OpAccessChain %363 %465 %349 -%499 = OpLoad %6 %498 +%495 = OpAccessChain %360 %460 %346 +%496 = OpLoad %6 %495 OpLine %3 186 13 -%500 = OpFunctionCall %14 %269 %497 %499 -OpLine %3 188 5 -OpStore %450 %83 +%497 = OpFunctionCall %14 %266 %494 %496 OpLine %3 190 5 -OpSelectionMerge %501 None -OpSwitch %492 %508 0 %502 1 %503 2 %504 3 %505 4 %506 5 %507 -%502 = OpLabel +OpSelectionMerge %498 None +OpSwitch %489 %505 0 %499 1 %500 2 %501 3 %502 4 %503 5 %504 +%499 = OpLabel OpLine %3 191 37 -%509 = OpCompositeExtract %4 %500 0 -%510 = OpCompositeExtract %5 %509 0 +%506 = OpCompositeExtract %4 %497 0 +%507 = OpCompositeExtract %5 %506 0 OpLine %3 191 20 -OpStore %450 %510 -OpBranch %501 -%503 = OpLabel +OpStore %462 %507 +OpBranch %498 +%500 = OpLabel OpLine %3 192 37 -%511 = OpCompositeExtract %4 %500 0 -%512 = OpCompositeExtract %5 %511 1 +%508 = OpCompositeExtract %4 %497 0 +%509 = OpCompositeExtract %5 %508 1 OpLine %3 192 20 -OpStore %450 %512 -OpBranch %501 -%504 = OpLabel -OpLine %3 193 37 -%513 = OpCompositeExtract %4 %500 0 -%514 = OpCompositeExtract %5 %513 2 -OpLine %3 193 20 -OpStore %450 %514 -OpBranch %501 -%505 = OpLabel -OpLine %3 194 37 -%515 = OpCompositeExtract %4 %500 1 -%516 = OpCompositeExtract %5 %515 0 -OpLine %3 194 20 -OpStore %450 %516 -OpBranch %501 -%506 = OpLabel -OpLine %3 195 37 -%517 = OpCompositeExtract %4 %500 1 -%518 = OpCompositeExtract %5 %517 1 -OpLine %3 195 20 -OpStore %450 %518 -OpBranch %501 -%507 = OpLabel -OpLine %3 196 37 -%519 = OpCompositeExtract %4 %500 1 -%520 = OpCompositeExtract %5 %519 2 -OpLine %3 196 20 -OpStore %450 %520 -OpBranch %501 -%508 = OpLabel -OpBranch %501 +OpStore %462 %509 +OpBranch %498 %501 = OpLabel +OpLine %3 193 37 +%510 = OpCompositeExtract %4 %497 0 +%511 = OpCompositeExtract %5 %510 2 +OpLine %3 193 20 +OpStore %462 %511 +OpBranch %498 +%502 = OpLabel +OpLine %3 194 37 +%512 = OpCompositeExtract %4 %497 1 +%513 = OpCompositeExtract %5 %512 0 +OpLine %3 194 20 +OpStore %462 %513 +OpBranch %498 +%503 = OpLabel +OpLine %3 195 37 +%514 = OpCompositeExtract %4 %497 1 +%515 = OpCompositeExtract %5 %514 1 +OpLine %3 195 20 +OpStore %462 %515 +OpBranch %498 +%504 = OpLabel +OpLine %3 196 37 +%516 = OpCompositeExtract %4 %497 1 +%517 = OpCompositeExtract %5 %516 2 +OpLine %3 196 20 +OpStore %462 %517 +OpBranch %498 +%505 = OpLabel +OpBranch %498 +%498 = OpLabel OpLine %3 200 15 -%521 = OpAccessChain %370 %465 %131 %131 -%522 = OpLoad %8 %521 -%523 = OpUDiv %8 %491 %522 -%524 = OpIAdd %8 %491 %523 +%518 = OpAccessChain %367 %460 %136 %136 +%519 = OpLoad %8 %518 +%520 = OpUDiv %8 %488 %519 +%521 = OpIAdd %8 %488 %520 OpLine %3 201 15 -%525 = OpIAdd %8 %524 %122 +%522 = OpIAdd %8 %521 %127 OpLine %3 202 15 -%526 = OpAccessChain %370 %465 %131 %131 -%527 = OpLoad %8 %526 -%528 = OpIAdd %8 %524 %527 +%523 = OpAccessChain %367 %460 %136 %136 +%524 = OpLoad %8 %523 +%525 = OpIAdd %8 %521 %524 OpLine %3 202 15 -%529 = OpIAdd %8 %528 %122 +%526 = OpIAdd %8 %525 %127 OpLine %3 203 15 -%530 = OpIAdd %8 %529 %122 -OpLine %3 205 5 -OpStore %451 %131 +%527 = OpIAdd %8 %526 %127 OpLine %3 206 5 -OpSelectionMerge %531 None -OpSwitch %492 %536 0 %532 3 %532 2 %533 4 %533 1 %534 5 %535 -%532 = OpLabel +OpSelectionMerge %528 None +OpSwitch %489 %533 0 %529 3 %529 2 %530 4 %530 1 %531 5 %532 +%529 = OpLabel OpLine %3 207 24 -OpStore %451 %524 -OpBranch %531 -%533 = OpLabel +OpStore %463 %521 +OpBranch %528 +%530 = OpLabel OpLine %3 208 24 -OpStore %451 %530 -OpBranch %531 -%534 = OpLabel -OpLine %3 209 20 -OpStore %451 %529 -OpBranch %531 -%535 = OpLabel -OpLine %3 210 20 -OpStore %451 %525 -OpBranch %531 -%536 = OpLabel -OpBranch %531 +OpStore %463 %527 +OpBranch %528 %531 = OpLabel +OpLine %3 209 20 +OpStore %463 %526 +OpBranch %528 +%532 = OpLabel +OpLine %3 210 20 +OpStore %463 %522 +OpBranch %528 +%533 = OpLabel +OpBranch %528 +%528 = OpLabel OpLine %3 213 13 -%537 = OpCompositeExtract %8 %453 0 +%534 = OpCompositeExtract %8 %448 0 OpLine %3 213 5 -OpStore %451 %537 +OpStore %463 %534 OpLine %3 222 27 -%538 = OpLoad %5 %450 -%539 = OpBitcast %8 %538 +%535 = OpLoad %5 %462 +%536 = OpBitcast %8 %535 OpLine %3 223 12 -%540 = OpLoad %8 %451 -%541 = OpCompositeConstruct %22 %539 %540 -%542 = OpCompositeExtract %8 %541 0 -OpStore %462 %542 -%543 = OpCompositeExtract %8 %541 1 -OpStore %463 %543 +%537 = OpLoad %8 %463 +%538 = OpCompositeConstruct %22 %536 %537 +%539 = OpCompositeExtract %8 %538 0 +OpStore %457 %539 +%540 = OpCompositeExtract %8 %538 1 +OpStore %458 %540 OpReturn OpFunctionEnd -%555 = OpFunction %2 None %345 -%544 = OpLabel -%548 = OpLoad %4 %546 -%550 = OpLoad %4 %549 -%545 = OpCompositeConstruct %14 %548 %550 -%557 = OpAccessChain %556 %39 %131 -OpBranch %558 -%558 = OpLabel +%552 = OpFunction %2 None %342 +%541 = OpLabel +%545 = OpLoad %4 %543 +%547 = OpLoad %4 %546 +%542 = OpCompositeConstruct %14 %545 %547 +%554 = OpAccessChain %553 %39 %136 +OpBranch %555 +%555 = OpLabel OpLine %3 254 25 -%560 = OpAccessChain %559 %557 %122 -%561 = OpLoad %23 %560 -%562 = OpCompositeExtract %4 %545 0 +%557 = OpAccessChain %556 %554 %127 +%558 = OpLoad %23 %557 +%559 = OpCompositeExtract %4 %542 0 OpLine %3 254 25 -%563 = OpCompositeConstruct %7 %562 %56 -%564 = OpMatrixTimesVector %7 %561 %563 +%560 = OpCompositeConstruct %7 %559 %56 +%561 = OpMatrixTimesVector %7 %558 %560 OpLine %3 255 18 -%565 = OpCompositeExtract %4 %545 1 +%562 = OpCompositeExtract %4 %542 1 OpLine %3 256 12 -%566 = OpCompositeExtract %4 %545 0 -%567 = OpCompositeConstruct %26 %564 %565 %566 -%568 = OpCompositeExtract %7 %567 0 -OpStore %551 %568 -%569 = OpCompositeExtract %4 %567 1 -OpStore %552 %569 -%570 = OpCompositeExtract %4 %567 2 -OpStore %554 %570 +%563 = OpCompositeExtract %4 %542 0 +%564 = OpCompositeConstruct %26 %561 %562 %563 +%565 = OpCompositeExtract %7 %564 0 +OpStore %548 %565 +%566 = OpCompositeExtract %4 %564 1 +OpStore %549 %566 +%567 = OpCompositeExtract %4 %564 2 +OpStore %551 %567 OpReturn OpFunctionEnd -%581 = OpFunction %2 None %345 -%572 = OpLabel -%571 = OpVariable %73 Function %74 -%575 = OpLoad %7 %574 -%577 = OpLoad %4 %576 -%579 = OpLoad %4 %578 -%573 = OpCompositeConstruct %26 %575 %577 %579 -%582 = OpAccessChain %556 %39 %131 -%584 = OpAccessChain %583 %42 %131 -OpBranch %587 -%587 = OpLabel +%577 = OpFunction %2 None %342 +%568 = OpLabel +%586 = OpVariable %99 Function %587 +%571 = OpLoad %7 %570 +%573 = OpLoad %4 %572 +%575 = OpLoad %4 %574 +%569 = OpCompositeConstruct %26 %571 %573 %575 +%578 = OpAccessChain %553 %39 %136 +%580 = OpAccessChain %579 %42 %136 +OpBranch %588 +%588 = OpLabel OpLine %3 278 28 -%588 = OpCompositeConstruct %4 %83 %83 %83 OpLine %3 278 17 -%589 = OpCompositeConstruct %4 %271 %271 %271 -%590 = OpCompositeExtract %4 %573 2 -%591 = OpExtInst %4 %1 Fract %590 -%592 = OpExtInst %4 %1 SmoothStep %588 %589 %591 +%589 = OpCompositeExtract %4 %569 2 +%590 = OpExtInst %4 %1 Fract %589 +%591 = OpExtInst %4 %1 SmoothStep %83 %581 %590 OpLine %3 278 5 -OpStore %571 %592 +OpStore %586 %591 OpLine %3 279 17 -%593 = OpCompositeConstruct %4 %84 %271 %585 OpLine %3 279 13 -%594 = OpCompositeConstruct %4 %586 %586 %586 -%595 = OpAccessChain %121 %571 %131 -%596 = OpLoad %5 %595 -%597 = OpAccessChain %121 %571 %122 +%592 = OpAccessChain %126 %586 %136 +%593 = OpLoad %5 %592 +%594 = OpAccessChain %126 %586 %127 +%595 = OpLoad %5 %594 +%596 = OpFMul %5 %593 %595 +%597 = OpAccessChain %126 %586 %346 %598 = OpLoad %5 %597 %599 = OpFMul %5 %596 %598 -%600 = OpAccessChain %121 %571 %349 -%601 = OpLoad %5 %600 -%602 = OpFMul %5 %599 %601 -%603 = OpCompositeConstruct %4 %602 %602 %602 -%604 = OpExtInst %4 %1 FMix %593 %594 %603 +%600 = OpCompositeConstruct %4 %599 %599 %599 +%601 = OpExtInst %4 %1 FMix %583 %585 %600 OpLine %3 279 5 -OpStore %571 %604 +OpStore %586 %601 OpLine %3 282 25 -%606 = OpAccessChain %605 %584 %122 -%607 = OpLoad %4 %606 -%608 = OpVectorTimesScalar %4 %607 %271 +%603 = OpAccessChain %602 %580 %127 +%604 = OpLoad %4 %603 +%605 = OpVectorTimesScalar %4 %604 %268 OpLine %3 284 21 -%609 = OpAccessChain %605 %584 %131 -%610 = OpLoad %4 %609 -%611 = OpCompositeExtract %4 %573 2 -%612 = OpFSub %4 %610 %611 -%613 = OpExtInst %4 %1 Normalize %612 +%606 = OpAccessChain %602 %580 %136 +%607 = OpLoad %4 %606 +%608 = OpCompositeExtract %4 %569 2 +%609 = OpFSub %4 %607 %608 +%610 = OpExtInst %4 %1 Normalize %609 OpLine %3 285 20 -%615 = OpAccessChain %614 %582 %131 -%616 = OpLoad %7 %615 -%617 = OpVectorShuffle %4 %616 %616 0 1 2 -%618 = OpCompositeExtract %4 %573 2 -%619 = OpFSub %4 %617 %618 -%620 = OpExtInst %4 %1 Normalize %619 +%612 = OpAccessChain %611 %578 %136 +%613 = OpLoad %7 %612 +%614 = OpVectorShuffle %4 %613 %613 0 1 2 +%615 = OpCompositeExtract %4 %569 2 +%616 = OpFSub %4 %614 %615 +%617 = OpExtInst %4 %1 Normalize %616 OpLine %3 286 20 -%621 = OpFAdd %4 %620 %613 -%622 = OpExtInst %4 %1 Normalize %621 +%618 = OpFAdd %4 %617 %610 +%619 = OpExtInst %4 %1 Normalize %618 OpLine %3 288 32 -%623 = OpCompositeExtract %4 %573 1 -%624 = OpDot %5 %623 %613 +%620 = OpCompositeExtract %4 %569 1 +%621 = OpDot %5 %620 %610 OpLine %3 288 28 -%625 = OpExtInst %5 %1 FMax %624 %83 +%622 = OpExtInst %5 %1 FMax %621 %76 OpLine %3 289 25 -%626 = OpAccessChain %605 %584 %122 -%627 = OpLoad %4 %626 -%628 = OpVectorTimesScalar %4 %627 %625 +%623 = OpAccessChain %602 %580 %127 +%624 = OpLoad %4 %623 +%625 = OpVectorTimesScalar %4 %624 %622 OpLine %3 291 37 -%629 = OpCompositeExtract %4 %573 1 -%630 = OpDot %5 %629 %622 +%626 = OpCompositeExtract %4 %569 1 +%627 = OpDot %5 %626 %619 OpLine %3 291 33 -%631 = OpExtInst %5 %1 FMax %630 %83 +%628 = OpExtInst %5 %1 FMax %627 %76 OpLine %3 291 29 -%632 = OpExtInst %5 %1 Pow %631 %322 +%629 = OpExtInst %5 %1 Pow %628 %319 OpLine %3 292 26 -%633 = OpAccessChain %605 %584 %122 -%634 = OpLoad %4 %633 -%635 = OpVectorTimesScalar %4 %634 %632 +%630 = OpAccessChain %602 %580 %127 +%631 = OpLoad %4 %630 +%632 = OpVectorTimesScalar %4 %631 %629 OpLine %3 294 18 -%636 = OpFAdd %4 %608 %628 -%637 = OpFAdd %4 %636 %635 -%638 = OpLoad %4 %571 -%639 = OpFMul %4 %637 %638 +%633 = OpFAdd %4 %605 %625 +%634 = OpFAdd %4 %633 %632 +%635 = OpLoad %4 %586 +%636 = OpFMul %4 %634 %635 OpLine %3 296 12 -%640 = OpCompositeConstruct %7 %639 %56 -OpStore %580 %640 +%637 = OpCompositeConstruct %7 %636 %56 +OpStore %576 %637 OpReturn OpFunctionEnd \ No newline at end of file diff --git a/tests/out/spv/dualsource.spvasm b/tests/out/spv/dualsource.spvasm index 0fba6bb269..a5c692b4c4 100644 --- a/tests/out/spv/dualsource.spvasm +++ b/tests/out/spv/dualsource.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/extra.spvasm b/tests/out/spv/extra.spvasm index 93de9e8d99..9c434a8ce2 100644 --- a/tests/out/spv/extra.spvasm +++ b/tests/out/spv/extra.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/fragment-output.spvasm b/tests/out/spv/fragment-output.spvasm index 0a6541799d..c61ffb8258 100644 --- a/tests/out/spv/fragment-output.spvasm +++ b/tests/out/spv/fragment-output.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/functions.spvasm b/tests/out/spv/functions.spvasm index a7338a932d..463f7da0b2 100644 --- a/tests/out/spv/functions.spvasm +++ b/tests/out/spv/functions.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/globals.spvasm b/tests/out/spv/globals.spvasm index 9050f944bb..4aa6a10ad5 100644 --- a/tests/out/spv/globals.spvasm +++ b/tests/out/spv/globals.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/image.spvasm b/tests/out/spv/image.spvasm index 06aa36bcb2..ec35372f8a 100644 --- a/tests/out/spv/image.spvasm +++ b/tests/out/spv/image.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/interface.vertex.spvasm b/tests/out/spv/interface.vertex.spvasm index d2c9492962..eaa947f5b3 100644 --- a/tests/out/spv/interface.vertex.spvasm +++ b/tests/out/spv/interface.vertex.spvasm @@ -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 diff --git a/tests/out/spv/interface.vertex_two_structs.spvasm b/tests/out/spv/interface.vertex_two_structs.spvasm index 505c558433..bcc4aab4e5 100644 --- a/tests/out/spv/interface.vertex_two_structs.spvasm +++ b/tests/out/spv/interface.vertex_two_structs.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/interpolate.spvasm b/tests/out/spv/interpolate.spvasm index bcfad15c14..d2a67a9fd2 100644 --- a/tests/out/spv/interpolate.spvasm +++ b/tests/out/spv/interpolate.spvasm @@ -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 diff --git a/tests/out/spv/math-functions.spvasm b/tests/out/spv/math-functions.spvasm index 7edb0e26b4..ba3e7cffb9 100644 --- a/tests/out/spv/math-functions.spvasm +++ b/tests/out/spv/math-functions.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/operators.spvasm b/tests/out/spv/operators.spvasm index 5e2125b723..538c080e36 100644 --- a/tests/out/spv/operators.spvasm +++ b/tests/out/spv/operators.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/padding.spvasm b/tests/out/spv/padding.spvasm index e0b4251ae4..aae9f2cb74 100644 --- a/tests/out/spv/padding.spvasm +++ b/tests/out/spv/padding.spvasm @@ -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 diff --git a/tests/out/spv/pointers.spvasm b/tests/out/spv/pointers.spvasm index 2de4a49711..ae42aed2e0 100644 --- a/tests/out/spv/pointers.spvasm +++ b/tests/out/spv/pointers.spvasm @@ -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 diff --git a/tests/out/spv/policy-mix.spvasm b/tests/out/spv/policy-mix.spvasm index a23714d9de..a10ff1121f 100644 --- a/tests/out/spv/policy-mix.spvasm +++ b/tests/out/spv/policy-mix.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/quad.spvasm b/tests/out/spv/quad.spvasm index 3de529f6b5..b77ed65e07 100644 --- a/tests/out/spv/quad.spvasm +++ b/tests/out/spv/quad.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/ray-query.spvasm b/tests/out/spv/ray-query.spvasm index 2445b31697..d96dbb315b 100644 --- a/tests/out/spv/ray-query.spvasm +++ b/tests/out/spv/ray-query.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/shadow.spvasm b/tests/out/spv/shadow.spvasm index d0e3309c23..55bfa4fec0 100644 --- a/tests/out/spv/shadow.spvasm +++ b/tests/out/spv/shadow.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/skybox.spvasm b/tests/out/spv/skybox.spvasm index dda9382c64..4d541321a9 100644 --- a/tests/out/spv/skybox.spvasm +++ b/tests/out/spv/skybox.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/standard.spvasm b/tests/out/spv/standard.spvasm index 07bb2a7908..50026e6dcd 100644 --- a/tests/out/spv/standard.spvasm +++ b/tests/out/spv/standard.spvasm @@ -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 \ No newline at end of file diff --git a/tests/out/spv/texture-arg.spvasm b/tests/out/spv/texture-arg.spvasm index 485b2d7d9a..88832eb193 100644 --- a/tests/out/spv/texture-arg.spvasm +++ b/tests/out/spv/texture-arg.spvasm @@ -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 diff --git a/tests/out/wgsl/access.wgsl b/tests/out/wgsl/access.wgsl index c01c4247c5..ba268dca96 100644 --- a/tests/out/wgsl/access.wgsl +++ b/tests/out/wgsl/access.wgsl @@ -37,10 +37,9 @@ var nested_mat_cx2_: MatCx2InArray; var val: u32; fn test_matrix_within_struct_accesses() { - var idx: i32; - var t: Baz; + var idx: i32 = 1; + var t: Baz = Baz(mat3x2(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(vec2(1.0), vec2(2.0), vec2(3.0))); let _e51 = idx; idx = (_e51 + 1); t.m = mat3x2(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, 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, 2>()); let _e55 = idx_1; idx_1 = (_e55 + 1); t_1.am = array, 2>(); @@ -133,10 +129,9 @@ fn assign_array_through_ptr_fn(foo_2: ptr, 2>>) { @vertex fn foo_vert(@builtin(vertex_index) vi: u32) -> @builtin(position) vec4 { - var foo: f32; + var foo: f32 = 0.0; var c2_: array; - 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 { @compute @workgroup_size(1, 1, 1) fn assign_through_ptr() { - var arr: array, 2>; + var arr: array, 2> = array, 2>(vec4(6.0), vec4(7.0)); - arr = array, 2>(vec4(6.0), vec4(7.0)); assign_through_ptr_fn((&val)); assign_array_through_ptr_fn((&arr)); return; diff --git a/tests/out/wgsl/atomicCompareExchange.wgsl b/tests/out/wgsl/atomicCompareExchange.wgsl index b659bed2b5..f68017028f 100644 --- a/tests/out/wgsl/atomicCompareExchange.wgsl +++ b/tests/out/wgsl/atomicCompareExchange.wgsl @@ -7,11 +7,10 @@ var arr_u32_: array, 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) { diff --git a/tests/out/wgsl/binding-arrays.wgsl b/tests/out/wgsl/binding-arrays.wgsl index e9513c725d..c7a01fc5c3 100644 --- a/tests/out/wgsl/binding-arrays.wgsl +++ b/tests/out/wgsl/binding-arrays.wgsl @@ -27,17 +27,13 @@ var uni: UniformIndex; @fragment fn main(fragment_in: FragmentIn) -> @location(0) vec4 { - var u1_: u32; - var u2_: vec2; - var v1_: f32; - var v4_: vec4; + var u1_: u32 = 0u; + var u2_: vec2 = vec2(0u); + var v1_: f32 = 0.0; + var v4_: vec4 = 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]); diff --git a/tests/out/wgsl/binding-buffer-arrays.wgsl b/tests/out/wgsl/binding-buffer-arrays.wgsl index d28237d758..317a386239 100644 --- a/tests/out/wgsl/binding-buffer-arrays.wgsl +++ b/tests/out/wgsl/binding-buffer-arrays.wgsl @@ -17,11 +17,10 @@ var 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); diff --git a/tests/out/wgsl/bitcast.wgsl b/tests/out/wgsl/bitcast.wgsl index a8699e0a9f..a426c26ca0 100644 --- a/tests/out/wgsl/bitcast.wgsl +++ b/tests/out/wgsl/bitcast.wgsl @@ -1,24 +1,15 @@ @compute @workgroup_size(1, 1, 1) fn main() { - var i2_: vec2; - var i3_: vec3; - var i4_: vec4; - var u2_: vec2; - var u3_: vec3; - var u4_: vec4; - var f2_: vec2; - var f3_: vec3; - var f4_: vec4; + var i2_: vec2 = vec2(0); + var i3_: vec3 = vec3(0); + var i4_: vec4 = vec4(0); + var u2_: vec2 = vec2(0u); + var u3_: vec3 = vec3(0u); + var u4_: vec4 = vec4(0u); + var f2_: vec2 = vec2(0.0); + var f3_: vec3 = vec3(0.0); + var f4_: vec4 = 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>(_e27); let _e29 = i3_; diff --git a/tests/out/wgsl/bits.wgsl b/tests/out/wgsl/bits.wgsl index 4458a0740b..fb4f396a52 100644 --- a/tests/out/wgsl/bits.wgsl +++ b/tests/out/wgsl/bits.wgsl @@ -1,26 +1,16 @@ @compute @workgroup_size(1, 1, 1) fn main() { - var i: i32; - var i2_: vec2; - var i3_: vec3; - var i4_: vec4; - var u: u32; - var u2_: vec2; - var u3_: vec3; - var u4_: vec4; - var f2_: vec2; - var f4_: vec4; + var i: i32 = 0; + var i2_: vec2 = vec2(0); + var i3_: vec3 = vec3(0); + var i4_: vec4 = vec4(0); + var u: u32 = 0u; + var u2_: vec2 = vec2(0u); + var u3_: vec3 = vec3(0u); + var u4_: vec4 = vec4(0u); + var f2_: vec2 = vec2(0.0); + var f4_: vec4 = 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_; diff --git a/tests/out/wgsl/boids.wgsl b/tests/out/wgsl/boids.wgsl index af5d5247d8..b87d3ed91d 100644 --- a/tests/out/wgsl/boids.wgsl +++ b/tests/out/wgsl/boids.wgsl @@ -30,14 +30,14 @@ var particlesDst: Particles; fn main(@builtin(global_invocation_id) global_invocation_id: vec3) { var vPos: vec2; var vVel: vec2; - var cMass: vec2; - var cVel: vec2; - var colVel: vec2; - var cMassCount: i32; - var cVelCount: i32; + var cMass: vec2 = vec2(0.0, 0.0); + var cVel: vec2 = vec2(0.0, 0.0); + var colVel: vec2 = vec2(0.0, 0.0); + var cMassCount: i32 = 0; + var cVelCount: i32 = 0; var pos: vec2; var vel: vec2; - var i: u32; + var i: u32 = 0u; let index = global_invocation_id.x; if (index >= NUM_PARTICLES) { @@ -47,12 +47,6 @@ fn main(@builtin(global_invocation_id) global_invocation_id: vec3) { vPos = _e8; let _e14 = particlesSrc.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; loop { let _e36 = i; if (_e36 >= NUM_PARTICLES) { diff --git a/tests/out/wgsl/collatz.wgsl b/tests/out/wgsl/collatz.wgsl index a25f795360..477317594f 100644 --- a/tests/out/wgsl/collatz.wgsl +++ b/tests/out/wgsl/collatz.wgsl @@ -7,10 +7,9 @@ var v_indices: PrimeIndices; fn collatz_iterations(n_base: u32) -> u32 { var n: u32; - var i: u32; + var i: u32 = 0u; n = n_base; - i = 0u; loop { let _e4 = n; if (_e4 > 1u) { diff --git a/tests/out/wgsl/dualsource.wgsl b/tests/out/wgsl/dualsource.wgsl index d7cc4cbfdc..8d03f244a9 100644 --- a/tests/out/wgsl/dualsource.wgsl +++ b/tests/out/wgsl/dualsource.wgsl @@ -5,11 +5,9 @@ struct FragmentOutput { @fragment fn main(@builtin(position) position: vec4) -> FragmentOutput { - var color: vec4; - var mask: vec4; + var color: vec4 = vec4(0.4, 0.3, 0.2, 0.1); + var mask: vec4 = vec4(0.9, 0.8, 0.7, 0.6); - color = vec4(0.4, 0.3, 0.2, 0.1); - mask = vec4(0.9, 0.8, 0.7, 0.6); let _e13 = color; let _e14 = mask; return FragmentOutput(_e13, _e14); diff --git a/tests/out/wgsl/expressions.frag.wgsl b/tests/out/wgsl/expressions.frag.wgsl index d947a0df71..1a1a6fd3b3 100644 --- a/tests/out/wgsl/expressions.frag.wgsl +++ b/tests/out/wgsl/expressions.frag.wgsl @@ -407,8 +407,8 @@ fn indexConstantNonConstantIndex(i: i32) { i_1 = i; let _e6 = i_1; - let _e10 = local_5.array_[_e6]; - a_26 = _e10; + let _e11 = local_5.array_[_e6]; + a_26 = _e11; return; } diff --git a/tests/out/wgsl/globals.wgsl b/tests/out/wgsl/globals.wgsl index af72c0cb81..562533156e 100644 --- a/tests/out/wgsl/globals.wgsl +++ b/tests/out/wgsl/globals.wgsl @@ -27,10 +27,9 @@ fn test_msl_packed_vec3_as_arg(arg: vec3) { } fn test_msl_packed_vec3_() { - var idx: i32; + var idx: i32 = 1; alignment.v3_ = vec3(1.0); - idx = 1; alignment.v3_.x = 1.0; alignment.v3_.x = 2.0; let _e16 = idx; @@ -47,8 +46,8 @@ fn test_msl_packed_vec3_() { @compute @workgroup_size(1, 1, 1) fn main() { - var Foo: f32; - var at: bool; + var Foo: f32 = 1.0; + var at: bool = true; test_msl_packed_vec3_(); let _e5 = global_nested_arrays_of_matrices_4x2_[0][0]; @@ -68,7 +67,5 @@ fn main() { alignment.v1_ = 4.0; wg[1] = f32(arrayLength((&dummy))); atomicStore((&at_1), 2u); - Foo = 1.0; - at = true; return; } diff --git a/tests/out/wgsl/interface.wgsl b/tests/out/wgsl/interface.wgsl index 8654c13d95..96713aae95 100644 --- a/tests/out/wgsl/interface.wgsl +++ b/tests/out/wgsl/interface.wgsl @@ -40,9 +40,8 @@ fn compute(@builtin(global_invocation_id) global_id: vec3, @builtin(local_i @vertex fn vertex_two_structs(in1_: Input1_, in2_: Input2_) -> @builtin(position) @invariant vec4 { - var index: u32; + var index: u32 = 2u; - index = 2u; let _e8: u32 = index; return vec4(f32(in1_.index), f32(in2_.index), f32(_e8), 0.0); } diff --git a/tests/out/wgsl/lexical-scopes.wgsl b/tests/out/wgsl/lexical-scopes.wgsl index 22e59030ce..f3756b61bf 100644 --- a/tests/out/wgsl/lexical-scopes.wgsl +++ b/tests/out/wgsl/lexical-scopes.wgsl @@ -21,9 +21,8 @@ fn loopLexicalScope(a_2: bool) { } fn forLexicalScope(a_3: f32) { - var a_4: i32; + var a_4: i32 = 0; - a_4 = 0; loop { let _e3 = a_4; if (_e3 < 1) { diff --git a/tests/out/wgsl/operators.wgsl b/tests/out/wgsl/operators.wgsl index caedce204b..9c07526d39 100644 --- a/tests/out/wgsl/operators.wgsl +++ b/tests/out/wgsl/operators.wgsl @@ -22,9 +22,8 @@ fn splat() -> vec4 { } fn splat_assignment() -> vec2 { - var a: vec2; + var a: vec2 = vec2(2.0); - a = vec2(2.0); let _e4 = a; a = (_e4 + vec2(1.0)); let _e8 = a; @@ -144,10 +143,9 @@ fn comparison() { } fn assignment() { - var a_1: i32; - var vec0_: vec3; + var a_1: i32 = 1; + var vec0_: vec3 = vec3(); - a_1 = 1; let _e3 = a_1; a_1 = (_e3 + 1); let _e6 = a_1; @@ -174,7 +172,6 @@ fn assignment() { a_1 = (_e33 + 1); let _e36 = a_1; a_1 = (_e36 - 1); - vec0_ = vec3(); let _e42 = vec0_.y; vec0_.y = (_e42 + 1); let _e46 = vec0_.y; diff --git a/tests/out/wgsl/shadow.wgsl b/tests/out/wgsl/shadow.wgsl index 8000e785ff..b768fab2f1 100644 --- a/tests/out/wgsl/shadow.wgsl +++ b/tests/out/wgsl/shadow.wgsl @@ -64,12 +64,10 @@ fn vs_main(@location(0) @interpolate(flat) position: vec4, @location(1) @in @fragment fn fs_main(in: VertexOutput) -> @location(0) vec4 { - var color: vec3; - var i: u32; + var color: vec3 = c_ambient; + var i: u32 = 0u; let normal_1 = normalize(in.world_normal); - color = c_ambient; - i = 0u; loop { let _e7 = i; let _e11 = u_globals.num_lights.x; @@ -99,12 +97,10 @@ fn fs_main(in: VertexOutput) -> @location(0) vec4 { @fragment fn fs_main_without_storage(in_1: VertexOutput) -> @location(0) vec4 { - var color_1: vec3; - var i_1: u32; + var color_1: vec3 = c_ambient; + var i_1: u32 = 0u; let normal_2 = normalize(in_1.world_normal); - color_1 = c_ambient; - i_1 = 0u; loop { let _e7 = i_1; let _e11 = u_globals.num_lights.x;