From d510f522cda3134385042cbcc1bc279b2ae41bd4 Mon Sep 17 00:00:00 2001 From: nub31 Date: Sat, 7 Jun 2025 21:46:19 +0200 Subject: [PATCH] Extend function params less than a word size --- .../Nub.Lang/Frontend/Generation/Generator.cs | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/src/lang/Nub.Lang/Frontend/Generation/Generator.cs b/src/lang/Nub.Lang/Frontend/Generation/Generator.cs index 3c34824..c32136b 100644 --- a/src/lang/Nub.Lang/Frontend/Generation/Generator.cs +++ b/src/lang/Nub.Lang/Frontend/Generation/Generator.cs @@ -299,25 +299,30 @@ public class Generator { var parameterName = parameter.Name; - // switch (QBEType(parameter.Type)) - // { - // case "sb": - // parameterName = GenVarName(); - // _builder.AppendLine($" {parameterName} =w extsb %{parameter.Name}"); - // break; - // case "ub": - // parameterName = GenVarName(); - // _builder.AppendLine($" {parameterName} =w extub %{parameter.Name}"); - // break; - // case "sh": - // parameterName = GenVarName(); - // _builder.AppendLine($" {parameterName} =w extsh %{parameter.Name}"); - // break; - // case "uh": - // parameterName = GenVarName(); - // _builder.AppendLine($" {parameterName} =w extuh %{parameter.Name}"); - // break; - // } + if (parameter.Type is NubPrimitiveType primitiveType) + { + switch (primitiveType.Kind) + { + case PrimitiveTypeKind.I16: + parameterName = GenVarName(); + _builder.AppendLine($" {parameterName} =w extsh %{parameter.Name}"); + break; + case PrimitiveTypeKind.I8: + parameterName = GenVarName(); + _builder.AppendLine($" {parameterName} =w extsb %{parameter.Name}"); + break; + case PrimitiveTypeKind.U16: + parameterName = GenVarName(); + _builder.AppendLine($" {parameterName} =w extuh %{parameter.Name}"); + break; + case PrimitiveTypeKind.U8: + parameterName = GenVarName(); + _builder.AppendLine($" {parameterName} =w extub %{parameter.Name}"); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } if (IsLargeType(parameter.Type)) {