-
Notifications
You must be signed in to change notification settings - Fork 2
Closed
Labels
bugSomething isn't workingSomething isn't workingfrontendThis is frontend relatedThis is frontend related
Description
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 workingSomething isn't workingfrontendThis is frontend relatedThis is frontend related