public static void DeclareLocals(CodeGenContext context, StructuredFunction function) { foreach (AstOperand local in function.Locals) { var localPointerType = context.TypePointer(StorageClass.Function, context.GetType(local.VarType.Convert())); var spvLocal = context.Variable(localPointerType, StorageClass.Function); context.AddLocalVariable(spvLocal); context.DeclareLocal(local, spvLocal); } var ivector2Type = context.TypeVector(context.TypeS32(), 2); var coordTempPointerType = context.TypePointer(StorageClass.Function, ivector2Type); var coordTemp = context.Variable(coordTempPointerType, StorageClass.Function); context.AddLocalVariable(coordTemp); context.CoordTemp = coordTemp; }
public static void DeclareLocalForArgs(CodeGenContext context, List <StructuredFunction> functions) { for (int funcIndex = 0; funcIndex < functions.Count; funcIndex++) { StructuredFunction function = functions[funcIndex]; SpvInstruction[] locals = new SpvInstruction[function.InArguments.Length]; for (int i = 0; i < function.InArguments.Length; i++) { var type = function.GetArgumentType(i).Convert(); var localPointerType = context.TypePointer(StorageClass.Function, context.GetType(type)); var spvLocal = context.Variable(localPointerType, StorageClass.Function); context.AddLocalVariable(spvLocal); locals[i] = spvLocal; } context.DeclareLocalForArgs(funcIndex, locals); } }