diff options
Diffstat (limited to 'isa/src')
| -rw-r--r-- | isa/src/test-support/isa-eval.iml | 4 | ||||
| -rw-r--r-- | isa/src/test-support/java/com/seaofnodes/isa/eval/EvalRisc5.java | 2 | ||||
| -rw-r--r-- | isa/src/test/java/com/seaofnodes/isa/RiscTest.java | 10 |
3 files changed, 15 insertions, 1 deletions
diff --git a/isa/src/test-support/isa-eval.iml b/isa/src/test-support/isa-eval.iml index 733c5919..e72a3543 100644 --- a/isa/src/test-support/isa-eval.iml +++ b/isa/src/test-support/isa-eval.iml @@ -2,9 +2,13 @@ <module type="JAVA_MODULE" version="4"> <component name="NewModuleRootManager" inherit-compiler-output="false"> <output url="file://$MODULE_DIR$/../../../build/idea/production/isa-eval" /> + <output-test url="file://$MODULE_DIR$/../../../build/idea/test/isa-eval" /> <exclude-output /> <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/java" isTestSource="false" /> + <excludeFolder url="file://$MODULE_DIR$/build" /> + <excludeFolder url="file://$MODULE_DIR$/target" /> + <excludeFolder url="file://$MODULE_DIR$/lib" /> </content> <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> diff --git a/isa/src/test-support/java/com/seaofnodes/isa/eval/EvalRisc5.java b/isa/src/test-support/java/com/seaofnodes/isa/eval/EvalRisc5.java index e6860ccd..6c3659ef 100644 --- a/isa/src/test-support/java/com/seaofnodes/isa/eval/EvalRisc5.java +++ b/isa/src/test-support/java/com/seaofnodes/isa/eval/EvalRisc5.java @@ -176,7 +176,7 @@ public class EvalRisc5 { case 3: rval = ld8 ( rsval ); break; case 4: rval = ld1z( rsval ); break; case 5: rval = ld2z( rsval ); break; - case 6: rval = ld4s( rsval ); break; + case 6: rval = ld4s( rsval ) & 0xFFFFFFFFL; break; default: trap = (2+1); } } diff --git a/isa/src/test/java/com/seaofnodes/isa/RiscTest.java b/isa/src/test/java/com/seaofnodes/isa/RiscTest.java index 5b354036..4f49cdd2 100644 --- a/isa/src/test/java/com/seaofnodes/isa/RiscTest.java +++ b/isa/src/test/java/com/seaofnodes/isa/RiscTest.java @@ -44,6 +44,16 @@ public class RiscTest { assert unsigned.step(1)==0; assert unsigned.regs[3]==(value==0 ? 1 : 0); } + for( int value : new int[]{0,1,Integer.MAX_VALUE,Integer.MIN_VALUE,-1} ) { + var loads = new EvalRisc5(new byte[1024],512); + loads.st4(4,0x00012183); // lw x3,0(x2) + loads.st4(8,0x00016203); // lwu x4,0(x2) + loads.st4(512,value); + loads._pc = 4; + assert loads.step(2)==0; + assert loads.regs[3]==value; + assert loads.regs[4]==(value & 0xFFFFFFFFL); + } var logical=new EvalArm64(new byte[1024],512); logical.st4(4,0xB27F0020); // orr x0,x1,#2 logical.st4(8,0x9A9F17E2); // cset x2,eq; false must not retain prior result |
