Skip to content

frontend: crashΒ #654

@AndreasKrall

Description

@AndreasKrall

The following spec:

  constant VL        = 128              // vector length, number of bits in a vector register

  enumeration ElSize =                  // element size encoding, do not reorder
    { SizeB                             // byte   size
    , SizeH                             // half   size
    , SizeS                             // single size
    , SizeD                             // double size
    , SizeW = 2                         // word   size
    }

  format SVEIncrementFormat: Bits<32> =    // SVE increment format
    { op       [31..24,21..20] : Bits<10>  // opcode
    , size     [23..22]        : Bits< 2>  // elements size (ElSize)
    , imm4     [19..16]        : Bits< 4>  // unsigned multiplier
    , opc      [15..10]        : Bits< 6>  // opcode second part
    , pattern  [9..5]          : Bits< 5>  // pattern
    , dn       [4..0]          : Bits< 5>  // source and destination register
    , imm   = imm4 as Bits<64> + 1
    , count = (VL >> (3+size)) as Bits<64>
    }

  model SVEIncrementBase (id: Id, mnemo: Str, size: Id): IsaDefs = {
    instruction $id: SVEIncrementFormat =
      X(dn) := X(dn) + count * imm
    encoding $id = { op = 0b0000'0100'1, opc = 0b111000, size = ElSize::$size }
    assembly $id = ( $mnemo, ' ', register(dn), ', mul #', udec(count) )
    }

  model SVEIncrementInstr (): IsaDefs = {
    $SVEIncrementBase (INCB; "incb"; SizeB)
    $SVEIncrementBase (INCH; "inch"; SizeH)
    $SVEIncrementBase (INCW; "incw"; SizeW)
    $SVEIncrementBase (INCD; "incd"; SizeD)
    }

gives the following crash:

                             ___ ___    _   ___ _  _
                            / __| _ \  /_\ / __| || |
                           | (__|   / / _ \\__ \ __ |
                            \___|_|_\/_/ \_\___/_||_|

                       πŸ”₯ The OpenVADL compiler crashed πŸ”₯

This shouldn't have happened, please open an issue with the stacktrace below at:
https://github.com/OpenVADL/open-vadl/issues/new


vadl.ast.EvaluationError: Cannot evaluate identifier with origin of vadl.ast.RangeFormatField
	at vadl.ast.ConstantEvaluator.visitIdentifiable(ConstantEvaluator.java:112)
	at vadl.ast.ConstantEvaluator.visit(ConstantEvaluator.java:158)
	at vadl.ast.ConstantEvaluator.visit(ConstantEvaluator.java:47)
	at vadl.ast.Identifier.accept(Expr.java:219)
	at vadl.ast.ConstantEvaluator.eval(ConstantEvaluator.java:70)
	at vadl.ast.ConstantEvaluator.visit(ConstantEvaluator.java:201)
	at vadl.ast.ConstantEvaluator.visit(ConstantEvaluator.java:47)
	at vadl.ast.BinaryExpr.accept(Expr.java:454)
	at vadl.ast.ConstantEvaluator.visit(ConstantEvaluator.java:404)
	at vadl.ast.ConstantEvaluator.visit(ConstantEvaluator.java:47)
	at vadl.ast.CastExpr.accept(Expr.java:2217)
	at vadl.ast.ConstantEvaluator.eval(ConstantEvaluator.java:70)
	at vadl.ast.ConstantEvaluator.visit(ConstantEvaluator.java:201)
	at vadl.ast.ConstantEvaluator.visit(ConstantEvaluator.java:47)
	at vadl.ast.BinaryExpr.accept(Expr.java:454)
	at vadl.ast.ConstantEvaluator.eval(ConstantEvaluator.java:70)
	at vadl.ast.TypeChecker.visit(TypeChecker.java:2596)
	at vadl.ast.TypeChecker.visit(TypeChecker.java:74)
	at vadl.ast.BinaryExpr.accept(Expr.java:454)
	at vadl.ast.TypeChecker.check(TypeChecker.java:161)
	at vadl.ast.TypeChecker.visit(TypeChecker.java:3669)
	at vadl.ast.TypeChecker.visit(TypeChecker.java:74)
	at vadl.ast.CastExpr.accept(Expr.java:2217)
	at vadl.ast.TypeChecker.check(TypeChecker.java:161)
	at vadl.ast.TypeChecker.lambda$visit$4(TypeChecker.java:764)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:186)
	at [email protected]/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:214)
	at [email protected]/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)
	at [email protected]/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)
	at [email protected]/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
	at [email protected]/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:153)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:176)
	at [email protected]/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
	at [email protected]/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:632)
	at vadl.ast.TypeChecker.visit(TypeChecker.java:764)
	at vadl.ast.TypeChecker.visit(TypeChecker.java:74)
	at vadl.ast.FormatDefinition.accept(Definition.java:857)
	at vadl.ast.TypeChecker.check(TypeChecker.java:261)
	at [email protected]/java.util.ArrayList.forEach(ArrayList.java:1604)
	at vadl.ast.TypeChecker.verify(TypeChecker.java:284)
	at vadl.cli.BaseCommand.parseToVIAM(BaseCommand.java:255)
	at vadl.cli.BaseCommand.call(BaseCommand.java:329)
	at vadl.cli.BaseCommand.call(BaseCommand.java:66)
	at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
	at picocli.CommandLine.access$1500(CommandLine.java:148)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
	at picocli.CommandLine.execute(CommandLine.java:2174)
	at vadl.cli.Main.main(Main.java:44)
	at [email protected]/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingfrontendThis is frontend related

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions