Project

General

Profile

Actions

Bug #5690

closed

Support of L_SHIFT and L_ROTATE for 64-bit operands

Added by Mikhail Chupilko over 9 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Andrei Tatarnikov
Category:
-
Target version:
Start date:
03/05/2015
Due date:
% Done:

100%

Estimated time:
Detected in build:
2.1.5-beta-150305
Platform:
Published in build:
150324

Description

This description of operation results in illegal argument exception.

      operand2 = rm<63> | (rm<62..0> << imm6); /*LSL*/

or
      operand2 = rm<63> | (rm<62..0> <<< imm6); /*LSR*/

Result of test generation:

java.lang.IllegalArgumentException: The L_ROTATE operation cannot be performed for Type.INT(63) and Type.INT(63) operands.
    at ru.ispras.microtesk.model.api.data.DataEngine.checkOperationSupported(Unknown Source)
    at ru.ispras.microtesk.model.api.data.DataEngine.execute(Unknown Source)
    at ru.ispras.microtesk.model.armv8.op.adds.action(Unknown Source)
    at ru.ispras.microtesk.model.api.instruction.InstructionCall.execute(Unknown Source)
    at ru.ispras.microtesk.test.template.ConcreteCall.execute(Unknown Source)
    at ru.ispras.microtesk.test.Executor.executeCall(Unknown Source)
    at ru.ispras.microtesk.test.Executor.executeSequence(Unknown Source)
    at ru.ispras.microtesk.test.Executor.executeSequence(Unknown Source)
    at ru.ispras.microtesk.test.TestEngine$TemplateProcessor.processSequences(Unknown Source)
    at ru.ispras.microtesk.test.TestEngine$TemplateProcessor.processMainSection(Unknown Source)
    at ru.ispras.microtesk.test.TestEngine$TemplateProcessor.process(Unknown Source)
    at ru.ispras.microtesk.test.TestEngine$TemplateProcessor.access$100(Unknown Source)
    at ru.ispras.microtesk.test.TestEngine.process(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:455)
    at org.jruby.javasupport.JavaMethod.invokeDirect(JavaMethod.java:316)
    at org.jruby.java.invokers.InstanceMethodInvoker.call(InstanceMethodInvoker.java:61)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
    at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:188)
    at java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at org.jruby.runtime.invokedynamic.InvocationLinker.invocationFallback(InvocationLinker.java:149)
    at C_3a_.work.microtesk_minus_2_dot_1_dot_5_minus_beta_minus_150305.lib.ruby.microtesk.chained_2_rescue_1$RUBY$SYNTHETICmain(C:\work\microtesk-2.1.5-beta-150305/lib/ruby/microtesk.rb:48)
    at C_3a_.work.microtesk_minus_2_dot_1_dot_5_minus_beta_minus_150305.lib.ruby.microtesk.block_0$RUBY$main(C:\work\microtesk-2.1.5-beta-150305/lib/ruby/microtesk.rb:44)
    at C_3a_$work$microtesk_minus_2_dot_1_dot_5_minus_beta_minus_150305$lib$ruby$microtesk$block_0$RUBY$main.call(C_3a_$work$microtesk_minus_2_dot_1_dot_5_minus_beta_minus_150305$lib$ruby$microtesk$block_0$RUBY$main)
    at org.jruby.runtime.CompiledBlock19.yield(CompiledBlock19.java:139)
    at org.jruby.runtime.Block.yield(Block.java:130)
    at org.jruby.RubyHash$13.visit(RubyHash.java:1270)
    at org.jruby.RubyHash.visitAll(RubyHash.java:627)
    at org.jruby.RubyHash.iteratorVisitAll(RubyHash.java:1221)
    at org.jruby.RubyHash.each_pairCommon(RubyHash.java:1266)
    at org.jruby.RubyHash.each19(RubyHash.java:1257)
    at java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at org.jruby.runtime.invokedynamic.InvocationLinker.invocationFallback(InvocationLinker.java:224)
    at C_3a_.work.microtesk_minus_2_dot_1_dot_5_minus_beta_minus_150305.lib.ruby.microtesk.method__1$RUBY$main(C:\work\microtesk-2.1.5-beta-150305/lib/ruby/microtesk.rb:43)
    at java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
    at org.jruby.runtime.invokedynamic.InvocationLinker.invocationFallback(InvocationLinker.java:132)
    at C_3a_.work.microtesk_minus_2_dot_1_dot_5_minus_beta_minus_150305.lib.ruby.microtesk.__file__(C:\work\microtesk-2.1.5-beta-150305/lib/ruby/microtesk.rb:111)
    at C_3a_.work.microtesk_minus_2_dot_1_dot_5_minus_beta_minus_150305.lib.ruby.microtesk.load(C:\work\microtesk-2.1.5-beta-150305/lib/ruby/microtesk.rb)
    at org.jruby.Ruby.runScript(Ruby.java:815)
    at org.jruby.Ruby.runScript(Ruby.java:808)
    at org.jruby.Ruby.runNormally(Ruby.java:679)
    at org.jruby.Ruby.runFromMain(Ruby.java:528)
    at org.jruby.Main.doRunFromMain(Main.java:390)
    at org.jruby.Main.internalRun(Main.java:279)
    at org.jruby.Main.run(Main.java:221)
    at org.jruby.Main.main(Main.java:201)
null:-1:in `checkOperationSupported': java.lang.IllegalArgumentException: The L_ROTATE operation cannot be performed for Type.INT(63) and Type.INT(63) operands.
    from null:-1:in `execute'
    from null:-1:in `action'
    from null:-1:in `execute'
    from null:-1:in `execute'
    from null:-1:in `executeCall'
    from null:-1:in `executeSequence'
    from null:-1:in `executeSequence'
    from null:-1:in `processSequences'
    from null:-1:in `processMainSection'
    from null:-1:in `process'
    from null:-1:in `access$100'
    from null:-1:in `process'
    from null:-2:in `invoke0'
    from null:-1:in `invoke'
    from null:-1:in `invoke'
    from null:-1:in `invoke'
    from JavaMethod.java:455:in `invokeDirectWithExceptionHandling'
    from JavaMethod.java:316:in `invokeDirect'
    from InstanceMethodInvoker.java:61:in `call'
    from CachingCallSite.java:326:in `cacheAndCall'
    from CachingCallSite.java:170:in `call'
    from CallOneArgNode.java:57:in `interpret'
    from NewlineNode.java:105:in `interpret'
    from BlockNode.java:71:in `interpret'
    from ASTInterpreter.java:75:in `INTERPRET_METHOD'
    from InterpretedMethod.java:182:in `call'
    from DefaultMethod.java:188:in `call'
    from null:-1:in `invokeWithArguments'
    from InvocationLinker.java:149:in `invocationFallback'
    from C:\work\microtesk-2.1.5-beta-150305/lib/ruby/microtesk.rb:48:in `chained_2_rescue_1$RUBY$SYNTHETICmain'
    from C:\work\microtesk-2.1.5-beta-150305/lib/ruby/microtesk.rb:44:in `block_0$RUBY$main'
    from C_3a_$work$microtesk_minus_2_dot_1_dot_5_minus_beta_minus_150305$lib$ruby$microtesk$block_0$RUBY$main:-1:in `call'
    from CompiledBlock19.java:139:in `yield'
    from Block.java:130:in `yield'
    from RubyHash.java:1270:in `visit'
    from RubyHash.java:627:in `visitAll'
    from RubyHash.java:1221:in `iteratorVisitAll'
    from RubyHash.java:1266:in `each_pairCommon'
    from RubyHash.java:1257:in `each19'
    from null:-1:in `invokeWithArguments'
    from null:-1:in `invokeWithArguments'
    from null:-1:in `invokeWithArguments'
    from InvocationLinker.java:224:in `invocationFallback'
    from C:\work\microtesk-2.1.5-beta-150305/lib/ruby/microtesk.rb:43:in `method__1$RUBY$main'
    from null:-1:in `invokeWithArguments'
    from null:-1:in `invokeWithArguments'
    from null:-1:in `invokeWithArguments'
    from null:-1:in `invokeWithArguments'
    from InvocationLinker.java:132:in `invocationFallback'
    from C:\work\microtesk-2.1.5-beta-150305/lib/ruby/microtesk.rb:111:in `__file__'
    from C:\work\microtesk-2.1.5-beta-150305/lib/ruby/microtesk.rb:-1:in `load'
    from Ruby.java:815:in `runScript'
    from Ruby.java:808:in `runScript'
    from Ruby.java:679:in `runNormally'
    from Ruby.java:528:in `runFromMain'
    from Main.java:390:in `doRunFromMain'
    from Main.java:279:in `internalRun'
    from Main.java:221:in `run'
    from Main.java:201:in `main'

Actions

Also available in: Atom PDF