diff options
Diffstat (limited to 'isa')
| -rw-r--r-- | isa/isa.iml | 5 | ||||
| -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 |
4 files changed, 18 insertions, 3 deletions
diff --git a/isa/isa.iml b/isa/isa.iml index 2319435e..c6be1236 100644 --- a/isa/isa.iml +++ b/isa/isa.iml @@ -7,12 +7,13 @@ <content url="file://$MODULE_DIR$"> <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> - <excludeFolder url="file://$MODULE_DIR$/src/test-support" /> <excludeFolder url="file://$MODULE_DIR$/build" /> <excludeFolder url="file://$MODULE_DIR$/target" /> + <excludeFolder url="file://$MODULE_DIR$/lib" /> + <excludeFolder url="file://$MODULE_DIR$/src/test-support" /> </content> <orderEntry type="inheritedJdk" /> - <orderEntry type="module" module-name="isa-eval" scope="TEST" /> <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="module" module-name="isa-eval" scope="TEST" /> </component> </module> 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 |
