summaryrefslogtreecommitdiff
path: root/isa
diff options
context:
space:
mode:
Diffstat (limited to 'isa')
-rw-r--r--isa/isa.iml5
-rw-r--r--isa/src/test-support/isa-eval.iml4
-rw-r--r--isa/src/test-support/java/com/seaofnodes/isa/eval/EvalRisc5.java2
-rw-r--r--isa/src/test/java/com/seaofnodes/isa/RiscTest.java10
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